[Coin-ipopt] Re: a question about using IPOPT to solve optimal control problems

Andreas Waechter andreasw at watson.ibm.com
Mon Dec 13 15:21:30 EST 2004


Hi Saeed,

Thanks for your message - I'm sending my response also to the mailing
list, in case someone else has additional comments.

> first thanks for sharing ipopt, i'm using it to solve my ms project :
> lauch vehicle optimization
> i make a DLL from ipopt and now can call ipopt function through
> VisualBasic in windows (i modify something in your program subroutines
> for this purpose)

I'm glad you could get it to work!

> now, i'm going to discretize an optimal control problem and solve it by
> ipopt
> is your code efficient for this? i see a UNSUPPORTED folder including
> DYNOPT but ican't understand how it works.. i want to write my VB code
> instead if it is not usefull for me. how can i calculate first
> derivatives (e.g for constraints)? should i use auto differential
> methods? is there any automatic sub in your ipopt files to this itself?

At this point I would not recommend to you to use DYNOPT, since the code
hasn't been updated in a while, and we haven't really written any user
documentation for it.  Also, since it uses the reduced space option of
Ipopt, it only makes sense to use it if you have few degrees of freedom in
your problem (and you probably have many?).

If your problem is not very large (say, less than 10,000-100,000 variables
in the discretized version) and you want to solve it only a few times, you
might also consider using Ipopt through AMPL, and use AMPL to write your
discretized control problem.  Here, the example problems, that Dieter
Kraft from the Technical University of Munich has provided for the Ipopt
NEOS webpage at

http://www-neos.mcs.anl.gov/neos/solvers/NCO:IPOPT/solver-sample.html

might be helpful examples of discretized control problems.

Another resource for you might be the OptControlCentre at

http://www.optcontrolcentre.com/

which was developed by Tobias Jockenhoevel - here you can enter the
differential-algebraic equations in a Matlab GUI, generate the source code
for the model via Maple, and then compile the generated problem and link
it to Ipopt.  However, I'm not sure how the current support status of the
OptControlCentre is (and you would need to have both Matlab and Maple).

If these are no useful options for you, you could write your own
discretized version of the optimal control problem (in terms of those
subroutines EVAL_F, EVAL_G etc...), which I assume you were planning to
do.  I'm not sure how much you know about this (e.g. how to discretize
differential-algebraic systems), so I don't know what more to tell you at
this point.  A helpful resource could be the book J.T. Betts: Practical
Methods for Optimal Control Using Nonlinear Programming.  By the way, if
possible, you should implement second derivatives, it makes quite a
difference in terms of efficiency and robustness of the code.

I hope this helps at least somewhat,

Andreas






More information about the Coin-ipopt mailing list