[Ipopt] Multiple line searches and watchdog technique

Stefan Vigerske stefan at math.hu-berlin.de
Wed Jun 11 12:48:35 EDT 2014


Hi,

from the log, it seems that Ipopt isn't able to compute an accurate 
enough dual solution. There seems to be quite a good improvement in the 
beginning and then it just stalls with a dual infeasiblity of e-2.
This could be caused by using only an Hessian approximation.

You could play with the acceptable_tol and related options to make Ipopt 
stop when it does not make a reasonable progress for a number of iterations:
http://www.coin-or.org/Ipopt/documentation/node41.html#SECTION000112070000000000000

Best,
Stefan

On 06/10/2014 08:42 PM, Udit Gupta wrote:
> Hello everyone,
>
> I am using IpOpt to optimize a problem with 5 decision variables. My
> run involves using all 5 variables (relaxing all variables
> simultaneously). IpOpt terminates due to exceeding the maximum number
> of iterations (default value of 3000). NLP functions are being
> evaluated using a DAE solver.
> My options defined in Ipopt are:
> app->Options()->SetNumericValue("tol", 1e-6);
> app->Options()->SetStringValue("nlp_scaling_method", "none");
> app->Options()->SetNumericValue("bound_relax_factor", 0);
> app->Options()->SetStringValue("mu_strategy", "adaptive");
> app->Options()->SetStringValue("hessian_approximation", "limited-memory");
>
> 1) Are there options to terminate at a much lower iteration number?
> 2) Can we avoid the numerous iterations being performed again and again?
> 3) If max iterations is a way to go about it, then how do u define a
> good enough max no. of iterations?
>
> What i believe watchdog technique does is try to find another
> direction/step size by going back a few iterations (when its not able
> to achieve the required tol). Can someone clarify that?
> Disabling watchdog technique makes the iterations run with multiple
> line searches without any difference in objective function value.
>
>
> Results in output file:
>
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>     0  8.3677080e+08 0.00e+00 1.96e+09   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
>     1  6.3697838e+02 0.00e+00 7.25e+08   5.8 1.23e+09    -  1.00e+00 1.37e-09f  1
>     2  8.1262341e+02 0.00e+00 7.17e+06   6.2 2.36e-03    -  9.94e-01 1.00e+00f  1
>     3  1.6924121e+05 0.00e+00 2.06e+06   6.1 1.56e-01    -  1.00e+00 1.00e+00f  1
>     4  3.8691564e+04 0.00e+00 7.10e+05   5.4 7.01e-02    -  1.00e+00 1.00e+00f  1
>     5  2.8027366e+04 0.00e+00 1.47e+05   4.7 1.21e-02    -  1.00e+00 1.00e+00f  1
>     6  1.1195488e+04 0.00e+00 1.22e+05   4.0 2.88e-02    -  1.00e+00 1.00e+00f  1
>     7  4.1163184e+03 0.00e+00 9.06e+04   3.3 2.25e-02    -  1.00e+00 1.00e+00f  1
>     8  1.1850844e+03 0.00e+00 3.77e+04   2.6 1.82e-02    -  1.00e+00 1.00e+00f  1
>     9  3.9281126e+02 0.00e+00 9.58e+03   1.9 1.08e-02    -  1.00e+00 1.00e+00f  1
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>    10  2.3981283e+02 0.00e+00 1.43e+03   0.1 5.21e-03    -  1.00e+00 1.00e+00f  1
>    11  2.1886735e+02 0.00e+00 1.56e+02  -0.8 2.13e-03    -  1.00e+00 1.00e+00f  1
>    12  2.1721272e+02 0.00e+00 1.34e+01  -1.4 6.94e-04    -  1.00e+00 1.00e+00f  1
>    13  2.1718379e+02 0.00e+00 4.81e-01  -2.4 1.02e-04    -  1.00e+00 1.00e+00f  1
>    14  2.1718374e+02 0.00e+00 2.28e-02  -3.3 2.53e-06    -  9.99e-01 1.00e+00f  1
>    15  2.1718374e+02 0.00e+00 1.29e-01  -5.2 2.35e-08    -  1.00e+00 4.88e-04f 12
>    16  2.1718373e+02 0.00e+00 2.28e-02  -5.3 2.46e-08    -  1.00e+00 1.00e+00f  1
>    17  2.1718373e+02 0.00e+00 2.28e-02  -7.1 3.92e-09    -  1.00e+00 1.00e+00f  1
>    18  2.1718373e+02 0.00e+00 2.28e-02  -9.0 4.96e-08    -  1.00e+00 2.98e-08f 26
>    19  2.1718372e+02 0.00e+00 2.28e-02  -9.1 5.03e-08    -  1.00e+00 3.73e-09f 29
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>    20  2.1718369e+02 0.00e+00 2.28e-02 -11.0 4.96e-08    -  1.00e+00 7.81e-03f  8
>    21  2.1718369e+02 0.00e+00 2.28e-02 -11.0 2.28e-02    -  1.00e+00 1.73e-17f 55
>    22  2.1718369e+02 0.00e+00 2.28e-02 -10.9 2.28e-02    -  1.00e+00 1.75e-17f 55
>    23  2.1718369e+02 0.00e+00 2.28e-02 -10.9 2.28e-02    -  1.00e+00 1.75e-17f 55
>    24  2.1718369e+02 0.00e+00 2.28e-02 -10.9 2.28e-02    -  1.00e+00 1.75e-17f 55
>    25  2.1718369e+02 0.00e+00 2.28e-02 -10.9 2.28e-02    -  1.00e+00 1.75e-17f 55
>    26  2.1718369e+02 0.00e+00 2.28e-02 -10.9 2.28e-02    -  1.00e+00 1.75e-17f 55
>    27  2.1718369e+02 0.00e+00 2.28e-02 -10.9 2.28e-02    -  1.00e+00 1.75e-17f 55
>    28  2.1718369e+02 0.00e+00 2.28e-02 -10.9 2.28e-02    -  1.00e+00 1.75e-17f 55
>    29  2.1718369e+02 0.00e+00 2.28e-02 -10.9 2.28e-02    -  1.00e+00 1.76e-17f 55
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>    30  2.1718369e+02 0.00e+00 7.78e-02 -10.9 2.28e-02    -  1.00e+00 1.23e-06f 19
>    31  2.1718368e+02 0.00e+00 9.88e-02  -7.8 4.58e-08    -  1.00e+00 1.19e-07f 24
>    32  2.1718368e+02 0.00e+00 9.88e-02  -9.6 3.92e-08    -  1.00e+00 2.91e-11f 36
>    33  2.1718368e+02 0.00e+00 9.88e-02  -9.7 3.92e-08    -  1.00e+00 2.91e-11f 36
>    34  2.1718368e+02 0.00e+00 9.88e-02  -9.7 9.88e-02    -  4.54e-02 3.47e-18f 59
>    35  2.1718367e+02 0.00e+00 9.24e-02  -9.7 9.88e-02    -  1.00e+00 2.91e-11f 36
>    36  2.1718367e+02 0.00e+00 9.24e-02 -11.0 2.52e-10    -  1.00e+00 7.45e-09f 28
>    37  2.1718367e+02 0.00e+00 9.24e-02 -11.0 2.52e-10    -  1.00e+00 7.45e-09f 28
>    38  2.1718367e+02 0.00e+00 9.24e-02 -11.0 2.52e-10    -  1.00e+00 7.45e-09f 28
>    39  2.1718367e+02 0.00e+00 9.24e-02 -11.0 9.24e-02    -  4.85e-02 3.47e-18f 59
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>    40  2.1718367e+02 0.00e+00 9.24e-02 -11.0 9.24e-02    -  1.00e+00 3.47e-18f 59
>    41  2.1718367e+02 0.00e+00 9.24e-02 -11.0 9.24e-02    -  4.85e-02 3.47e-18f 59
>    42  2.1718367e+02 0.00e+00 9.24e-02 -11.0 9.24e-02    -  1.00e+00 3.47e-18f 59
>    43  2.1718367e+02 0.00e+00 9.24e-02 -11.0 9.24e-02    -  4.85e-02 3.47e-18f 59
>    44  2.1718367e+02 0.00e+00 9.24e-02 -11.0 9.24e-02    -  1.00e+00 3.47e-18f 59
>    45  2.1718367e+02 0.00e+00 9.24e-02 -11.0 9.24e-02    -  4.85e-02 3.47e-18f 59
>    46  3.1327508e+04 0.00e+00 8.44e+05 -11.0 9.24e-02    -  1.00e+00 1.00e+00w  1
>    47  2.1718377e+02 0.00e+00 2.36e-02 -11.0 9.24e-02    -  1.00e+00 1.00e+00w  1
>    48  2.1718377e+02 0.00e+00 2.28e-02 -11.0 3.60e-09    -  1.00e+00 1.00e+00w  1
>    49  2.1718367e+02 0.00e+00 9.24e-02 -11.0 2.35e-08    -  1.00e+00 3.47e-18f 58
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>    50  2.1718365e+02 0.00e+00 8.66e-02 -11.0 2.06e-08    -  1.00e+00 7.45e-09f 28
>    51  2.1718365e+02 0.00e+00 8.66e-02 -11.0 2.00e-08    -  1.00e+00 1.46e-11f 37
>    52  2.1718365e+02 0.00e+00 8.66e-02 -11.0 2.00e-08    -  1.00e+00 1.46e-11f 37
>    53  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  5.18e-02 3.47e-18f 59
>    54  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  1.00e+00 3.47e-18f 59
>    55  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  5.18e-02 3.47e-18f 59
>    56  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  1.00e+00 3.47e-18f 59
>    57  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  5.18e-02 3.47e-18f 59
>    58  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  1.00e+00 3.47e-18f 59
>    59  2.6655835e+04 0.00e+00 7.52e+05 -11.0 8.66e-02    -  5.18e-02 1.00e+00w  1
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>    60  2.1718377e+02 0.00e+00 2.86e-02 -11.0 8.66e-02    -  1.00e+00 1.00e+00w  1
>
>
> .
> .
> .
>
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
> 2980  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  5.18e-02 3.47e-18f 59
> 2981  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  1.00e+00 3.47e-18f 59
> 2982  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  5.18e-02 3.47e-18f 59
> 2983  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  1.00e+00 3.47e-18f 59
> 2984  2.6655835e+04 0.00e+00 7.52e+05 -11.0 8.66e-02    -  5.18e-02 1.00e+00w  1
> 2985  2.1718377e+02 0.00e+00 2.86e-02 -11.0 8.66e-02    -  1.00e+00 1.00e+00w  1
> 2986  2.1718377e+02 0.00e+00 2.28e-02 -11.0 4.06e-09    -  1.00e+00 1.00e+00w  1
> 2987  2.1718365e+02 0.00e+00 8.66e-02 -11.0 1.86e-08    -  5.18e-02 3.47e-18f 58
> 2988  2.1718365e+02 0.00e+00 8.66e-02 -11.0 2.18e-08    -  1.00e+00 1.46e-11f 37
> 2989  2.1718365e+02 0.00e+00 8.66e-02 -11.0 2.18e-08    -  1.00e+00 1.46e-11f 37
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
> 2990  2.1718365e+02 0.00e+00 8.66e-02 -11.0 2.18e-08    -  1.00e+00 1.46e-11f 37
> 2991  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  5.18e-02 3.47e-18f 59
> 2992  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  1.00e+00 3.47e-18f 59
> 2993  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  5.18e-02 3.47e-18f 59
> 2994  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  1.00e+00 3.47e-18f 59
> 2995  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  5.18e-02 3.47e-18f 59
> 2996  2.1718365e+02 0.00e+00 8.66e-02 -11.0 8.66e-02    -  1.00e+00 3.47e-18f 59
> 2997  2.6655835e+04 0.00e+00 7.52e+05 -11.0 8.66e-02    -  5.18e-02 1.00e+00w  1
> 2998  2.1718377e+02 0.00e+00 2.86e-02 -11.0 8.66e-02    -  1.00e+00 1.00e+00w  1
> 2999  2.1718377e+02 0.00e+00 2.28e-02 -11.0 4.06e-09    -  1.00e+00 1.00e+00w  1
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
> 3000  2.1718365e+02 0.00e+00 8.66e-02 -11.0 1.86e-08    -  5.18e-02 3.47e-18f 58
>
> Number of Iterations....: 3000
>
>                                     (scaled)                 (unscaled)
> Objective...............:   2.1718364863496677e+02    2.1718364863496677e+02
> Dual infeasibility......:   8.6569834245914024e-02    8.6569834245914024e-02
> Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
> Complementarity.........:   1.0000000000001348e-11    1.0000000000001348e-11
> Overall NLP error.......:   8.6569834245914024e-02    8.6569834245914024e-02
>
>
> Number of objective function evaluations             = 129264
> Number of objective gradient evaluations             = 3001
> 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)   =      2.926
> Total CPU secs in NLP function evaluations           =    993.140
>
> EXIT: Maximum Number of Iterations Exceeded.
>
> Thank You
>
> Regards
> Udit
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>



More information about the Ipopt mailing list