[Coin-ipopt] Warm start in restoration

Andreas Waechter andreasw at watson.ibm.com
Sat Sep 23 17:04:14 EDT 2006


Hi Graham,

At the moment, the warm start only works for the regular iterations, 
i.e., when you pass that variables and multipliers back, Ipopt uses those 
to start the regular optimization.  However, when you make the algorithm 
start with the restoration phase (using start_with_resto), the multipliers 
for the restoration phase (which is a problem formulation that is 
different and larger than the normal NLP) are reinitialized like before 
every restoration phase start.

If you would really want to do a warm start for the restoration phase, you 
could try to adapt the IpRestoMinC_1Nrm.cpp and IpRestoIpoptNLP.cpp 
files... somehow store the information away that IpRestoMinC_1Nrm.cpp 
receives from the internal restoration phase algorithm after return (for 
all restoration phase variables and multipliers which are more than for 
the usual NLP), and change IpRestoIpoptNLP.cpp so that it makes use of 
that information later in the InitializeStructures call...)

Maybe that helps a bit...

Andreas

On Mon, 18 Sep 2006, Graham Sparrow wrote:

> Hi all,
>
> First of all, I have been experimenting with IPOPT for a while now and I 
> would like to say it is an excellent solver, thanks guys :)
>
> I have been looking at the warm start options and was wondering about 
> warm-starting in the restoration phase.
>
> The scenario is that, I can often get problems that are overly 
> constrained, making them infeasible. I have some code that sits around 
> the solver and tweaks the constraints according to some user-defined 
> priorities/rules and I then want to retry the optimization.
>
> What I was thinking is that I could tweak the constraints and then 
> re-run with the following options...
>
> app->Options()->SetStringValue( "start_with_resto", "yes" );
> app->Options()->SetStringValue( "expect_infeasible_problem", "yes" );
> app->Options()->SetStringValue( "warm_start_init_point", "yes" );
>
> ... have the TNLP::get_starting_point() function supply the original 
> termination point as the starting point, along with the restoration 
> phase multipliers that were originally returned. This would then quickly 
> check whether the problem is now feasible and allow further iterations 
> of constraint relaxation if not.
>
> I notice that there was a recent change that allows the restoration 
> phase multipliers to be made available if the solver terminates during 
> restoration. What I am not sure about is if there is a way of passing 
> them back in for a warm start (or if this would be a reasonable thing to 
> implement when the start_with_resto and warm_start_init_point options 
> were set).
>
> Any pointers on this would be gratefully appreciated.
>
> Thanks,
>
> Graham
> _________________________________________________________________
> Be one of the first to try Windows Live Mail.
> http://ideas.live.com/programpage.aspx?versionId=5d21c51a-b161-4314-9b0e-4911fb2b2e6d



More information about the Coin-ipopt mailing list