Closed ShuhuaGao closed 3 years ago
Thanks for reporting this issue! Also, thanks for the detailed description, I've got a pretty good idea of the underlying issue and the resolution should be quite easy.
A little background: We initially had a few issues due to rounding error resulting from the larger number of intermediate calculations used when computing relaxations than auxiliary variable approaches. This usually wasn't an issue but a number of users wanted to set fairly extreme tolerances. So we added a small tolerance to the upper bound (scaled an order of magnitude below the specified relative and absolute optimality tolerances to avoid spurious results). We never adjusted the algorithm to store the true value rather than this adjusted value. So EAGO should currently furnish the correct optimal point (but not the value corresponding to it). I'll push out a patch to EAGO to fix this in the next day or so.
The console printing controls currently should allow you to inspect the solution quality (set by keyword arguments):
verbosity::Int
- Print level (0
nothing, to 4
detailed info on each node). Unless you want node specific info (primal status, termination status, etc, stick to 1
).output_iterations::Int
- Print summary statistics at every output_interations
times (Iteration #, Nodes, Lower Bound, Upper Bound, Gap, Ratio, Time, Time Left)header_iterations::Int
- how often to print the header | Iteration # | Nodes | Lower Bound | Upper Bound | Gap | Ratio | Time | Time Left |
to consoleI'll also give some thought on how to report the lower bound in the final console output. That said, if the final solution is OPTIMAL
it will satisfy a either a relative or absolute tolerance that are set by the following keyword arguments:
absolute_tolerance
::Float64 (default = 1E-3) relative_tolerance
::Float64(default = 1E-3)
Hi, I am using EAGO to solve a nonlinear least squares problem. There are some issues that need your help.
After calling
optimize!(model)
, the output information isHowever, I don't know the LBD and cannot tell the quality of the final solution from the above info. By contrast, another optimizer Couenne tells us both bounds and the gap. In addition, when checking the final status, I have the following result:
It seems that the minimum objective value reported by JuMP is just the above UBD. Nonetheless, by substituting the optimal solution (i.e., the five parameters) into the original objective function, I get a different result
2.527822e-05
that is smaller than the UBD. If fact, the value2.527822e-05
is exactly what Couenne obtains with zero optimality gap between lower and upper bounds. Thus, even though EAGO managed to find the global optimal solution, the objective value reported was wrong.Are there any options that control the display? Besides, I can post my code and data if needed. Thank you.