[Coin-ipopt] Re: Coin-ipopt digest, Vol 1 #26 - 1 msg and Vol #27-1msg

jens.pettersson at se.abb.com jens.pettersson at se.abb.com
Mon Sep 8 05:22:06 EDT 2003

Dear Andreas and Tobias,
thanks for the fast reply.

Let me first give you the background to our problem: 
Im running a pilot project where the intention is to optimize the 
performance and production of a large pulp and paper mill in Sweden. We 
have thus developed a large set of process models (in Modelica/Dymola), 
together with a database and an user-interface. We also have a MATLAB 
based tool for automatically translating the process models to FORTRAN, 
including first order derivatives. The discretization is done using the 
trapetzoidal method.  We also have an advanced interface for transfering 
information from the database (which is connected to the millwide 
information system) to the FORTRAN-based program. This framework would be 
very difficult to replace or even change and is not considerable.

Currently we are solving our optimization problem with SNOPT. As you know, 
SNOPT allows for the user to separate the NLP into  a linear  and 
non-linear part, respectively. This we have implemented as well. However, 
besides that, SNOPT is claimed not to care of the structure of the 
Jacobian. We have thus ordered the variables and equations of the 
discretized DAE system in a variable- and equation-based order, ie. 
x=[x1(1),x1(2),..,x1(N),x2(1),...xn(N)]. This means that there is not 
block strucure at all in our Jacobian matrix.

However, it is easy for us to change the variable and equation order if it 
is expected to make any difference and if it is convinient to make changes 
to the file constr.F. As I mentioned in the previous mail, it would be 
easy to generate a block-structure of the Jacobian as the one in prof. 
Bieglers presentation.
I read abot the option "ISELBAS" in the IPOPT.README file, but it is not clear to me how the information 
on the block-structure is specified. Is there some other document 
descibing the algorithms in constr.F??

Best Regards

Message from coin-ipopt-request at www-124.ibm.com@www-124.ibm.com received 
on 09/06/2003 06:01 PM

09/06/2003 06:01 PM

coin-ipopt-request at www-124.ibm.com@www-124.ibm.com

Please respond to coin-ipopt at www-124.ibm.com
Sent by coin-ipopt-admin at www-124.ibm.com

        To:     coin-ipopt at www-124.ibm.com
        cc:     (bcc: Jens Pettersson/SECRC/ABB)
        Subject:        Coin-ipopt digest, Vol 1 #26 - 1 msg

Send Coin-ipopt mailing list submissions to
                 coin-ipopt at www-124.ibm.com

To subscribe or unsubscribe via the World Wide Web, visit
or, via email, send a message with subject or body 'help' to
                 coin-ipopt-request at www-124.ibm.com

You can reach the person managing the list at
                 coin-ipopt-admin at www-124.ibm.com

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Coin-ipopt digest..."

Today's Topics:

   1. Re: IPOPT and optimal control problem (Andreas Waechter)


Message: 1
Date: Fri, 5 Sep 2003 17:56:55 -0400 (EDT)
From: Andreas Waechter <andreasw at watson.ibm.com>
To: jens.pettersson at se.abb.com
cc: coin-ipopt mailing list <coin-ipopt at www-126.southbury.usf.ibm.com>,
   Larry Biegler <lb01 at andrew.cmu.edu>
Subject: [Coin-ipopt] Re: IPOPT and optimal control problem

Dear Jens,

Many thanks for your message and your interest in Ipopt.

(I'm sending the message to the Ipopt mailing list, since this is the
channel for questions about the package.  If possible, please use this
for your future message.)

You wrote:

> I have a few questions regarding IPOPT and the use of it as a solver for
> optimal control problem. In your thesis, as well as in the enclosed
> presentations given by Larry Biegler on p. 16 (Decomposition of
> Large-scale NLP) , it is mentioned that the performance can be increased
> by specifying some variables as independent and the others as dependent.
> This is shown to increase the speed significantly.  How can this be
> implemented in the current version of IPOPT?? I have seen in the
> DYNOPT.README file that the file constr.f does this, but for systems of
> DAE solved by orthogonal collection.
> Can it be done in some other way, for example, we can easily partition 
> optimal control problem according to the figure on p16, but how is that
> information provided to IPOPT??

The story with the dependent and independent variables is that this allows
one to compute the search directions for the nonlinear optimization
problem (which for an optimal control problem usually includes a
discretized version of the DAE system) in two steps (by solving two
linear systems) instead of one bigger one.  We call the first approach the
"reduced space approach" and the other one the "full-space approach".
You can find details on the approached in Section 3.2 in my thesis.

Which approach is more efficient depends on the particular properties of
the problem that you are solving, in particular on the number of degrees
of freedom (i.e. n-m, where n is the number of variables and m is the
number of equality constraints, assuming that according to the problem
statements that Ipopt accepts, all inequality constraints except for
bounds have been reformulated into equality constraint and slacks).

The reduced space approach can be more efficient than the full space
approach if the number of degrees of freedom is small (e.g. in the optimal
control problems that we considered), and if one can solve the linear
system involving the basis matrix "C" (where C is defined in Eqn. (2.27)
in my thesis) efficiently.  For the dynamic optimization decomposition
(which is implemented in the IPOPT package as DYNOPT), we exploit the
almost block diagonal structure of the basis matrix C - for this we
replace the "general-purpose" version of the file constr.f by an
appropriate one.

The variable partition for the reduced space approach can also be helpful
if no second derivatives are available, and one wants to use a
reduced-space quasi-Newton method in order to approximate the missing
information (IPOPT options IQUASI=-5,-4,-3,-2,-1,1,2,3,4,5) instead of a
limited memory BFGS approximation (IQUASI=-6,6) for the full space option.

Note that the input to the DYNOPT version is essentially only the DAE
system, and the DYNOPT package does the discretization for you (as you
said using orthogonal collocation).  IPOPT itself is only the nonlinear
optimizer, i.e. if you want to solve an optimal control problem with Ipopt
not using orthogonal collocation, you will have to either pass the large
discretized ODE system as constraints directly to Ipopt (via eval_c and
eval_a), or you will have to add something to the DYNOPT part of the

I'm not sure which option you are interested in.  In order to answer your
question on how to pass the variable parition information to Ipopt let me
assume that you do not want to use the discretization implemented in
DYNOPT and instead provide your discretized version of the DAE system to
IPOPT as constraints.  In that case, the parameter ISELBAS (see the
README.IPOPT file) determines how the dependent and independent variables
are to be chosen.  In particular, you can list the numbers of the
(in)dependent variables in a file, or choose the first variables as the
(in)dependent ones.

I hope this helps.  Please let me know if this not clear, or if I didn't
understand your question.

Best regards,



Coin-ipopt mailing list
Coin-ipopt at www-124.ibm.com

End of Coin-ipopt Digest

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.coin-or.org/pipermail/ipopt/attachments/20030908/5b3481a6/attachment.html 

More information about the Coin-ipopt mailing list