[Ipopt] Warm start
Andreas Waechter
andreasw at watson.ibm.com
Thu Apr 21 11:17:39 EDT 2011
Hi Tom,
I'm a little surprised you need to manually reorder the matrix given to
the linear solver... Usually, those codes try to find a suitable ordering
themselves, although this works differently well. Have you tried a
different linear solver? Also, I don't quite understand why you need to
change the ordering during the optimization - is the nonzero structure
changing between iterations?
In any case, there are different levels of warm-starting Ipopt. One is to
use the warm_start_init_point option and to supply values for primal and
dual variables. However, since you are probably working with the TNLP
interface, this does not restore exactly how things where in Ipopt
internally at the end of the previous run (e.g., after an eary stop after
10 iterations). The thing is that Ipopt internally works with an
"NLP" and there is some translation done between the TNLP and the NLP. To
really restore the iterate, you could try to use a hidden and unsupported
feature of Ipopt, using the warm_start_entire_iterate option. But this is
somewhat complicated, and you would have to dig through the code and see
how it works. We implemented this in the context of the MINLP solver
Bonmin, where it had been used at some point, and you could look at that
as an example, but I'm not sure if the code in Bonmin is currently woring.
If you wanted to try that approach, look at the files
Bonmin/src/Interfaces/BonTMINLP2TNLP.cpp
Bonmin/src/Interfaces/Ipopt/*pp
for a start, the code surrounding the get_warm_start_iterate method.
In addition, you can use the mu_init option to set the initial value of
the barrier parameter in your restart to what you had when you stopped
Ipopt the last time.
Hope this helps,
Andreas
On Tue, 19 Apr 2011, Tom Vacek wrote:
> Hello all,
>
> I have a problem that has some symmetries that can be exploited in order
> to reduce pivoting. The problem has a diagonal Hessian, so my goal is
> to reorder the variables in the problem so that the elements that need
> pivoting are at the end of the diagonal, where they will cause the least
> fill-in (using ma57).
>
> Optimally, the reordering would be done at each iteration. I hacked
> this out using warm start (reordering every 10 iterations). It works
> remarkably well given that most iterations are wasted rediscovering the
> barrier parameter from before the reordering. Clearly, I need a better
> way to restart the solver. Does anyone have any advice for me?
>
> Thanks,
>
> Tom
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>
>
More information about the Ipopt
mailing list