[Ipopt] Why is IPOPT deoptimizing my problem?

Morten Bakkedal bakkedal at gmail.com
Thu Nov 22 13:12:27 EST 2018


I'm trying to maximize an objection function subject to some inequality
constraints. I'm puzzled why IPOPT converges nicely towards a maximum in
iteration 6 below, and then consistently decreases the objective function
again, never to reach the previous maximum.

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du
alpha_pr  ls
   0 3.4514596e+000 0.00e+000 1.28e+004  -1.0 0.00e+000    -  0.00e+000
0.00e+000   0 y
   1 4.0733925e+000 1.28e-011 7.98e+003  -1.0 5.36e-005   8.0 1.00e+000
1.00e+000f  1 Nhj
   2 4.5348610e+000 6.86e-011 3.88e+003  -1.0 6.72e-005   7.5 1.00e+000
1.00e+000f  1
   3 4.8755784e+000 3.59e-010 2.14e+003  -1.0 9.81e-005   7.0 1.00e+000
1.00e+000f  1
   4 5.0819253e+000 1.81e-009 1.01e+003  -1.0 1.31e-004   6.6 1.00e+000
1.00e+000f  1
   5 5.1863223e+000 8.85e-009 5.16e+002  -1.0 1.81e-004   6.1 1.00e+000
1.00e+000f  1
   6 5.1984290e+000 3.93e-008 2.38e+002  -1.0 2.20e-004   5.6 1.00e+000
1.00e+000f  1
   7 5.1398073e+000 1.93e-007 1.13e+002  -1.0 2.86e-004   5.1 1.00e+000
1.00e+000f  1
   8 5.0214100e+000 9.48e-007 7.53e+001  -1.0 4.49e-004   4.7 1.00e+000
1.00e+000f  1
   9 4.8496351e+000 4.46e-006 5.11e+001  -1.0 6.82e-004   4.2 1.00e+000
1.00e+000f  1
  10 4.6276959e+000 2.05e-005 3.15e+001  -1.0 9.95e-004   3.7 1.00e+000
1.00e+000f  1
  11 4.3503200e+000 9.00e-005 2.06e+001  -1.0 1.93e-003   3.2 1.00e+000
1.00e+000f  1
  12 3.6612505e+000 2.55e-004 9.30e+001  -1.0 7.12e-002   2.8 6.58e-002
1.00e+000f  1
  13 3.5887529e+000 9.20e-005 3.85e+000  -1.0 9.09e-004   3.2 1.00e+000
1.00e+000h  1
  14 3.4504079e+000 5.40e-004 9.49e+000  -1.0 2.08e-003   2.7 1.00e+000
1.00e+000f  1
  15 3.2575577e+000 3.55e-003 1.56e+001  -1.0 5.36e-003   2.2 1.00e+000
1.00e+000f  1
  16 3.1991365e+000 7.87e-004 1.78e+000  -1.0 2.46e-003   2.6 1.00e+000
1.00e+000h  1
  17 3.1065203e+000 9.52e-003 3.23e+000  -1.0 9.13e-003   2.2 1.00e+000
1.00e+000h  1
  18 3.0739173e+000 1.78e-003 1.46e+000  -1.0 3.69e-003   2.6 1.00e+000
1.00e+000h  1
  19 3.0011247e+000 1.72e-002 3.80e+000  -1.0 1.31e-002   2.1 1.00e+000
1.00e+000h  1
  20 2.9751764e+000 3.29e-003 1.75e+000  -1.0 5.09e-003   2.5 1.00e+000
1.00e+000h  1

As I understand the documentation, inf_pr is the max norm of the constraint
violation. However, according to my log, there is no violations at all in
most of the steps.

The calculated derivatives have been carefully verified by plotting f(x)
and f(x0)+f'(x0)*(x-x0), allowing visual inspection of consistency between
f(x) and f'(x) (and in the same fashion between f'(x) and f''(x)), but the
calculation is particularly challenging for this problem, so I'm not 100%
sure.

I'm I understanding the way IPOPT works incorrectly or where do you suggest
I start debugging my calculations? Derivatives? Scalings? I'm forced to use
a fairly old version of IPOPT if that makes a difference.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20181122/3df61e4f/attachment-0001.html>


More information about the Ipopt mailing list