Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EAGO times out out trivial problem #141

Open
odow opened this issue Dec 4, 2024 · 1 comment
Open

EAGO times out out trivial problem #141

odow opened this issue Dec 4, 2024 · 1 comment

Comments

@odow
Copy link
Contributor

odow commented Dec 4, 2024

See this example:

julia> using JuMP, EAGO

julia> model = Model(EAGO.Optimizer)
A JuMP Model
├ solver: EAGO - Easy Advanced Global Optimization
├ objective_sense: FEASIBILITY_SENSE
├ num_variables: 0
├ num_constraints: 0
└ Names registered in the model: none

julia> @variable(model, x <= 2)
x

julia> @variable(model, t)
t

julia> @constraint(model, log(x) >= t)
log(x) - t  0

julia> @objective(model, Max, t)
t

julia> optimize!(model)
┌ Warning: At least one branching variable is unbounded. This will interfere with EAGO's global
│ optimization routine and may cause unexpected results. Bounds have been automatically
│ generated at +/- 1E10 for all unbounded variables, but tighter user-defined bounds are
│ highly recommended. To disable this warning and the automatic generation of bounds, use
│ the option `unbounded_check = false`.
└ @ EAGO ~/.julia/packages/EAGO/oWEmA/src/eago_optimizer/optimize/nonconvex/stack_management.jl:256

******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit https://github.com/coin-or/Ipopt
******************************************************************************

---------------------------------------------------------------------------------------------------------------------------------
|  Iteration #  |     Nodes     |  Lower Bound  |  Upper Bound  |      Gap      |     Ratio     |     Timer     |   Time Left   |
---------------------------------------------------------------------------------------------------------------------------------
|          1000 |            21 |    -1.000E+10 |           Inf |           Inf |           Inf |         10.98 |       3589.02 |
|          2000 |            21 |    -1.000E+10 |           Inf |           Inf |           Inf |         12.30 |       3587.70 |
|          3000 |            19 |    -1.000E+10 |           Inf |           Inf |           Inf |         13.57 |       3586.43 |
|          4000 |            21 |    -1.000E+10 |           Inf |           Inf |           Inf |         14.90 |       3585.10 |
|          5000 |            19 |    -1.000E+10 |           Inf |           Inf |           Inf |         16.21 |       3583.79 |
|          6000 |            21 |    -1.000E+10 |           Inf |           Inf |           Inf |         17.53 |       3582.47 |
|          7000 |            19 |    -1.000E+10 |           Inf |           Inf |           Inf |         18.81 |       3581.19 |
|          8000 |            21 |    -1.000E+10 |           Inf |           Inf |           Inf |         20.11 |       3579.89 |
|          9000 |            17 |    -1.000E+10 |           Inf |           Inf |           Inf |         21.41 |       3578.59 |
|         10000 |            19 |    -1.000E+10 |           Inf |           Inf |           Inf |         22.72 |       3577.28 |
|         11000 |            19 |    -1.000E+10 |           Inf |           Inf |           Inf |         24.03 |       3575.97 |
|         12000 |            19 |    -1.000E+10 |           Inf |           Inf |           Inf |         25.36 |       3574.64 |
|         13000 |            19 |    -1.000E+10 |           Inf |           Inf |           Inf |         26.67 |       3573.33 |
|         14000 |            17 |    -1.000E+10 |           Inf |           Inf |           Inf |         28.00 |       3572.00 |
|         15000 |            17 |    -1.000E+10 |           Inf |           Inf |           Inf |         29.28 |       3570.72 |

I expected it to solve quickly.

Found because I've been adding new tests to MOI. I'll fix the test in MOI to add finite bounds, but I thought this was an interesting test case.

@DimitriAlston
Copy link
Member

It looks like EAGO's checking the negative region and not correctly interpreting the MOI.INVALID_MODEL termination status code. We're in the process of redoing how EAGO handles constraint propagation so that it is able to detect issues like this and remove the part of the domain causing the numerical issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants