Description
Hi, @mewilhel, thanks for your excellent work. I played with this notebook, as indicated in the title, and found some problems that need your help.
-
x._lower_solution = IntervalArithmetic.mid.(x_value)
inlower_problem!
Though there is no documentation for_lower_solution
, I guess it is the optimal solution to the lower bound problem. In the line above itx._lower_objective_value = F.lo
, the minimum objective value is set the lower bound of the natural interval extension. However, how do we know that this value is attained bymid.(x_value)
? Of course, from my limited knowledge of branch and bound (BB), the actual solution of the lower bound problem may not matter (but it may be used in branching though I am not sure how EAGO does) -
After optimization, the actual objective value differs from the reported one.
I changed the last cell to (added the last line)
fval = JuMP.objective_value(m)
xsol = JuMP.value.(x)
status_term = JuMP.termination_status(m)
status_prim = JuMP.primal_status(m)
println("EAGO terminated with a status of $status_term and a result code of $status_prim")
println("The optimal value is: $fval, the solution found is $xsol.")
println("Verify objective value: ", sin(xsol[1])xsol[2]^2-cos(xsol[3])/xsol[4])
The output is
EAGO terminated with a status of OPTIMAL and a result code of FEASIBLE_POINT
The optimal value is: -1.498986093897677, the solution found is [-1.56982421875, -0.999755859375, -0.00244140625, 2.002197265625].
Verify objective value: -1.4989611040367379
Note that JuMP.objective_value(m)
leads to -1.49898
but the one computed using the optimal solution xsol
is -1.49896
. What is the reason for this perceptible difference that cannot be ignored?
- About logging
In EAGO.EAGOParameters, there is a fieldoutput_iterations
which controls "Display summary of iteration to console every output_iterations (default = 10)". It seems the correct default value is actually 1000, and that's why no display in this notebook.
After settingopt_dict[:output_iterations] = 10
, I saw the display every 10 iterations. My question is how we can access this logging data instead of just printing it. For example, I want to plot the convergence curve of the lower and upper bounds during optimization after the optimization finishes.