I am trying to debug the warm start support.
I attach a sample project where enabling the warm start does have some effect, passing from 8 to 1 iterations.
Important points learnt:
get_nlp_info get called at every call to optimise. So that function is NOT the right place where we should initialise buffers (e.g. the one containing multipliers)
- there are "different" levels of warm start:
- providing as guess the previous solution (for primal variables) already helps. In the example, it halves the number of iterations (from 8 to 4).
- enabling
warm_start_init_point makes IPOpt to ask not only for the primal variables but also for the dual variables during the get_starting_point call. Those variables can be retrieved during finalize_solution. Still, the initial guess can be modified because of how IP methods work
- reducing how much IPOpt modifies the initial solution greatly improve the optimization: setting the various
warm_start_bound_frac to 1e-6 finds the solution after 1 iteration.
- option
warm_start_entire_iterate seems to be mutually exclusive with warm_start_init_point, but I still have to understand this part.
I am trying now to "port" these discoveries to the current MPC code
hs071.zip
I am trying to debug the warm start support.
I attach a sample project where enabling the warm start does have some effect, passing from 8 to 1 iterations.
Important points learnt:
get_nlp_infoget called at every call to optimise. So that function is NOT the right place where we should initialise buffers (e.g. the one containing multipliers)warm_start_init_pointmakes IPOpt to ask not only for the primal variables but also for the dual variables during theget_starting_pointcall. Those variables can be retrieved duringfinalize_solution. Still, the initial guess can be modified because of how IP methods workwarm_start_bound_fracto1e-6finds the solution after 1 iteration.warm_start_entire_iterateseems to be mutually exclusive withwarm_start_init_point, but I still have to understand this part.I am trying now to "port" these discoveries to the current MPC code
hs071.zip