[Ipopt] mininimizing a function without a minimum

Andreas Waechter andreasw at watson.ibm.com
Wed Apr 8 18:54:54 EDT 2009


Hello Dominik,

I do not quite understand your questions but I try to make a few hopefully 
related point.

You should not do an regularization of the Hessian matrix, it should be 
the Hessian of the Lagrangian function,  Ipopt has a derivative checker 
(see the documentation) that can help you to verify that you are indeed 
computing the first and second derivatives correctly.

Maybe your question however referred to Ipopt's internal regularization? 
In that case, the output you included shows in the "lg(rg)" column that 
Ipopt adds a multiple of the identity to the Hessian matrix in order to 
make sure that it still obtains a descent direction even though the 
problem is locally convex.  If, as it is the case in your output, even at 
the end there is regularization, it can mean that Ipopt is converging to a 
saddle point (as you suggested); there is not really anything in Ipopt 
that could help you to avoid that, except that you try a different 
starting point.  The regularization at the end could also mean that there 
is something wrong with your Hessian, or that it is only positive 
semidefinte (and not positive definite) in the null space of the 
constraint Jacobian, which usually means that there is an entire set of 
local solutions with the same objective function value.

Not sure if that helps...

Andreas

On Mon, 6 Apr 2009, Dominik Skanda wrote:

> Hi all,

> I'm using IpOPT together with CVodes a numerical integrator in context 
> of optimal control.
> I have implemented the eval_h function by calculating second order 
> sensitivities in forward mode.
> Now my problem is that for my optimization problem ipopt doesn't 
> converge correctly.
> I think the problem is somehow connected to the regularization of my 
> hessematrix.
> If I restart the algorithm after he found a local solution with the 
> solution point as new starting point it takes about 300 - 800 iterations 
> until the algorithm ends with different values of the optimization 
> variables but the objective value is somehow the same.
> This is due to the fact, that at the solution point the hesse matrix 
> gets regularized and somehow the information of the hessematrix is 
> useless.
> I think Ipopt get's stuck in a saddle point if there a minimium at all. 
> Can Ipopt check that or is there a way to make the algorithm more robust 
> against solutions at saddle points.

