[Ipopt] Restoration Phase and Scaling

Johannes Maußner pcwql3 at gmail.com
Tue Jul 19 14:55:09 EDT 2016


Hi everyone,

I'm quite new to using IPOPT and optimization in general so I'm sorry in 
advance if this question is trivial.
I'm working on an optimization problem that is constrained by a system 
of coupled partial differential equations
(conservation equations) and I'm using IPOPT through AMPL.

I set up two "versions" of the model. The first one is not scaled and 
for the second one I introduced reference values
to my model to scale the state and decision variables. This scaling is 
done inside AMPL before the problem is send to the solver.

Both models eventually converge to a  feasible point and yield the same 
results. However the scaled model converges faster
and without entering the "restoration phase" whereas the model which is 
not scaled usually enters the restoration phase at some
point (example below).
My question is what exactly happens during the "restoration phase" and what
triggers this restoration phase? As far as I understand it, during this 
phase IPOPT tries to minimize the infeasiblity. Is this correct?

Below is the solver log for an optimization using the unscaled model. Up 
to the 10th iteration it looks quite good and the
objective is near the optimal point but then it gets into the 
restoration phase. It takes about 100 iterations before the solver exits 
this phase and
then converges to the optimal point.
I don't quite understand why this restoration phase happens.

I'll be using the scaled model anyway but I'm just curious as to why 
this restoration phase happens and what it means exactly.
I'm very grateful for any help!

Thanks a lot,
Johannes


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear 
optimization.
  Ipopt is released as open source code under the Eclipse Public License 
(EPL).
          For more information visit http://projects.coin-or.org/Ipopt
******************************************************************************

This is Ipopt version 3.11, running with linear solver ma97.

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

Total number of variables............................:   107603
                      variables with only lower bounds:        0
                 variables with lower and upper bounds:   107603
                      variables with only upper bounds:        0
Total number of equality constraints.................:   107602
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 -5.0000000e-01 4.11e-01 2.63e-03  -1.0 0.00e+00    -  0.00e+00 
0.00e+00   0
    1 -4.3846879e-01 9.64e+00 5.37e+05  -1.0 4.02e+04    -  1.21e-01 
4.82e-01f  1
    2 -4.6909814e-01 1.69e+01 9.73e+05  -1.0 2.46e+06    -  2.47e-01 
6.28e-02h  1
    3 -7.5397593e-01 1.44e+01 2.03e+07  -1.0 3.07e+04    -  3.16e-04 
8.36e-01h  1
    4 -8.1497281e-01 1.11e+01 1.08e+07  -1.0 1.69e+02    -  5.58e-01 
7.76e-01f  1
    5 -8.2927768e-01 1.35e+00 5.55e+07  -1.0 7.61e+01    -  1.89e-02 
1.00e+00h  1
    6 -8.2850533e-01 6.57e-01 1.02e+07  -1.0 4.61e+01    -  9.73e-01 
1.00e+00h  1
    7 -8.2842382e-01 3.97e-04 5.32e+04  -1.0 2.72e+00    -  9.74e-01 
1.00e+00h  1
    8 -8.2842114e-01 4.50e-06 6.24e+00  -1.0 1.48e+02    -  5.49e-01 
1.00e+00f  1
    9 -8.2798948e-01 4.06e+00 8.42e+01  -1.0 2.70e+04    -  1.20e-02 
1.00e+00f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
   10 -8.2798511e-01 3.58e-05 2.41e-02  -1.0 3.89e+01  -4.0 1.00e+00 
1.00e+00h  1
   11r-8.2798511e-01 3.58e-05 1.00e+03  -2.5 0.00e+00  -1.8 0.00e+00 
3.29e-07R 20
   12r-8.2427337e-01 2.02e-02 1.45e+01  -2.5 3.35e+01    -  9.86e-01 
1.00e+00f  1
   13r-8.4615859e-01 5.21e-01 9.48e+02  -2.5 1.45e+02    -  8.05e-02 
2.17e-01f  1
   14r-9.3201299e-01 4.07e+00 9.60e+02  -2.5 9.10e+01    -  3.58e-01 
7.73e-01f  1
   15r-9.9932014e-01 2.43e+00 6.60e+02  -2.5 4.79e+02    -  1.74e-01 
4.41e-01f  1
   16r-9.9999321e-01 2.41e+00 6.20e+02  -2.5 4.12e+02    -  2.83e-01 
9.03e-03f  1
   17r-9.9903424e-01 1.93e+00 7.56e+02  -2.5 5.54e+02    -  4.29e-02 
