[Ipopt] don't satisfy stop conditions (urgent)

Andreas Waechter awaechter.iems at gmail.com
Mon May 14 22:00:04 EDT 2012


Hello Juan,

Maybe the following works:

acceptable_tol 1e-4
acceptable_obj_change_tol 1e-4

The issue with your setting is that you are asking the tolerance to be 
less than 1e-5 for at least 10 iterations, but it stays under this 
threshold only for fewer iterations.

If you set print_level to at least 7, you can see the precise values 
that are used in each iteration to determine if Ipopt should terminate 
(look for "Convergence Check" and "Acceptable Check" in the output).  
This might help you to find good tolerances.

Also note that your objective function is changing a lot in iteration 25 
when the barrier parameter is changed from 10^(-5.7) to 10^(-7.0).  This 
might suggest that your objective function is "underscaled."  Try to see 
what happens if you use obj_scaling_factor to scale it up (e.g., try 100 
or so).  In case you do this, the resulting change in the problem 
scaling will probably mean that you need to adapt your termination 
tolerances.

Hope this helps,

Andreas

Andreas Waechter

Associate Professor
Department of Industrial Engineering and Management Sciences
McCormick School of Engineering
Northwestern University
Evanston, IL 60208
USA


On 05/14/2012 02:18 AM, Juan Carlos Lopez Alfonso wrote:
> Dear Professor Andreas Waechter:
>
> Thank you for your last email, where I have made a mistake, but in any
> case I have read the description of the acceptable_* tolerances in
> details. My problem is the follows and I have tried to solve it without lucky:
>
> I am using pardiso and a big problem with more than 300 000 variables,
> so I need to control the computing time, but I cant do it. For Example
> I am sure that the implementation of the hessian and gradients are
> correct and I have changed the following options:
>
> List of user-set options:
>
>                                      Name   Value                used
>                           acceptable_iter = 10                 yes
>                            acceptable_tol = 1e-05            yes
>                                  max_iter = 1000                yes
>                        print_user_options = yes              yes
>                                       tol = 1e-06                    yes
>
> How you can see on the iterations of the algorithm, the change of the
> objetive function is very small, and the algorithm don't stop. Please,
> could you give me some ideas and suggestions?
>
> Thank you in advance and all the best
> Juan Carlos
>
>
> List of user-set options:
>
>                                      Name   Value                used
>                           acceptable_iter = 10                    yes
>                            acceptable_tol = 1e-05                 yes
>                                  max_iter = 1000                  yes
>                        print_user_options = yes                   yes
>                                       tol = 1e-06                 yes
>
> ******************************************************************************
> 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.10.1, running with linear solver pardiso.
>
> Number of nonzeros in equality constraint Jacobian...:        0
> Number of nonzeros in inequality constraint Jacobian.:  8735712
> Number of nonzeros in Lagrangian Hessian.............: 21839280
>
> Total number of variables............................:   375601
>                       variables with only lower bounds:        0
>                  variables with lower and upper bounds:   375601
>                       variables with only upper bounds:        0
> Total number of equality constraints.................:        0
> Total number of inequality constraints...............:  2183928
>          inequality constraints with only lower bounds:        0
>     inequality constraints with lower and upper bounds:        0
>          inequality constraints with only upper bounds:  2183928
>
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>     0  1.1959761e+01 0.00e+00 2.40e-03  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
>     1  3.2090451e+01 0.00e+00 5.65e-01  -1.0 1.09e-01    -  5.26e-01 1.00e+00f  1
>     2  3.9205106e+01 0.00e+00 1.06e-01  -1.7 1.51e-01    -  8.86e-01 1.00e+00f  1
>     3  4.5493486e+01 0.00e+00 2.45e-02  -2.5 1.13e-01    -  9.20e-01 1.00e+00f  1
>     4  4.6046663e+01 0.00e+00 4.66e-03  -3.8 9.02e-02    -  7.63e-01 1.00e+00h  1
>     5  4.6845229e+01 0.00e+00 3.12e-03  -3.8 1.29e+00    -  3.09e-01 1.00e+00f  1
>     6  4.8051644e+01 0.00e+00 1.64e-03  -3.8 6.91e-01    -  5.64e-01 1.00e+00h  1
>     7  5.0071686e+01 0.00e+00 7.88e-04  -3.8 3.66e-01    -  8.82e-01 1.00e+00h  1
>     8  5.2101707e+01 0.00e+00 5.10e-04  -3.8 3.25e-01    -  1.00e+00 1.00e+00h  1
>     9  5.2344541e+01 0.00e+00 1.16e-04  -3.8 1.50e-01    -  1.00e+00 1.00e+00h  1
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>    10  5.2365229e+01 0.00e+00 1.19e-04  -3.8 9.12e-02    -  1.00e+00 1.00e+00h  1
>    11  5.2366845e+01 0.00e+00 1.46e-04  -3.8 1.31e-01    -  1.00e+00 1.00e+00h  1
>    12  5.2367852e+01 0.00e+00 1.60e-04  -3.8 1.66e-01    -  1.00e+00 1.00e+00h  1
>    13  5.2367412e+01 0.00e+00 2.62e-04  -3.8 2.75e-01    -  1.00e+00 1.00e+00H  1
>    14  3.0317532e+01 0.00e+00 4.74e-04  -5.7 4.36e-01    -  7.80e-01 6.03e-01f  1
>    15  2.0701464e+01 0.00e+00 4.75e-04  -5.7 3.79e-01    -  7.75e-01 4.41e-01f  1
>    16  1.5075991e+01 0.00e+00 4.80e-04  -5.7 4.41e-01    -  8.39e-01 4.16e-01h  1
>    17  1.1779443e+01 0.00e+00 3.71e-04  -5.7 3.95e-01    -  8.26e-01 4.10e-01h  1
>    18  9.8058135e+00 9.57e-03 2.88e-04  -5.7 3.66e-01    -  1.00e+00 4.19e-01h  1
>    19  8.8218118e+00 2.31e-02 2.88e-04  -5.7 3.39e-01    -  9.80e-01 3.62e-01h  1
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>    20  7.7028064e+00 1.76e-02 1.27e-04  -5.7 2.13e-01    -  1.00e+00 6.49e-01h  1
>    21  7.0999381e+00 0.00e+00 1.56e-05  -5.7 7.74e-02    -  1.00e+00 1.00e+00h  1
>    22  7.1000638e+00 0.00e+00 5.66e-06  -5.7 1.81e-02    -  1.00e+00 1.00e+00h  1
>    23  7.1000565e+00 0.00e+00 2.14e-06  -5.7 7.35e-03    -  1.00e+00 1.00e+00h  1
>    24  7.1000556e+00 0.00e+00 7.99e-07  -5.7 2.74e-03    -  1.00e+00 1.00e+00h  1
>    25  6.7451507e+00 0.00e+00 7.86e-05  -7.0 1.03e-01    -  7.66e-01 5.41e-01f  1
>    26  6.5953193e+00 1.91e-04 1.27e-04  -7.0 9.48e-02    -  7.58e-01 4.95e-01h  1
>    27  6.5130936e+00 3.27e-04 1.26e-04  -7.0 6.65e-02    -  9.37e-01 5.37e-01h  1
>    28  6.4633435e+00 6.53e-05 6.42e-05  -7.0 4.41e-02    -  9.15e-01 7.03e-01h  1
>    29  6.4431951e+00 3.43e-05 1.03e-05  -7.0 2.70e-02    -  1.00e+00 9.58e-01h  1
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>    30  6.4423090e+00 0.00e+00 4.58e-06  -7.0 1.39e-02    -  1.00e+00 1.00e+00f  1
>    31  6.4423086e+00 0.00e+00 2.62e-06  -7.0 8.24e-03    -  1.00e+00 1.00e+00h  1
>    32  6.4423082e+00 0.00e+00 5.57e-06  -7.0 1.64e-02    -  1.00e+00 1.00e+00h  1
>    33  6.4423081e+00 2.86e-04 1.80e-05  -7.0 3.78e-02    -  1.00e+00 1.00e+00h  1
>    34  6.4423057e+00 4.17e-03 7.11e-05  -7.0 1.05e-01    -  4.99e-01 1.00e+00h  1
>    35  6.4423001e+00 5.66e-03 1.05e-04  -7.0 4.43e-01    -  2.69e-01 1.82e-01h  1
>    36  6.4423086e+00 2.02e-03 7.96e-05  -7.0 1.09e-01    -  6.50e-01 1.00e+00h  1
>    37  6.4423039e+00 3.34e-03 6.46e-05  -7.0 3.66e-01    -  4.71e-01 2.70e-01h  1
>    38  6.4423083e+00 5.67e-04 3.73e-05  -7.0 5.26e-02    -  6.53e-01 1.00e+00h  1
>    39  6.4423072e+00 7.16e-04 4.56e-05  -7.0 2.08e-01    -  1.00e+00 1.74e-01h  2
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>    40  6.4423083e+00 0.00e+00 3.43e-06  -7.0 9.07e-03    -  1.00e+00 1.00e+00h  1
>    41  6.4423081e+00 0.00e+00 5.39e-06  -7.0 1.66e-02    -  1.00e+00 1.00e+00H  1
>    42  6.4423084e+00 0.00e+00 7.53e-06  -7.0 2.48e-02    -  1.00e+00 1.00e+00h  1
>    43  6.4423085e+00 0.00e+00 1.82e-05  -7.0 5.52e-02    -  1.00e+00 1.00e+00H  1
>    44  6.4423060e+00 4.22e-03 8.00e-05  -7.0 1.05e-01    -  4.29e-01 1.00e+00h  1
>    45  6.4422998e+00 5.75e-03 1.10e-04  -7.0 4.12e-01    -  2.98e-01 2.02e-01h  1
>    46  6.4423041e+00 2.76e-03 3.87e-05  -7.0 3.12e-02    -  1.00e+00 5.00e-01h  2
>    47  6.4423060e+00 1.25e-03 1.55e-05  -7.0 2.66e-02    -  1.00e+00 5.00e-01h  2
>    48  6.4423083e+00 0.00e+00 4.26e-06  -7.0 1.30e-02    -  1.00e+00 1.00e+00h  1
>    49  6.4423082e+00 0.00e+00 9.33e-06  -7.0 2.48e-02    -  1.00e+00 1.00e+00H  1
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>    50  6.4423099e+00 0.00e+00 3.04e-05  -7.0 6.40e-02    -  1.00e+00 1.00e+00H  1
>    51  6.4423066e+00 7.63e-04 2.70e-05  -7.0 1.67e-01    -  1.77e-01 2.95e-01h  2
>    52  6.4423075e+00 2.86e-04 1.76e-05  -7.0 3.78e-02    -  1.00e+00 5.00e-01h  2
>    53  6.4423077e+00 8.43e-05 1.03e-05  -7.0 2.81e-02    -  1.00e+00 5.00e-01h  2
>    54  6.4423080e+00 0.00e+00 5.93e-06  -7.0 1.31e-02    -  1.00e+00 5.00e-01h  2
>    55  6.4423082e+00 0.00e+00 3.72e-06  -7.0 7.91e-03    -  1.00e+00 1.00e+00h  1
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt


More information about the Ipopt mailing list