<br><font size=2 face="sans-serif">Hi Andreas,</font>
<br><font size=2 face="sans-serif">I think you have got the picture right. We have invested a lot of manpower into the complete framework :</font>
<br><font size=2 face="sans-serif">GUI -> Database -> Model -> Discretization -> Solver. </font>
<br><font size=2 face="sans-serif">The only part that is easily replaceble is the solver, currently SNOPT.Fortunatly, most solvers (SNOPT, IPOPT, KNITRO, etc) </font>
<br><font size=2 face="sans-serif">provides similar interfaces, which means that we have the possibility to interchange them without too much engineering.</font>
<br>
<br><font size=2 face="sans-serif">Thus, with the information that you provided, we will proceed by experimenting with the standard IPOPT interface and then evaluate the result. Depending on</font>
<br><font size=2 face="sans-serif">other activities in the project we will hopefully have tested IPOPT by the end of the month. I will try to keep you informed with the results.</font>
<br>
<br><font size=2 face="sans-serif">I should also mention that our intention is to have several solvers, ideally based on different methods, such that if one solver fails, the other will hopefully succeed. Hence, SNOPT and IPOPT </font>
<br><font size=2 face="sans-serif">may be a happy couple :)</font>
<br>
<br><font size=2 face="sans-serif">Best Regards,</font>
<br><font size=2 face="sans-serif">Jens</font>
<br>
<br>
<br><font size=1 color=white face="Arial">Message from Andreas Waechter <andreasw@watson.ibm.com> received on 09/11/2003 12:56 AM</font>
<table width=100%>
<tr valign=top>
<td>
<td><font size=1 face="sans-serif">09/11/2003 12:56 AM</font>
<br>
<br>
<td>
<td><font size=1 face="sans-serif"><b>Andreas Waechter <andreasw@watson.ibm.com></b></font>
<br>
<br></table>
<br>
<table width=100%>
<tr valign=top>
<td>
<div align=center>
<br></div>
<td><font size=1 face="sans-serif"> To: Jens Pettersson/SECRC/ABB@ABB_SECRC</font>
<br><font size=1 face="sans-serif"> cc: coin-ipopt@www-124.southbury.usf.ibm.com</font>
<br><font size=1 face="sans-serif"> Subject: Re: [Coin-ipopt] Re: Coin-ipopt digest, Vol 1 #26 - 1 msg and Vol #27-1msg</font></table>
<br>
<br>
<br><font size=2 face="Courier New">Dear Jens,<br>
<br>
I think I have now a better understanding of what you are intending to<br>
do. Let me try to state it in my own words:<br>
<br>
You have a large and complicated DAE system that requires database<br>
information for the runs (ie. cannot rewritten in any other form), and you<br>
have already FORTRAN code that implements a discretized version of this<br>
system (using the trapetoidal rule). What you would like to do is to use<br>
the elemental decomposition that is implemented in DYNOPT. Correct?<br>
<br>
Short answer: In its current implenentation, DYNOPT is not set up for you<br>
to do this.<br>
<br>
What DYNOPT basically does is that it does the factorization and<br>
backsolves for the basis matrix C in an efficient way, that exploits the<br>
fact that C has an almost block diagonal structure. The blocks on the<br>
diagonal correspond to the discretized DAE system for the individual<br>
finite elements, obtained by applying orthogonal collocation. The<br>
off-diagonal block are (relatively small) identity matrices that ensure<br>
the continuity of only the differential variables across the finite<br>
elements. The code is currently only set up so that a user can supply the<br>
DAE system, and the discretization is performed automatically (using<br>
collocation). At this point it is not possible for you to supply your own<br>
discretization, e.g. using the trapezoidal rule. The code could maybe be<br>
adapted so that a suer can supply the discretization for each element by<br>
him/herself...<br>
<br>
If I understand correctly, you previously used SNOPT to solve the<br>
(undecomposed) large NLP directly, supplying the discretized DAE system<br>
for the entire time horizon, correct? Have you tried to do the same with<br>
IPOPT (using the full-space option, and not the reduced space option)?<br>
IPOPT has a limited-memory BFGS option for the full-space case... Did<br>
that work for you?<br>
<br>
By the way, I'm currently visiting Larry Biegler; we discussed your<br>
question, and he might add some comments to mine.<br>
<br>
Cheers<br>
<br>
Andreas<br>
<br>
<br>
On Mon, 8 Sep 2003 jens.pettersson@se.abb.com wrote:<br>
<br>
> Dear Andreas and Tobias,<br>
> thanks for the fast reply.<br>
><br>
> Let me first give you the background to our problem:<br>
> Im running a pilot project where the intention is to optimize the<br>
> performance and production of a large pulp and paper mill in Sweden. We<br>
> have thus developed a large set of process models (in Modelica/Dymola),<br>
> together with a database and an user-interface. We also have a MATLAB<br>
> based tool for automatically translating the process models to FORTRAN,<br>
> including first order derivatives. The discretization is done using the<br>
> trapetzoidal method. We also have an advanced interface for transfering<br>
> information from the database (which is connected to the millwide<br>
> information system) to the FORTRAN-based program. This framework would be<br>
> very difficult to replace or even change and is not considerable.<br>
><br>
> Currently we are solving our optimization problem with SNOPT. As you know,<br>
> SNOPT allows for the user to separate the NLP into a linear and<br>
> non-linear part, respectively. This we have implemented as well. However,<br>
> besides that, SNOPT is claimed not to care of the structure of the<br>
> Jacobian. We have thus ordered the variables and equations of the<br>
> discretized DAE system in a variable- and equation-based order, ie.<br>
> x=[x1(1),x1(2),..,x1(N),x2(1),...xn(N)]. This means that there is not<br>
> block strucure at all in our Jacobian matrix.<br>
><br>
> However, it is easy for us to change the variable and equation order if it<br>
> is expected to make any difference and if it is convinient to make changes<br>
> to the file constr.F. As I mentioned in the previous mail, it would be<br>
> easy to generate a block-structure of the Jacobian as the one in prof.<br>
> Bieglers presentation.<br>
> I read abot the option "ISELBAS" in the IPOPT.README file, but it is not clear to me how the information<br>
> on the block-structure is specified. Is there some other document<br>
> descibing the algorithms in constr.F??<br>
><br>
> Best Regards<br>
> Jens<br>
><br>
><br>
> Message from coin-ipopt-request@www-124.ibm.com@www-124.ibm.com received<br>
> on 09/06/2003 06:01 PM<br>
><br>
> 09/06/2003 06:01 PM<br>
><br>
><br>
><br>
> coin-ipopt-request@www-124.ibm.com@www-124.ibm.com<br>
><br>
> Please respond to coin-ipopt@www-124.ibm.com<br>
> Sent by coin-ipopt-admin@www-124.ibm.com<br>
><br>
><br>
><br>
> To: coin-ipopt@www-124.ibm.com<br>
> cc: (bcc: Jens Pettersson/SECRC/ABB)<br>
> Subject: Coin-ipopt digest, Vol 1 #26 - 1 msg<br>
><br>
><br>
> Send Coin-ipopt mailing list submissions to<br>
> coin-ipopt@www-124.ibm.com<br>
><br>
> To subscribe or unsubscribe via the World Wide Web, visit<br>
> http://www-124.ibm.com/developerworks/oss/mailman/listinfo/coin-ipopt<br>
> or, via email, send a message with subject or body 'help' to<br>
> coin-ipopt-request@www-124.ibm.com<br>
><br>
> You can reach the person managing the list at<br>
> coin-ipopt-admin@www-124.ibm.com<br>
><br>
> When replying, please edit your Subject line so it is more specific<br>
> than "Re: Contents of Coin-ipopt digest..."<br>
><br>
><br>
> Today's Topics:<br>
><br>
> 1. Re: IPOPT and optimal control problem (Andreas Waechter)<br>
><br>
> --__--__--<br>
><br>
> Message: 1<br>
> Date: Fri, 5 Sep 2003 17:56:55 -0400 (EDT)<br>
> From: Andreas Waechter <andreasw@watson.ibm.com><br>
> To: jens.pettersson@se.abb.com<br>
> cc: coin-ipopt mailing list <coin-ipopt@www-126.southbury.usf.ibm.com>,<br>
> Larry Biegler <lb01@andrew.cmu.edu><br>
> Subject: [Coin-ipopt] Re: IPOPT and optimal control problem<br>
><br>
> Dear Jens,<br>
><br>
> Many thanks for your message and your interest in Ipopt.<br>
><br>
> (I'm sending the message to the Ipopt mailing list, since this is the<br>
> channel for questions about the package. If possible, please use this<br>
> for your future message.)<br>
><br>
> You wrote:<br>
><br>
> > I have a few questions regarding IPOPT and the use of it as a solver for<br>
> > optimal control problem. In your thesis, as well as in the enclosed<br>
> > presentations given by Larry Biegler on p. 16 (Decomposition of<br>
> > Large-scale NLP) , it is mentioned that the performance can be increased</font>
<br><font size=2 face="Courier New">> > by specifying some variables as independent and the others as dependent.<br>
> > This is shown to increase the speed significantly. How can this be<br>
> > implemented in the current version of IPOPT?? I have seen in the<br>
> > DYNOPT.README file that the file constr.f does this, but for systems of<br>
> > DAE solved by orthogonal collection.<br>
> ><br>
> > Can it be done in some other way, for example, we can easily partition<br>
> our<br>
> > optimal control problem according to the figure on p16, but how is that<br>
> > information provided to IPOPT??<br>
><br>
> The story with the dependent and independent variables is that this allows<br>
> one to compute the search directions for the nonlinear optimization<br>
> problem (which for an optimal control problem usually includes a<br>
> discretized version of the DAE system) in two steps (by solving two<br>
> linear systems) instead of one bigger one. We call the first approach the<br>
> "reduced space approach" and the other one the "full-space approach".<br>
> You can find details on the approached in Section 3.2 in my thesis.<br>
><br>
> Which approach is more efficient depends on the particular properties of<br>
> the problem that you are solving, in particular on the number of degrees<br>
> of freedom (i.e. n-m, where n is the number of variables and m is the<br>
> number of equality constraints, assuming that according to the problem<br>
> statements that Ipopt accepts, all inequality constraints except for<br>
> bounds have been reformulated into equality constraint and slacks).<br>
><br>
> The reduced space approach can be more efficient than the full space<br>
> approach if the number of degrees of freedom is small (e.g. in the optimal<br>
> control problems that we considered), and if one can solve the linear<br>
> system involving the basis matrix "C" (where C is defined in Eqn. (2.27)<br>
> in my thesis) efficiently. For the dynamic optimization decomposition<br>
> (which is implemented in the IPOPT package as DYNOPT), we exploit the<br>
> almost block diagonal structure of the basis matrix C - for this we<br>
> replace the "general-purpose" version of the file constr.f by an<br>
> appropriate one.<br>
><br>
> The variable partition for the reduced space approach can also be helpful<br>
> if no second derivatives are available, and one wants to use a<br>
> reduced-space quasi-Newton method in order to approximate the missing<br>
> information (IPOPT options IQUASI=-5,-4,-3,-2,-1,1,2,3,4,5) instead of a<br>
> limited memory BFGS approximation (IQUASI=-6,6) for the full space option.<br>
><br>
> Note that the input to the DYNOPT version is essentially only the DAE<br>
> system, and the DYNOPT package does the discretization for you (as you<br>
> said using orthogonal collocation). IPOPT itself is only the nonlinear<br>
> optimizer, i.e. if you want to solve an optimal control problem with Ipopt<br>
> not using orthogonal collocation, you will have to either pass the large<br>
> discretized ODE system as constraints directly to Ipopt (via eval_c and<br>
> eval_a), or you will have to add something to the DYNOPT part of the<br>
> package.<br>
><br>
> I'm not sure which option you are interested in. In order to answer your<br>
> question on how to pass the variable parition information to Ipopt let me<br>
> assume that you do not want to use the discretization implemented in<br>
> DYNOPT and instead provide your discretized version of the DAE system to<br>
> IPOPT as constraints. In that case, the parameter ISELBAS (see the<br>
> README.IPOPT file) determines how the dependent and independent variables<br>
> are to be chosen. In particular, you can list the numbers of the<br>
> (in)dependent variables in a file, or choose the first variables as the<br>
> (in)dependent ones.<br>
><br>
> I hope this helps. Please let me know if this not clear, or if I didn't<br>
> understand your question.<br>
><br>
> Best regards,<br>
><br>
> Andreas<br>
><br>
><br>
><br>
> --__--__--<br>
><br>
> _______________________________________________<br>
> Coin-ipopt mailing list<br>
> Coin-ipopt@www-124.ibm.com<br>
> http://www-124.ibm.com/developerworks/oss/mailman/listinfo/coin-ipopt<br>
><br>
><br>
> End of Coin-ipopt Digest<br>
><br>
><br>
><br>
<br>
</font>
<br>
<br>