<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi Simon,<br>
<br>
The issue might be that the Hessian matrix that Ipopt considers is
the Hessian of the original objective function plus the
("primal-dual") Hessian of the barrier terms (see Eqn. (11) in the
Ipopt implementation paper in Math Prog). Even if the first Hessian
is indefinite, the sum of the two might be positive definite.<br>
<br>
It is surprising nevertheless that the algorithm doesn't make good
progress in the output you provided. First, I suggest you make sure
that your derivatives are correct (you can use Ipopt's derivative
checker). Other than that, you might want to see what happens if
you choose a smaller initial value for the barrier parameter
(mu_init option). <br>
<br>
As for the warm start: In contrast to what the header file for the C
interface currently says, the warm start should work. Here is the
updated part of the header file (will be corrected in later Ipopt
releases):<br>
<br>
------------------------------- 8<
------------------------------------------<br>
<br>
/** Function calling the Ipopt optimization algorithm for a
problem<br>
previously defined with CreateIpoptProblem. The return<br>
specified outcome of the optimization procedure (e.g.,
success,<br>
failure etc).<br>
*/<br>
IPOPT_EXPORT(enum ApplicationReturnStatus) IpoptSolve(<br>
IpoptProblem ipopt_problem<br>
/** Problem that is to be optimized. Ipopt<br>
will use the options previously
specified with<br>
AddIpoptOption (etc) for this problem.
*/<br>
, Number* x /** Input: Starting point<br>
Output: Optimal solution */<br>
, Number* g /** Values of constraint at final point<br>
(output only - ignored if set to NULL)
*/<br>
, Number* obj_val /** Final value of objective function<br>
(output only - ignored if set to NULL)
*/<br>
, Number* mult_g /** Input: Initial values for the
constraint<br>
multipliers (only if warm start
option<br>
is chosen)<br>
Output: Final multipliers for
constraints<br>
(ignored if set to NULL) */<br>
, Number* mult_x_L /** Input: Initial values for the
multipliers for<br>
lower variable bounds (only if
warm start<br>
option is chosen)<br>
Output: Final multipliers for lower
variable<br>
bounds (ignored if set to NULL)
*/<br>
, Number* mult_x_U /** Input: Initial values for the
multipliers for<br>
upper variable bounds (only if
warm start<br>
option is chosen)<br>
Output: Final multipliers for upper
variable<br>
bounds (ignored if set to NULL)
*/<br>
, UserDataPtr user_data<br>
/** Pointer to user data. This will be<br>
passed unmodified to the callback<br>
functions. */<br>
);<br>
<br>
<br>
------------------------------- 8<
------------------------------------------<br>
<br>
But don't expect too much from the warm start - it is difficult to
warm start interior point methods really effectively...<br>
<br>
<br>
Hope this helps,<br>
<pre class="moz-signature" cols="72">Andreas Waechter
Associate Professor
Department of Industrial Engineering and Management Sciences
McCormick School of Engineering
Northwestern University
Evanston, IL 60208
USA</pre>
<br>
On 02/08/2012 03:44 AM, Altmannshofer, Simon wrote:
<blockquote
cite="mid:C7A3EFFD8A17524F85F92FDD670E7D7A4198A7E7@BADWLRZ-SWMBX1.ads.mwn.de"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta name="Generator" content="Microsoft Word 12 (filtered
medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.E-MailFormatvorlage17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.Section1
        {page:Section1;}
-->
</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="Section1">
<p class="MsoNormal"><span lang="EN-US">Hello,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I am using IPOPT to
solve the NLP arising in Nonlinear Model Predictive Control.
IPOPT was compiled with MS Visual Studio 10 according to the
documentation. In order to access IPOPT in MATLAB/Simulink
the C Interface is used. <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">At the starting point,
the user-supplied hessian is indefinite (checked with
MATLAB's chol(hessian)). According to the implementation
IPOPT should add a multiple of the unity matrix to the
indefinite hessian. Unfortunately this is not done and the
objective function is only reduced slightly. See the output
:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:12.0pt;
font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US">List of user-set
options:</span><span
style="font-size:12.0pt;font-family:"Courier New""
lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US"> </span><span
style="font-size:12.0pt;font-family:"Courier New""
lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US">
Name Value used</span><span
style="font-size:12.0pt;
font-family:"Courier New"" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US">
hessian_approximation = exact yes</span><span
style="font-size:12.0pt;font-family:"Courier New""
lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US">
max_iter = 10 yes</span><span
style="font-size:
12.0pt;font-family:"Courier New"" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US">
output_file = ipopt yes</span><span
style="font-size:12.0pt;font-family:"Courier New""
lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US">
print_user_options = yes yes</span><span
style="font-size:12.0pt;font-family:"Courier New""
lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US"> </span><span
style="font-size:12.0pt;font-family:"Courier New""
lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US">******************************************************************************</span><span
style="font-size:12.0pt;font-family:"Courier New""
lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US">This program contains
Ipopt, a library for large-scale nonlinear optimization.</span><span
style="font-size:12.0pt;font-family:"Courier New""
lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US"> Ipopt is released as
open source code under the Eclipse Public License (EPL).</span><span
style="font-size:12.0pt;font-family:"Courier New""
lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US"> For more
information visit <a class="moz-txt-link-freetext" href="http://projects.coin-or.org/Ipopt">http://projects.coin-or.org/Ipopt</a></span><span
style="font-size:12.0pt;font-family:"Courier New""
lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US">******************************************************************************</span><span
style="font-size:12.0pt;font-family:"Courier New""
lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span
style="font-size:10.0pt;font-family:"Courier
New";color:black" lang="EN-US"> </span><span
style="font-size:12.0pt;font-family:"Courier New""
lang="EN-US"><o:p></o:p></span></p>
</div>
</blockquote>
[.... Message was getting too long ....]<br>
<blockquote
cite="mid:C7A3EFFD8A17524F85F92FDD670E7D7A4198A7E7@BADWLRZ-SWMBX1.ads.mwn.de"
type="cite">
<div class="Section1"><o:p></o:p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas">My questions
are:<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas" lang="EN-US">1)
Why does IPOPT not recognize the indefinite hessian matrix?
What possible options might clear this problem? With the
BFGS formula for the hessian everything works fine. But we
want to use the exact hessian.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas" lang="EN-US">2)
Does the warm start option also work with the C Interface?<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas" lang="EN-US">Best
Regards
<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas" lang="EN-US">Simon</span><span
style="font-size:10.5pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas">-----------------------------------------------------<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas">Dipl.-Ing.
Simon Altmannshofer<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas">Lehrstuhl für
Regelungstechnik<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas">Technische
Universität München<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas">Boltzmannstraße
15<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas">85748 Garching
bei München<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas">Tel.: +49
(89) 289-15679<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas">Fax: +49
(89) 289-15653<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas">E-Mail:
<a moz-do-not-send="true"
href="mailto:tobias.kloiber@tum.de">simon.altmannshofer@tum.de</a><o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:Consolas">Internet:
<a moz-do-not-send="true" href="http://www.rt.mw.tum.de">www.rt.mw.tum.de</a><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Ipopt mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Ipopt@list.coin-or.org">Ipopt@list.coin-or.org</a>
<a class="moz-txt-link-freetext" href="http://list.coin-or.org/mailman/listinfo/ipopt">http://list.coin-or.org/mailman/listinfo/ipopt</a>
</pre>
</blockquote>
</body>
</html>