Adapt Uno for MINLP reoptimization
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?)
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.
May I ask whether this is planed in near future (e.g. within a few months)? @cvanaret
I want to solve some easiy(-ish) MINLP problems on mobile (android and iOS) and prefer a lightweight (and ideally, flexible) solution to this. Currently Uno is already very lightweight, but it seems to be very difficult fo MINLP solvers to be lightweight. Minotaur seems to be a managable codebase and relatively few (hard) dependencies, so it seems to be my best bet.
I see there is already some Uno integration codes in Minotaur, but since this issue is still active, I assume it's not production ready yet. It's not very urgent because we can still let our mobiles to send problems to our servers, but being able to solve MINLP problems on edge is useful at times.
Also, may I have @ashutoshmahajan your suggestions on using Minotaur on edge (e.g. forseeable issues I need to solve, or even potential show-stoppers)? My ideal combinition is Minotaur + HiGHS + Uno, but since Minotaur doesn't have HiGHS integration yet, I'll probably go with Minotaur + CLP + CBC + Uno. (I'm not confident enough to write my own HiGHS integration, but if you think it's worth trying on my own, or it's officially planned, I'll be glad).
Hi @rujialiu, I won't have time to address this in 2025. Depending how the job hunt goes next year, I may be able to get some time to work on it in the next few months. I'll be in touch!
Thanks and Good luck 😄