mobook / MO-book

Hands-On Optimization with Python
MIT License
153 stars 40 forks source link

About milk pooling model with IPOPT #54

Closed rlacjfjin closed 1 year ago

rlacjfjin commented 1 year ago

Hi, In pooling problem using IPOPT solver, it may be found a local optimum, and how can I avoid falling into local optimum? I think besides tuning some parameters of ipopt solver, it's also important how choose a starting point(solution), right? If so, can you give some advices about how to choose a "good" initial solution? In other aspect, I find it is also can use SLP(sequential linear programming) solve pooling problem(especially bilinear programming), such as aspen-pims which contains Distributive Recursion or SLP which call FICO-Xpress solver because of the specialize of the problem. How about compare IPOPT with solve problem directly and solve the problem using successively process(such as SLP)?

Thanks, Zhe.

jckantor commented 1 year ago

Hi Zhe ... That's right, the milk pooling problem was designed to have multiple local maxima. ipopt does not guarantee a global maximum, and can converge to a local instead of the global maxima. The choice of initial condition does make a difference, but other parameters matter, too. I've experimented a bit with this, but didn't show that in the notebook.

I know there are problem specific algorithms for pooling, SLP and distributive recursion is one of them. We did not try this ... we used a general purpose global optimizer, Couenne, to find the global minimum. This may be a good problem to investigate further ... how do specialized algorithms for pooling compare to state of the art global solvers like Octeract.

Hope this helps. Jeff

rlacjfjin commented 1 year ago

Thanks. And I have confused: I write the problem as milk_pooling.nl, but pyomo seems can't support read file, right? If I want to create a problem from reading a file(such as lp,mps,nl and so on format), how to do it ?

Zhe.

jckantor commented 1 year ago

Zhe ... keep in mind that Pyomo is a modeling language, not a solver. It can produce a .nl file, and communicate with solvers using the .nl file, but doesn't require user to do anything.

Jeff

rlacjfjin commented 1 year ago

Zhe ... keep in mind that Pyomo is a modeling language, not a solver. It can produce a .nl file, and communicate with solvers using the .nl file, but doesn't require user to do anything.

Jeff

Thank you for the reminder, indeed I was confused....