[Ipopt] Line search rest in intermediate_callback
Andreas Waechter
andreasw at watson.ibm.com
Fri Nov 20 13:48:19 EST 2009
Hi Herve,
If I understand correctly, you want to change the actual optimization
problem on the fly during the intermediate_callback call, for example to
update some penalty parameter in your objective function?
Well, Ipopt was not really designed with the idea to solve problems that
are changing during the solution process, but I can envision circumstances
where this makes sense. You are right, you probably need to reset the
line search if you change the definition of your objective function from
one iteration to another, since otherwise the values are not compatible.
There is no mechanism at this point to reset the line search from within
the intermediate_callback. You would need to somehow get access to the
line_search_ member in the IpoptAlgorithm class. There is no
infrastructure at the moment to do that, and you will have to somehow hack
your local copy. If you don't mind global variables, you could just
create global variables for storing the SmartPtr<LineSearch> variables
lineSearch
resto_LineSearch
that are created in the AlgorithmBuilder (IpAlgBuilder.cpp). You can then
call the Reset() method in your intermediate_callback call if you see that
to be necessary. You could call it for both, all the time, or just for
the right one, depending on whether mode is RegularMode or
RestorationPhaseMode, respectively.
This is not very pretty, but it will probably work and seems the easiest
way to help you out. If we wanted to do something more sound, we would
have to define precisely what kind of on-the-fly-changes to the problem
definition we would allow, and what other algorithm components (beside the
line search) might be affected. For example, we would probably also have
to reset the quasi-Newton approximation, if you are using it and your
modification (e.g., of your penalty parameter) influences the second
derivatives of the model functions. (The barrier function is not
approximated with quasi-Newton.)
Hope this helps,
Andreas
On Wed, 18 Nov 2009 herve.martin.sc at libertysurf.fr wrote:
> Hi,
>
> Is it possible to reset the line search from the intermediate_callback
> method? (like it is done for instance after each mu update).
>
> It would be useful for me as I would like to implement a penalty-like
> method to regularize an optimization problem. I figured out that when
> updating my penalty parameter, I would need to reset the history of
> Ipopt iterates. Otherwise, I think that the Ipopt filter (or whatever
> line search is selected) would reject any new iterate leading to an
> increase in the objective. Am I right, or would I need to do more
> modifications?
>
> Thanks in advance for any help
> Hervé MARTIN
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>
>
More information about the Ipopt
mailing list