> Many thanks in advance
>
> Dominik
>
>
>
> P.s.
> IpOPT Output:
>
> ******************************************************************************
> This program contains Ipopt, a library for large-scale nonlinear optimization.
> Ipopt is released as open source code under the Common Public License (CPL).
>         For more information visit http://projects.coin-or.org/Ipopt
> ******************************************************************************
>
> This is Ipopt version 3.5.4, running with linear solver ma27.
>
> Number of nonzeros in equality constraint Jacobian...:     1056
> Number of nonzeros in inequality constraint Jacobian.:        0
> Number of nonzeros in Lagrangian Hessian.............:     3000
>
> ##Total number of variables............................:      160
>                     variables with only lower bounds:        0
>                variables with lower and upper bounds:      160
>                     variables with only upper bounds:        0
> Total number of equality constraints.................:      153
> Total number of inequality constraints...............:        1
>        inequality constraints with only lower bounds:        0
>   inequality constraints with lower and upper bounds:        1
>        inequality constraints with only upper bounds:        0
>
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>   0  8.3542665e+03 1.00e-02 1.00e+02  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
> #   1  8.3335936e+03 4.31e-04 2.70e+01  -1.0 2.70e-01   2.0 9.66e-01 9.90e-01f  1
> #   2  8.3090698e+03 4.46e-04 2.73e+01  -1.0 8.17e-01   1.5 9.90e-01 1.00e+00f  1
> #   3  8.2270351e+03 6.60e-03 5.92e+01  -1.0 2.55e+00   1.0 9.93e-01 1.00e+00f  1
> #   4  7.7368765e+03 3.33e-01 1.56e+02  -1.0 1.02e+01   0.6 8.41e-01 1.00e+00f  1
> #   5  7.6476591e+03 4.46e-02 2.80e+01  -1.0 3.53e-01   1.9 1.00e+00 1.00e+00f  1
> #   6  7.4401024e+03 7.61e-02 6.17e+01  -1.0 1.37e+00   1.4 1.00e+00 1.00e+00f  1
> #   7  7.2902345e+03 2.33e-02 3.13e+01  -1.0 4.58e-01   1.8 1.00e+00 1.00e+00f  1
> #   8  6.9488438e+03 7.45e-02 5.26e+02  -1.0 1.41e+00   1.4 1.00e+00 5.26e-01f  1
> #   9  6.9426777e+03 7.43e-02 7.48e+02  -1.0 5.85e+00   0.9 4.09e-01 2.56e-03f  1
> #iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>  10  6.6391830e+03 1.85e-02 5.01e+01  -1.0 2.41e+00   1.3 1.00e+00 1.00e+00f  1
> #  11  6.2302888e+03 2.26e-02 3.31e+02  -1.0 8.13e+00   0.8 1.00e+00 6.72e-01f  1
> #  12  4.8049917e+03 1.72e-01 5.00e+01  -1.0 2.15e+01   0.4 1.00e+00 1.00e+00f  1
> #  13  2.6227442e+03 3.62e-01 5.80e+01  -1.0 4.28e+01  -0.1 1.00e+00 1.00e+00f  1
> #  14  1.1127574e+03 2.59e-01 3.06e+03  -1.0 5.21e+01  -0.6 4.46e-01 1.00e+00f  1
> #  15  7.6696234e+02 7.51e-02 1.49e+03  -1.0 3.46e+01  -1.1 7.72e-01 1.00e+00f  1
> #  16  7.8136912e+02 8.62e-04 5.65e+02  -1.0 5.03e-01   1.2 1.00e+00 1.00e+00h  1
> #  17  7.8117568e+02 3.19e-04 8.05e+01  -1.0 1.47e-01   1.6 1.00e+00 1.00e+00f  1
> #  18  7.8029578e+02 2.26e-04 1.69e+02  -1.0 3.72e-01   1.1 8.36e-01 1.00e+00f  1
> ####  19  7.7996243e+02 3.39e-04 5.98e+02  -1.0 2.81e-01   1.5 1.00e+00 1.93e-01f  2
> #iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>  20  7.7907386e+02 1.03e-03 1.22e+03  -1.0 5.11e-01   1.1 1.00e+00 3.10e-01f  1
> #  21  7.7415079e+02 7.68e-04 1.11e+01  -1.0 1.20e+00   0.6 1.00e+00 1.00e+00f  1
> #  22  7.6220230e+02 2.83e-04 9.90e+00  -1.0 2.99e+00   0.1 1.00e+00 1.00e+00f  1
> #  23  7.4400359e+02 8.43e-04 1.77e+02  -1.0 7.11e+00  -0.4 1.00e+00 7.44e-01f  1
> #  24  7.0436997e+02 1.10e-02 1.11e+02  -1.0 1.50e+01  -0.8 8.33e-01 1.00e+00f  1
> #  25  6.9199952e+02 1.31e-02 1.13e+02  -1.0 6.17e+00  -0.4 1.00e+00 1.00e+00f  1
> #  26  6.6552890e+02 2.06e-02 2.51e+02  -1.0 1.44e+01  -0.9 1.00e+00 8.70e-01f  1
> #  27  6.6244986e+02 9.12e-03 1.36e+02  -1.0 2.30e+01  -1.4 2.70e-02 1.19e-01f  1
> #  28  6.6306688e+02 6.54e-03 8.28e+02  -1.0 1.89e-01   2.7 1.00e+00 2.13e-01h  1
> #  29  6.6307703e+02 6.53e-03 9.95e+02  -1.0 9.75e-01   2.2 6.40e-03 2.24e-03h  1
> #iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>  30  6.6311635e+02 6.48e-03 5.11e+03  -1.0 9.98e-01   1.7 2.16e-03 8.40e-03h  1
> #  31  6.6311894e+02 6.48e-03 3.39e+04  -1.0 1.62e-01   4.8 9.54e-01 5.19e-04h  1
> #  32  6.6313886e+02 6.46e-03 7.82e+04  -1.0 2.20e-01   4.4 8.31e-03 3.22e-03h  1
> #  33  6.6318764e+02 6.41e-03 8.07e+06  -1.0 4.53e-01   3.9 6.49e-01 1.13e-02h  1
> #  34  6.7048374e+02 5.31e-03 1.29e+05  -1.0 5.20e-01   3.4 1.00e+00 1.00e+00h  1
> #  35  6.7204318e+02 5.70e-04 1.86e+05  -1.0 9.29e-02   2.9 4.02e-01 1.00e+00h  1
> #  36  6.7134521e+02 8.07e-05 1.42e+04  -1.0 4.45e-02   2.5 3.17e-02 1.00e+00f  1
> #  37  6.7105869e+02 3.50e-04 1.27e+04  -1.0 3.23e-02   2.9 1.00e+00 1.00e+00f  1
> ###  38  6.7094866e+02 3.92e-04 1.80e+04  -1.0 1.66e-01   3.3 9.51e-02 3.36e-02f  2
> #  39  6.7103931e+02 9.30e-05 1.54e+05  -1.0 1.62e-02   4.6 6.63e-01 1.00e+00h  1
> #iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>  40  6.7087038e+02 4.07e-04 2.04e+05  -1.0 2.67e-02   4.2 1.00e+00 1.00e+00f  1
> ###  41  6.7080083e+02 2.83e-04 4.55e+04  -1.0 3.46e-02   4.6 1.00e+00 1.00e+00H  1
> #  42  6.7079466e+02 2.47e-05 1.89e+02  -1.0 5.44e-04   4.1 1.00e+00 1.00e+00h  1
> #  43  6.7080196e+02 2.94e-06 5.71e+00  -1.0 7.14e-04   3.6 1.00e+00 1.00e+00h  1
> #  44  6.7077385e+02 2.89e-06 4.21e+00  -1.0 1.56e-03   3.2 1.00e+00 1.00e+00f  1
> #  45  6.7069082e+02 2.85e-06 2.28e+00  -1.0 4.75e-03   2.7 1.00e+00 1.00e+00f  1
> #  46  6.7045029e+02 2.03e-05 2.19e+00  -1.0 1.37e-02   2.2 1.00e+00 1.00e+00f  1
> #  47  6.6975372e+02 1.39e-04 2.63e+01  -1.0 3.93e-02   1.7 1.00e+00 1.00e+00f  1
> #  48  6.6785425e+02 7.46e-04 9.08e+01  -1.0 1.11e-01   1.2 1.00e+00 1.00e+00f  1
> #  49  6.6411781e+02 2.89e-03 1.15e+02  -1.0 3.27e-01   0.8 1.00e+00 1.00e+00f  1
> #iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>  50  6.5999295e+02 6.03e-03 7.33e+01  -1.0 9.50e-01   0.3 1.00e+00 1.00e+00f  1
> #  51  6.5517225e+02 5.55e-03 1.75e+02  -1.0 2.72e+00  -0.2 6.25e-01 1.00e+00f  1
> #  52  6.4264201e+02 4.25e-03 1.07e+01  -1.0 7.62e+00  -0.7 1.00e+00 1.00e+00f  1
> #  53  6.1301264e+02 5.38e-03 1.83e+02  -1.0 1.94e+01  -1.1 5.98e-01 1.00e+00f  1
> #  54  5.5722673e+02 1.55e-02 8.92e+01  -1.0 4.39e+01  -1.6 8.60e-01 1.00e+00f  1
> ##  55  3.9891307e+02 1.04e+00 7.47e+02  -1.0 9.49e+01  -2.1 1.89e-01 1.00e+00F  1
> #  56  4.2670957e+02 9.88e-01 4.75e+02  -1.0 5.30e+02  -2.6 7.11e-01 3.45e-02h  1
> #  57  6.6036318e+02 1.81e-01 4.72e+02  -1.0 8.80e+01  -3.0 1.32e-01 1.00e+00h  1
> ##  58  6.5704741e+02 1.79e-01 4.68e+02  -1.0 1.61e+02  -0.8 5.11e-01 1.27e-02F  1
> ##  59  6.6227968e+02 9.04e-02 1.12e+02  -1.0 3.04e+01  -1.3 3.50e-02 5.00e-01h  2
> #iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>  60  6.1777219e+02 4.23e-01 4.46e+02  -1.0 3.28e+01  -0.9 1.71e-02 7.81e-01f  1
> #  61  5.8125612e+02 1.63e-01 1.45e+03  -1.0 2.34e+00   1.4 5.14e-02 1.00e+00f  1
> #  62  5.8604083e+02 1.55e-02 4.39e+01  -1.0 4.80e-01   0.9 9.78e-01 1.00e+00h  1
> #  63  5.4852956e+02 1.58e-02 1.96e+01  -1.0 1.06e+00   0.4 9.56e-01 1.00e+00f  1
> #  64  5.3482118e+02 6.61e-03 8.64e+00  -1.0 1.27e+00  -0.1 1.00e+00 1.00e+00f  1
> #  65  5.3059194e+02 2.89e-03 2.82e+00  -1.0 3.77e+00  -0.5 1.00e+00 1.00e+00f  1
> #  66  5.1983456e+02 1.61e-03 1.04e+00  -1.0 1.08e+01  -1.0 1.00e+00 1.00e+00f  1
> #  67  4.9267774e+02 8.14e-03 1.41e+01  -1.7 2.85e+01  -1.5 8.80e-01 1.00e+00f  1
> #  68  4.3931682e+02 4.00e-02 1.91e+01  -1.7 6.75e+01  -2.0 1.00e+00 1.00e+00f  1
> #  69  3.7267676e+02 1.86e-01 2.79e+01  -1.7 1.23e+02  -2.4 7.65e-01 1.00e+00f  1
> #iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>  70  3.4708474e+02 4.15e-02 7.60e+00  -1.7 4.01e+01  -2.0 1.00e+00 1.00e+00f  1
> #  71  3.4050487e+02 6.21e-02 1.21e+01  -1.7 1.41e+01  -1.6 1.00e+00 1.00e+00f  1
> #  72  3.3832930e+02 2.60e-01 7.90e+01  -1.7 1.47e+01  -1.2 1.00e+00 1.00e+00f  1
> #  73  3.0394659e+02 3.55e-02 6.65e+01  -1.7 5.91e-01   1.1 1.00e+00 1.00e+00f  1
> #  74  2.8435370e+02 1.51e-03 2.80e+01  -1.7 2.27e-01   1.5 1.00e+00 1.00e+00f  1
> #  75  2.5272813e+02 1.15e-01 1.15e+02  -1.7 1.35e+00   1.0 1.00e+00 1.00e+00f  1
> ###  76  1.7231274e+02 5.46e-01 3.23e+02  -1.7 7.57e+01   0.5 8.43e-02 2.43e-02f  2
> #  77  4.5904146e+01 5.63e-01 7.45e+02  -1.7 2.76e+00   0.1 1.00e+00 1.00e+00f  1
> #  78  3.3746438e+01 4.71e-01 1.31e+02  -1.7 1.21e+00   0.5 1.00e+00 1.00e+00f  1
> #  79  3.0706462e+01 3.23e-02 2.23e+01  -1.7 4.64e-01   0.0 1.00e+00 1.00e+00f  1
> #iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>  80  3.0116792e+01 9.81e-03 8.12e-01  -1.7 2.45e-01  -0.5 1.00e+00 1.00e+00f  1
> #  81  3.0044540e+01 4.31e-03 5.11e-01  -1.7 3.83e-01  -0.9 1.00e+00 1.00e+00h  1
> #  82  3.0005044e+01 1.18e-05 3.94e-02  -1.7 1.05e+00  -1.4 1.00e+00 1.00e+00h  1
> #  83  2.9923910e+01 3.29e-04 1.31e-01  -3.8 2.41e+00  -1.9 9.78e-01 1.00e+00f  1
> #  84  2.9824717e+01 1.28e-03 6.72e-02  -3.8 4.22e+00  -2.4 1.00e+00 1.00e+00f  1
> #  85  2.9775063e+01 1.14e-03 6.38e-02  -3.8 4.16e+00  -2.9 1.00e+00 1.00e+00h  1
> #  86  2.9765715e+01 1.97e-04 1.28e-02  -3.8 1.84e+00  -3.3 1.00e+00 1.00e+00h  1
> #  87  2.9764848e+01 5.09e-06 3.47e-04  -3.8 3.05e-01  -3.8 1.00e+00 1.00e+00h  1
> #  88  2.9764826e+01 9.96e-09 7.29e-07  -5.7 1.42e-02  -4.3 1.00e+00 1.00e+00h  1
> #  89  2.9764826e+01 1.00e-08 6.96e-07  -7.0 4.06e-02  -4.8 1.00e+00 1.00e+00h  1
>
> Number of Iterations....: 89
>
>                                   (scaled)                 (unscaled)
> Objective...............:   2.9663974905339639e+01    2.9764826051444537e+01
> Dual infeasibility......:   6.9609272556087321e-07    6.9845929138329309e-07
> Constraint violation....:   1.7686474507172534e-10    1.7686474507172534e-10
> Complementarity.........:   9.3250541585591684e-08    9.3567573406978388e-08
> Overall NLP error.......:   3.6323737816649029e-07    6.9845929138329309e-07
>
>
> Number of objective function evaluations             = 102
> Number of objective gradient evaluations             = 90
> Number of equality constraint evaluations            = 102
> Number of inequality constraint evaluations          = 102
> Number of equality constraint Jacobian evaluations   = 90
> Number of inequality constraint Jacobian evaluations = 90
> Number of Lagrangian Hessian evaluations             = 89
> Total CPU secs in IPOPT (w/o function evaluations)   =      1.280
> Total CPU secs in NLP function evaluations           =     55.639
>
> EXIT: Optimal Solution Found.
> Finalize Solution
> #Species:
> FreeParameter_1:
> FreeParameter_2:
> x[0]: 44945.8
> x[1]: 1.36255
> x[2]: 2.03613
> x[3]: 11865.1
> x[4]: 632.74
> x[5]: 50
> x[6]: 5382.55
> x[7]: 2.32012
> TimePoints:
>
>
> *** The problem solved in 89 iterations!
>
>
>
>
> __________________________________________________________________________
> Verschicken Sie SMS direkt vom Postfach aus - in alle deutschen und viele
> ausländische Netze zum gleichen Preis!
> https://produkte.web.de/webde_sms/sms
>
>
>
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>
>
>


More information about the Ipopt mailing list