Skip to content

Warm start support #1

@francesco-romano

Description

@francesco-romano

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions