# [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.

>
> 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).
> ******************************************************************************
>
> 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
>
>
>
```