7.48e-01f  1
   18r-9.9999035e-01 1.85e+00 6.12e+02  -2.5 8.06e+02    -  1.03e-01 
6.82e-02f  1
   19r-9.9995604e-01 2.94e+00 9.92e+02  -2.5 2.01e+03    -  2.71e-02 
1.19e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
   20r-9.9995125e-01 3.65e+00 1.05e+03  -2.5 1.46e+03    -  9.20e-02 
1.61e-01f  1
   21r-9.9994689e-01 3.53e+00 1.03e+03  -2.5 9.84e+02    -  1.72e-02 
4.85e-02f  1
   22r-9.9990940e-01 2.93e+00 7.50e+02  -2.5 4.66e+02    -  1.32e-01 
3.46e-01f  1
   23r-9.9990066e-01 2.53e+00 6.44e+02  -2.5 1.93e+01    -  2.45e-01 
1.36e-01f  1
   24r-9.9989093e-01 1.90e+00 4.81e+02  -2.5 7.07e+01    -  2.78e-01 
2.53e-01f  1
   25r-9.9989589e-01 1.50e+00 3.74e+02  -2.5 2.01e+02    -  2.88e-01 
2.22e-01f  1
   26r-9.9991351e-01 1.20e+00 2.93e+02  -2.5 2.75e+02    -  2.09e-01 
2.17e-01f  1
   27r-9.9992750e-01 9.07e-01 2.19e+02  -2.5 1.59e+02    -  2.52e-01 
2.51e-01f  1
   28r-9.9993996e-01 5.20e-01 1.27e+02  -2.5 1.09e+02    -  6.11e-01 
4.28e-01f  1
   29r-9.9994310e-01 3.53e-01 1.08e+02  -2.5 8.72e+01    -  1.00e+00 
3.22e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
   30r-9.9994871e-01 8.54e-02 5.93e-01  -2.5 6.66e+01    -  1.00e+00 
1.00e+00f  1
   31r-9.9994896e-01 8.62e-02 8.31e-03  -2.5 7.03e+00    -  1.00e+00 
1.00e+00h  1
   32r-9.9994500e-01 9.46e-02 4.33e+01  -3.8 7.14e+02    -  1.53e-01 
1.99e-01f  1
   33r-9.9994274e-01 9.96e-02 8.49e+01  -3.8 6.37e+00  -4.0 3.91e-02 
1.19e-01f  1
   34r-9.9993803e-01 1.04e-01 7.44e+01  -3.8 8.17e+00  -4.5 1.46e-01 
1.49e-01f  1
   35r-9.9993331e-01 1.08e-01 7.80e+01  -3.8 1.30e+01  -5.0 6.43e-02 
8.38e-02f  1
   36r-9.9992902e-01 1.09e-01 7.38e+01  -3.8 5.61e+02    -  5.24e-02 
5.97e-02f  1
   37r-9.9992510e-01 1.12e-01 7.34e+01  -3.8 2.91e+01  -5.4 4.37e-02 
4.84e-02f  1
   38r-9.9992222e-01 1.15e-01 7.19e+01  -3.8 2.34e+01  -5.0 4.73e-02 
5.09e-02f  1
   39r-9.9992017e-01 1.17e-01 6.98e+01  -3.8 1.79e+02  -5.5 2.08e-02 
1.99e-02f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
   40r-9.9991818e-01 1.19e-01 6.22e+01  -3.8 3.36e+01  -5.1 4.60e-02 
3.82e-02f  1
   41r-9.9991883e-01 1.21e-01 5.75e+01  -3.8 2.73e+01  -4.6 5.58e-02 
5.03e-02f  1
   42r-9.9991870e-01 1.21e-01 9.91e+01  -3.8 2.69e+02  -5.1 7.33e-03 
1.18e-03f  1
   43r-9.9992016e-01 1.21e-01 9.72e+01  -3.8 3.35e+01  -4.7 4.93e-02 
2.71e-02f  1
   44r-9.9992081e-01 1.18e-01 9.79e+01  -3.8 8.44e+01  -5.2 1.99e-02 
1.87e-02f  1
   45r-9.9992199e-01 2.05e-01 9.23e+01  -3.8 5.94e+01  -4.7 4.23e-02 
4.52e-02f  1
   46r-9.9992105e-01 2.41e-01 8.50e+01  -3.8 7.10e+01  -4.3 1.11e-02 
2.66e-02f  1
   47r-9.9992147e-01 2.42e-01 8.73e+01  -3.8 5.32e+01  -3.9 3.42e-02 
