[Ipopt] Stopping criteria

Drosos Kourounis drosos at stanford.edu
Mon Apr 12 14:25:00 EDT 2010


Dear Andreas,

for another test case, I see the following. As you can see the problem has essentially converged at the first 7 decimal digits at iteration # 27, or one could be even satisfied from the 25th iteration. I really do not know how to let IPOPT stop when the relative changes in my objective are less than a threshold and ||d|| has also dropped below some threshold. I do not need inf_du to converge. How can I set the convergence criteria for IPOPT to be based only on the relative changes of my objective and ||d|| ? Is that possible?

Thanks in advance,
   Drosos.
 

******************************************************************************
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.8.1, running with linear solver pardiso.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:       18
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       18
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  2.8714270e+06 0.00e+00 7.86e+03   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  3.9243961e+06 0.00e+00 5.67e+03   3.5 7.43e+03    -  1.49e-02 4.00e-03f  1
   2  3.9620362e+06 0.00e+00 5.46e+03   2.6 3.58e+02    -  1.00e+00 3.33e-03f  1
   3  4.5992098e+06 0.00e+00 9.28e+04   2.1 1.66e+02    -  4.00e-01 4.98e-02f  1
   4  4.6469130e+06 0.00e+00 4.63e+04  -3.0 5.83e+01    -  5.52e-01 2.07e-02f  1
   5  4.8829708e+06 0.00e+00 1.43e+04   3.0 8.43e+01    -  1.00e+00 6.24e-02f  1
   6  4.9248188e+06 0.00e+00 9.55e+03   3.3 2.33e+02    -  4.47e-01 1.05e-01f  1
   7  5.0208268e+06 0.00e+00 1.22e+04   3.0 1.35e+01    -  1.00e+00 7.42e-01f  1
   8  5.0456178e+06 0.00e+00 2.50e+03   2.9 1.62e+00    -  8.87e-01 9.98e-01f  1
   9  5.0520071e+06 0.00e+00 2.83e+03   1.9 1.73e+00    -  1.00e+00 1.00e+00f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10  5.0211695e+06 0.00e+00 6.91e+03   4.1 2.44e+01    -  3.08e-01 1.52e-01f  1
  11  5.0112771e+06 0.00e+00 3.56e+03   3.5 3.70e+00    -  1.00e+00 1.00e+00f  1
  12  5.0297759e+06 0.00e+00 4.10e+03   2.8 1.07e+01    -  1.00e+00 5.17e-01f  1
  13  5.0403445e+06 0.00e+00 1.44e+04   2.1 4.22e+00    -  9.93e-01 5.82e-01f  1
  14  5.0410974e+06 0.00e+00 1.27e+04   1.4 4.60e+00    -  1.33e-01 3.45e-02f  1
  15  5.0509431e+06 0.00e+00 9.47e+02   1.4 1.96e+00    -  1.00e+00 6.82e-01f  1
  16  5.0551972e+06 0.00e+00 7.16e+02   0.7 7.76e-01    -  8.07e-01 8.40e-01f  1
  17  5.0557683e+06 0.00e+00 1.22e+03   0.3 8.15e-01    -  1.00e+00 1.00e+00f  1
  18  5.0555192e+06 0.00e+00 3.22e+02   1.4 1.28e-01    -  9.63e-01 1.00e+00f  1
  19  5.0556192e+06 0.00e+00 2.24e+02   1.3 2.40e-01    -  1.00e+00 1.00e+00f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  20  5.0560854e+06 0.00e+00 1.63e+03   0.6 3.32e+00    -  9.92e-01 1.00e+00f  1
  21  5.0565864e+06 0.00e+00 2.80e+03   0.4 4.26e+01    -  1.00e+00 1.49e-01f  1
  22  5.0566050e+06 0.00e+00 2.45e+03  -0.6 6.95e-01    -  1.00e+00 9.12e-02f  1
  23  5.0566924e+06 0.00e+00 1.64e+03  -1.9 2.27e-02    -  1.00e+00 9.80e-01f  1
  24  5.0567265e+06 0.00e+00 5.92e+02  -3.1 4.05e-02    -  1.00e+00 7.89e-01f  1
  25  5.0567309e+06 0.00e+00 5.59e+02  -4.2 1.45e-02    -  1.00e+00 5.29e-01f  1
  26  5.0567324e+06 0.00e+00 2.03e+02  -4.4 1.35e-01    -  1.00e+00 1.18e-01f  4
  27  5.0567334e+06 0.00e+00 1.67e+02  -4.7 5.40e-03    -  1.00e+00 9.87e-01f  1
  28  5.0567335e+06 0.00e+00 3.25e+02  -5.1 1.11e-02    -  1.00e+00 4.77e-01f  2
  29  5.0567338e+06 0.00e+00 1.25e+02  -6.6 3.55e-03    -  1.00e+00 9.92e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30  5.0567339e+06 0.00e+00 3.90e+01  -8.1 1.06e-03    -  1.00e+00 9.70e-01f  1
  31  5.0567339e+06 0.00e+00 6.64e+01  -9.8 1.32e-03    -  1.00e+00 9.93e-01f  1
