cvanaret / Uno

A next-gen Lagrange-Newton solver for nonconvex optimization. It unifies barrier and SQP methods in a modern and generic way, and implements different globalization flavors (line search/trust region and merit function/filter method/funnel method). Competitive against filterSQP, IPOPT, SNOPT, MINOS and CONOPT.
MIT License
292 stars 22 forks source link

Adapt Uno for MINLP reoptimization #107

Open cvanaret opened 2 days ago

cvanaret commented 2 days ago

A Minotaur/Uno interface is being developed and the root node was successfully solved. We now need a way to support reoptimization e.g. when the variable bounds change. I think it can be done via the WarmstartInformation object. We need to identify how the successive NLPs look like (only branching? Cutting planes?)

ashutoshmahajan commented 1 day ago

One can assume that only bounds on variables will change during the tree search for general MINLPs. This will cover almost all use cases, at least for Minotaur. A few points may be worth considering: (a) Bounds on several variables (not just one) may change between two consecutive NLP calls. (b) bounds may get tightened or relaxed or changed in some other way (c) some of the variables may get fixed in some calls because of bound changes (d) the optimal solution obtained from an NLP will always be outside the feasible region after bound changes in the next call (so one has to restart from a point that is not primal feasible).

If one has an MIQP (quadratic objective, linear constraints), then it is possible that additional cutting planes may be introduced, but we do not currently do it in Minotaur.

Hope this helps.