1.06e-02f  1
   48r-9.9992499e-01 2.36e-01 1.46e+02  -3.8 1.51e+01  -3.5 1.71e-01 
5.89e-02f  1
   49r-9.9992585e-01 2.39e-01 2.31e+02  -3.8 6.04e+01  -3.9 4.22e-02 
1.29e-02f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
   50r-9.9993494e-01 2.58e-01 1.60e+02  -3.8 1.56e+01  -3.5 1.05e-01 
1.52e-01f  1
   51r-9.9993546e-01 3.19e-01 1.07e+02  -3.8 4.39e+02  -4.0 2.75e-03 
5.88e-03f  1
   52r-9.9993813e-01 3.75e-01 1.06e+02  -3.8 5.83e+01  -3.6 5.25e-02 
5.02e-02f  1
   53r-9.9993971e-01 3.66e-01 3.31e+02  -3.8 2.05e+01  -3.1 2.47e-01 
3.31e-02f  1
   54r-9.9994004e-01 3.73e-01 5.10e+02  -3.8 1.79e+02  -3.6 2.99e-02 
6.07e-03f  1
   55r-9.9994232e-01 3.60e-01 5.55e+02  -3.8 1.77e+01  -3.2 1.61e-01 
4.92e-02f  1
   56r-9.9994296e-01 3.85e-01 5.56e+02  -3.8 1.54e+02  -3.7 1.60e-02 
1.32e-02f  1
   57r-9.9994512e-01 3.75e-01 5.22e+02  -3.8 2.37e+01  -3.2 2.92e-02 
4.95e-02f  1
   58r-9.9994505e-01 3.75e-01 5.35e+02  -3.8 4.31e+02  -3.7 7.38e-03 
4.67e-04f  1
   59r-9.9994680e-01 3.65e-01 4.92e+02  -3.8 2.19e+01  -3.3 7.98e-02 
7.96e-02f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
   60r-9.9994616e-01 3.71e-01 4.88e+02  -3.8 5.17e+02  -3.8 4.36e-03 
1.84e-03f  1
   61r-9.9994614e-01 3.67e-01 5.53e+02  -3.8 2.46e+01  -3.3 1.20e-01 
9.54e-03f  1
   62r-9.9994338e-01 3.76e-01 6.00e+02  -3.8 1.09e+02  -3.8 2.50e-02 
1.34e-02f  1
   63r-9.9994131e-01 3.62e-01 6.55e+02  -3.8 2.08e+01  -3.4 1.85e-01 
6.57e-02f  1
   64r-9.9993836e-01 3.62e-01 6.51e+02  -3.8 6.48e+01  -3.9 1.47e-02 
1.27e-02f  1
   65r-9.9993423e-01 3.50e-01 6.14e+02  -3.8 2.19e+01  -3.4 5.80e-02 
5.73e-02f  1
   66r-9.9992087e-01 3.80e-01 5.83e+02  -3.8 7.47e+01  -3.9 3.31e-02 
3.71e-02f  1
   67r-9.9990091e-01 4.16e-01 5.64e+02  -3.8 3.72e+02  -4.4 4.91e-03 
7.29e-03f  1
   68r-9.9987230e-01 4.43e-01 5.25e+02  -3.8 6.51e+01  -4.0 3.35e-02 
4.63e-02f  1
   69r-9.9985833e-01 4.47e-01 5.30e+02  -3.8 4.13e+02  -4.4 3.63e-03 
2.39e-03f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
   70r-9.9983957e-01 4.46e-01 5.33e+02  -3.8 7.49e+01  -4.0 3.36e-02 
1.62e-02f  1
   71r-9.9982788e-01 4.34e-01 4.87e+02  -3.8 2.08e+01  -3.6 1.91e-01 
3.11e-02f  1
   72r-9.9961339e-01 5.12e-01 4.49e+02  -3.8 1.08e+02  -4.1 2.44e-02 
4.26e-02f  1
   73r-9.9888965e-01 4.92e-01 4.21e+02  -3.8 2.83e+01  -3.6 4.49e-02 
8.24e-02f  1
   74r-9.9594603e-01 4.82e-01 3.76e+02  -3.8 1.03e+01  -3.2 1.07e-01 
2.10e-02f  1
   75r-9.8563504e-01 4.74e-01 3.72e+02  -3.8 3.30e+01  -3.7 7.35e-03 
1.85e-02f  1
   76r-9.6602124e-01 4.78e-01 4.24e+02  -3.8 1.62e+03  -4.2 3.99e-03 
6.00e-04f  1
   77r-9.1967458e-01 4.73e-01 3.95e+02  -3.8 4.25e+01  -3.7 8.24e-02 