In iteration 31, 7 Slacks too small, adjusting variable bounds
  32  5.0567339e+06 0.00e+00 3.84e+01 -11.6 3.79e-04    -  1.00e+00 9.62e-01f  1
In iteration 32, 15 Slacks too small, adjusting variable bounds
  33  5.0567339e+06 0.00e+00 3.83e+01 -13.2 1.52e-04    -  1.00e+00 9.92e-01f  1
In iteration 33, 15 Slacks too small, adjusting variable bounds
  34  5.0567339e+06 0.00e+00 6.62e+01 -14.5 8.12e-03    -  1.00e+00 7.81e-03f  8
In iteration 34, 16 Slacks too small, adjusting variable bounds
  35  5.0567339e+06 0.00e+00 3.82e+01 -15.8 5.35e-05    -  1.00e+00 8.50e-01f  1
In iteration 35, 16 Slacks too small, adjusting variable bounds
  36  5.0567339e+06 0.00e+00 3.82e+01 -17.6 3.01e-05    -  1.00e+00 1.00e+00f  1
In iteration 36, 16 Slacks too small, adjusting variable bounds
  37  5.0567339e+06 0.00e+00 6.61e+01 -18.8 2.24e-02    -  1.00e+00 4.88e-04f 12
In iteration 37, 16 Slacks too small, adjusting variable bounds
  38  5.0567339e+06 0.00e+00 3.82e+01 -20.7 5.01e-05    -  1.00e+00 1.25e-01f  4
In iteration 38, 16 Slacks too small, adjusting variable bounds
  39  5.0567339e+06 0.00e+00 3.82e+01 -20.8 8.42e-06    -  1.00e+00 5.00e-01f  2
In iteration 39, 16 Slacks too small, adjusting variable bounds
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  40  5.0567339e+06 0.00e+00 6.61e+01 -20.8 2.84e-06    -  1.00e+00 5.00e-01f  2
In iteration 40, 16 Slacks too small, adjusting variable bounds
  41  5.0567339e+06 0.00e+00 3.82e+01 -22.7 4.20e-07    -  1.00e+00 2.50e-01f  3
In iteration 41, 16 Slacks too small, adjusting variable bounds
  42  5.0567339e+06 0.00e+00 3.82e+01 -22.8 1.91e-06    -  1.00e+00 1.00e+00f  1
In iteration 42, 16 Slacks too small, adjusting variable bounds
  43  5.0567339e+06 0.00e+00 3.82e+01 -22.8 8.95e-07    -  1.00e+00 1.00e+00f  1
In iteration 43, 16 Slacks too small, adjusting variable bounds
  44  5.0567339e+06 0.00e+00 3.82e+01 -22.8 6.62e-03    -  1.00e+00 7.63e-06f 18
In iteration 44, 16 Slacks too small, adjusting variable bounds
  45  5.0567339e+06 0.00e+00 6.61e+01 -22.8 2.98e-08    -  1.00e+00 3.12e-02f  6
In iteration 45, 16 Slacks too small, adjusting variable bounds
  46  5.0567339e+06 0.00e+00 3.82e+01 -22.8 2.64e-08    -  1.00e+00 1.00e+00f  1
In iteration 46, 16 Slacks too small, adjusting variable bounds
  47  5.0567339e+06 0.00e+00 3.82e+01 -22.8 1.49e-07    -  1.00e+00 3.12e-02f  6
In iteration 47, 16 Slacks too small, adjusting variable bounds
  48  5.0567339e+06 0.00e+00 3.82e+01 -22.8 2.50e-09    -  1.00e+00 5.00e-01f  2
In iteration 48, 16 Slacks too small, adjusting variable bounds
  49  5.0567339e+06 0.00e+00 3.82e+01 -22.8 2.50e-09    -  1.00e+00 1.00e+00f  1
In iteration 49, 16 Slacks too small, adjusting variable bounds
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  50  5.0567339e+06 0.00e+00 6.61e+01 -22.8 5.03e-10    -  1.00e+00 1.00e+00f  1

Number of Iterations....: 50

                                   (scaled)                 (unscaled)
Objective...............:  -5.0567339037239701e+06    5.0567339037239701e+06
Dual infeasibility......:   6.6146365102737036e+01    6.6146365102737036e+01
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.5037586163036707e-23   -1.5037586163036707e-23
Overall NLP error.......:   1.9705007854092584e+00    6.6146365102737036e+01


Number of objective function evaluations             = 156
Number of objective gradient evaluations             = 51
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 0
Total CPU secs in IPOPT (w/o function evaluations)   =      0.320
Total CPU secs in NLP function evaluations           =  39858.891

EXIT: Maximum Number of Iterations Exceeded.



More information about the Ipopt mailing list