lanl-ansi / Alpine.jl

A Julia/JuMP-based Global Optimization Solver for Non-convex Programs
https://lanl-ansi.github.io/Alpine.jl/latest/
Other
244 stars 39 forks source link

Fix cycling detected in tests #190

Closed odow closed 2 years ago

odow commented 2 years ago

I left quite a few TODOs in the tests: https://github.com/lanl-ansi/Alpine.jl/blob/ecf084c86d78fbbf3088630dc5e7366354d11a60/test/test_algorithm.jl#L153-L155 We should investigate and/or fix.

harshangrjn commented 2 years ago

@odow This is an issue with Pavito and not Alpine? If I run Pavito with Gurobi/CPLEX as underlying cont_solver instead of Ipopt, the mixed-integer cycling doesn't appear in Pavito.

odow commented 2 years ago

the issue is in Pavito. But the problem is that these tests are flakey, so they should probably be changed to not encounter Pavito's cycling.

harshangrjn commented 2 years ago

Agreed! Was going to update some of these tests in the PR.

harshangrjn commented 2 years ago

@odow From my observations, when an NLP exhibits multiple symmetric arg mins for the global minimum (like (-1,1), (1,1), (1,-1), (-1,-1)), Pavito seems to get into the MI cycling issue when Cbc and Ipopt are the underlying solvers. Of course, this doesn't happen with Gurobi as it's underlying solver. Although, I updated the unit tests in Alpine to make them a bit more meaningful and break this solution symmetry. Let me know if this needs more attention here.