5.53e-02f  1
   78r-9.1347771e-01 4.73e-01 3.93e+02  -3.8 5.10e+03    -  4.36e-03 
2.83e-03f  1
   79r-9.1206077e-01 4.71e-01 3.84e+02  -3.8 3.21e+03    -  1.32e-02 
2.88e-03f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
   80r-9.0883354e-01 4.71e-01 3.81e+02  -3.8 4.04e+03    -  5.93e-03 
5.70e-03f  1
   81r-8.9924039e-01 5.07e-01 3.85e+02  -3.8 8.49e+01  -4.2 2.01e-02 
4.63e-02f  1
   82r-8.9828197e-01 5.02e-01 3.23e+02  -3.8 4.95e+01  -3.8 1.23e-01 
1.59e-02f  1
   83r-8.9776639e-01 5.02e-01 3.48e+02  -3.8 5.53e+02  -4.3 1.03e-02 
1.10e-03f  1
   84r-8.9102397e-01 4.86e-01 3.29e+02  -3.8 1.85e+03    -  1.99e-01 
5.14e-02f  1
   85r-8.6864981e-01 4.71e-01 2.99e+02  -3.8 1.49e+03    -  3.67e-01 
2.39e-01f  1
   86r-8.5214696e-01 4.41e-01 1.77e+02  -3.8 9.53e+02    -  2.36e-01 
3.32e-01f  1
   87r-8.4226320e-01 3.87e-01 1.39e+02  -3.8 6.26e+02    -  1.96e-01 
2.83e-01f  1
   88r-8.3979619e-01 3.56e-01 1.31e+02  -3.8 4.66e+02    -  3.50e-01 
9.65e-02f  1
   89r-8.3774544e-01 3.21e-01 2.46e+02  -3.8 4.44e+02    -  7.62e-01 
1.14e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
   90r-8.3200491e-01 2.37e-01 1.38e+02  -3.8 4.13e+02    -  6.65e-01 
5.43e-01f  1
   91r-8.2901673e-01 1.40e-01 8.35e+01  -3.8 2.02e+02    -  1.00e+00 
5.38e-01f  1
   92r-8.2921460e-01 1.06e-01 1.14e+02  -3.8 1.00e+02    -  1.00e+00 
2.51e-01h  1
   93r-8.2955368e-01 5.54e-02 5.91e+01  -3.8 7.36e+01    -  1.00e+00 
4.92e-01h  1
   94r-8.2990577e-01 1.95e-03 2.20e-02  -3.8 3.68e+01    -  1.00e+00 
1.00e+00h  1
   95r-8.2990498e-01 3.82e-05 5.43e-06  -3.8 1.45e-01    -  1.00e+00 
1.00e+00h  1
   96r-8.2931348e-01 6.84e-03 5.34e+02  -5.7 8.20e+01    -  8.92e-01 
1.11e-01f  1
   97r-8.2720401e-01 1.11e-02 2.26e+02  -5.7 2.67e+00  -4.8 1.00e+00 
7.23e-01f  1
   98r-8.2773815e-01 3.23e-01 7.18e+00  -5.7 2.49e+02    -  1.00e+00 
9.71e-01f  1
   99r-8.2797426e-01 8.68e-02 3.62e+00  -5.7 5.57e+01    -  1.00e+00 
7.86e-01h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
  100r-8.2792610e-01 1.55e-03 4.01e-03  -5.7 8.59e+01    -  1.00e+00 
1.00e+00h  1
  101r-8.2806412e-01 2.67e-03 1.13e+03  -5.7 1.05e+05    -  9.30e-01 
2.33e-01H  1
  102r-8.2805242e-01 2.43e-03 1.03e+02  -5.7 1.86e-01  -4.8 1.00e+00 
9.12e-02h  1
  103r-8.2798281e-01 2.89e-05 1.20e-03  -5.7 1.18e+02    -  1.00e+00 
1.00e+00f  1
  104 -8.1217919e-01 2.06e+02 1.63e+02  -2.5 1.40e+06    -  1.96e-02 
6.94e-01f  1
  105 -8.0621917e-01 1.28e+02 6.38e+01  -2.5 7.20e+03    -  7.75e-01 
3.81e-01f  1
  106 -8.0017436e-01 8.01e-01 5.37e+01  -2.5 2.12e+03    -  1.00e+00 
1.00e+00f  1
  107 -8.0136084e-01 1.58e-02 8.12e-02  -2.5 2.08e+03    -  1.00e+00 
1.00e+00h  1
  108 -8.0135849e-01 3.90e-05 3.86e-05  -2.5 2.16e+01    -  1.00e+00 
1.00e+00h  1
  109 -8.0135849e-01 1.46e-09 1.61e-04  -3.8 5.54e-03    -  1.00e+00 
1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
  110 -8.0135849e-01 1.44e-09 1.77e-06  -5.7 1.33e-01    -  1.00e+00 
1.00e+00h  1
  111 -8.0135973e-01 3.27e-07 4.83e-02  -8.6 2.41e+01    -  4.53e-01 
1.00e+00h  1
  112 -8.0135973e-01 1.53e-09 5.13e-08  -8.6 9.02e-06  -2.2 1.00e+00 
1.00e+00h  1
  113 -8.0321124e-01 2.12e+01 1.84e-04  -8.6 3.61e+04    -  1.22e-03 
1.00e+00f  1
  114 -8.0931322e-01 7.45e+01 4.34e-01  -8.6 1.30e+05    -  1.00e+00 
1.00e+00h  1
  115 -8.0856770e-01 5.34e-03 8.63e+00  -8.6 3.53e+00  -2.7 1.00e+00 
1.00e+00h  1
  116 -8.0860260e-01 4.13e-05 2.56e-01  -8.6 2.15e+02    -  1.00e+00 
1.00e+00h  1
  117 -8.2395907e-01 1.90e+02 7.36e-01  -8.6 4.12e+05    -  4.05e-01 
1.00e+00h  1
  118 -8.1858118e-01 3.06e-01 4.15e+02  -8.6 2.31e+01  -3.2 1.00e+00 
1.00e+00h  1
  119 -8.2020723e-01 6.29e-02 1.56e+02  -8.6 1.18e+04    -  1.00e+00 
1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
  120 -8.2025508e-01 1.71e-03 5.62e-01  -8.6 2.11e+03    -  1.00e+00 
1.00e+00h  1
  121 -8.2300225e-01 3.34e+01 2.92e-02  -8.6 1.20e+05    -  1.00e+00 
1.00e+00h  1
  122 -8.2939602e-01 6.56e+01 2.73e-02  -8.6 2.15e+06    -  3.25e-01 
1.45e-01h  1
  123 -8.2655374e-01 1.52e+01 1.80e-03  -8.6 1.03e+05    -  1.00e+00 
1.00e+00h  1
  124 -8.2731976e-01 1.55e+00 2.75e-01  -8.6 3.44e+04    -  1.00e+00 
1.00e+00h  1
  125 -8.2731059e-01 5.22e-06 2.03e-03  -8.6 2.37e-02  -3.7 1.00e+00 
1.00e+00h  1
  126 -8.2780233e-01 4.17e-01 1.93e-02  -8.6 2.94e+04    -  1.00e+00 
1.00e+00h  1
  127 -8.2779746e-01 1.08e-06 3.29e-04  -8.6 2.03e-02  -4.2 1.00e+00 
1.00e+00h  1
  128 -8.2842776e-01 7.94e-01 7.13e-03  -8.6 1.04e+05    -  1.00e+00 
3.74e-01h  1
  129 -8.2825699e-01 1.14e+00 3.50e-03  -8.6 1.06e+04    -  1.00e+00 
1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
  130 -8.2841645e-01 5.95e-01 6.99e-06  -8.6 9.92e+03    -  1.00e+00 
1.00e+00h  1
  131 -8.2842603e-01 1.01e-04 3.94e-08  -8.6 6.30e+02    -  1.00e+00 
1.00e+00h  1
  132 -8.2842603e-01 1.02e-09 4.36e-12  -8.6 2.40e-02    -  1.00e+00 
1.00e+00h  1

Number of Iterations....: 132

                                    (scaled) (unscaled)
Objective...............:  -8.2842602716908775e-01 -8.2842602716908775e-01
Dual infeasibility......:   4.3639707279903634e-12 4.3639707279903634e-12
Constraint violation....:   2.9491946928281799e-11 1.0161187447010889e-09
Complementarity.........:   2.5059035596805626e-09 2.5059035596805626e-09
Overall NLP error.......:   2.5059035596805626e-09 2.5059035596805626e-09


Number of objective function evaluations             = 156
Number of objective gradient evaluations             = 42
Number of equality constraint evaluations            = 156
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 134
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 132
Total CPU secs in IPOPT (w/o function evaluations)   =   2342.303
Total CPU secs in NLP function evaluations           =    235.838

EXIT: Optimal Solution Found.

Ipopt 3.11: Optimal Solution Found


More information about the Ipopt mailing list