[Ipopt] Very Slow Convergence

Frank E. Curtis frank.e.curtis at gmail.com
Fri Feb 25 10:24:47 EST 2011


I agree with Ashu that the Hessian may be the issue.  Not necessarily
that it is being evaluated incorrectly, but your problem appears to be
highly nonconvex, requiring Ipopt to modify the Hessian during all
iterations.  (Note the fourth-to-last column of the output, "lg(rg)";
whenever this value is not "-" it means the Hessian is being
modified.)  You may want to try adjusting the way the Hessian is
modified or use Hessian approximation techniques.  You may get lucky.

Frank E. Curtis
P. C. Rossin Assistant Professor
Industrial and Systems Engineering
Lehigh University
200 W. Packer Ave., Room 322
Bethlehem, PA 18015
frank.e.curtis at gmail.com
+1.646.789.5490
http://coral.ie.lehigh.edu/~frankecurtis

On Fri, Feb 25, 2011 at 10:11 AM, Ashutosh Mahajan <asm4 at lehigh.edu> wrote:
> How do you input your problem: AMPL or your own interface? Slow convergence is
> sometimes a sign of incorrectly evaluated hessian.
>
> --
> regards
> Ashutosh Mahajan
> http://coral.ie.lehigh.edu/~asm4
>
> On Fri, Feb 25, 2011 at 01:52:51PM +0100, Uwe Nowak wrote:
>> Hello!
>>
>> I am trying to solve some circle packing related problems with IPOPT.
>> For small to medium size problems (up to 400 Circles) everything works
>> fine and reasonable fast. However for larger problems the Algorithm does
>> not converge..
>>
>>
>> > This is Ipopt version 3.9.2, running with linear solver ma27.
>> >
>> > Number of nonzeros in equality constraint Jacobian...:        0
>> > Number of nonzeros in inequality constraint Jacobian.:  1426360
>> > Number of nonzeros in Lagrangian Hessian.............:   733017
>> >
>> > Total number of variables............................:     2535
>> >                      variables with only lower bounds:        0
>> >                 variables with lower and upper bounds:        0
>> >                      variables with only upper bounds:        0
>> > Total number of equality constraints.................:        0
>> > Total number of inequality constraints...............:   356590
>> >         inequality constraints with only lower bounds:   356590
>> >    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  1.7720393e+06 1.99e-01 6.18e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
>> >    1  1.7719897e+06 1.90e-03 1.97e-01  -1.0 1.99e-01   0.0 9.90e-01 9.90e-01f  1
>> >    2  1.7719792e+06 8.17e-07 4.14e-01  -1.0 9.04e-02  -0.5 9.91e-01 1.00e+00f  1
>> >    3  1.7719639e+06 1.63e-07 1.90e-02  -1.0 1.74e-01  -1.0 1.00e+00 1.00e+00f  1
>> >    4  1.7719359e+06 1.46e-06 1.15e-02  -2.5 3.34e-01  -1.4 1.00e+00 1.00e+00f  1
>> >    5  1.7718661e+06 1.31e-05 4.24e-02  -3.8 2.42e+00  -1.9 1.00e+00 1.00e+00f  1
>> >    6  1.7718414e+06 1.85e-06 7.36e-03  -3.8 2.30e-01  -1.5 1.00e+00 1.00e+00f  1
>> >    7  1.7717680e+06 1.66e-05 5.97e-03  -3.8 5.44e-01  -2.0 1.00e+00 1.00e+00f  1
>> >    8  1.7717406e+06 2.34e-06 5.97e-03  -3.8 2.04e-01  -1.5 1.00e+00 1.00e+00f  1
>> >    9  1.7716585e+06 2.10e-05 5.97e-03  -3.8 6.12e-01  -2.0 1.00e+00 1.00e+00f  1
>> > iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>> >   10  1.7716278e+06 2.96e-06 5.97e-03  -3.8 2.29e-01  -1.6 1.00e+00 1.00e+00f  1
>> >   11  1.7715352e+06 2.66e-05 7.90e-03  -3.8 1.10e+00  -2.1 1.00e+00 1.00e+00f  1
>> >   12  1.7712588e+06 2.39e-04 1.40e-02  -3.8 2.06e+00  -2.5 1.00e+00 1.00e+00f  1
>> >   13  1.7704321e+06 2.15e-03 5.96e-03  -3.8 6.18e+00  -3.0 1.00e+00 1.00e+00f  1
>> >   14  1.7679654e+06 1.92e-02 5.94e-03  -3.8 1.85e+01  -3.5 1.00e+00 1.00e+00f  1
>> >   15  1.7606816e+06 1.70e-01 7.13e-03  -3.8 5.49e+01  -4.0 1.00e+00 1.00e+00f  1
>> >   16  1.7398125e+06 1.45e+00 5.77e-02  -3.8 1.59e+02  -4.4 1.00e+00 1.00e+00f  1
>> >   17  1.6839562e+06 2.44e-01 4.15e-01  -3.8 4.34e+02  -4.9 1.00e+00 1.00e+00F  1
>> >   18  1.6647120e+06 1.52e+00 5.50e-02  -3.8 1.52e+02  -4.5 1.00e+00 1.00e+00f  1
>> >   19  1.6134541e+06 2.81e-01 3.22e-01  -3.8 4.06e+02  -5.0 1.00e+00 1.00e+00F  1
>>
>>
>> Then many hours later...
>>
>> > iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>> > 8270  3.4629818e+05 3.73e-04 3.03e-01  -5.7 3.05e+00  -5.1 3.40e-01 1.28e-02h  1
>> > 8271  3.4629149e+05 2.48e-04 2.48e-01  -5.7 1.14e+00  -4.7 7.40e-01 3.48e-01h  1
>> > 8272  3.4627186e+05 3.18e-04 1.68e-01  -5.7 3.48e+00  -5.2 3.53e-01 3.38e-01h  1
>> > 8273  3.4627111e+05 3.06e-04 1.62e-01  -5.7 1.29e+00  -4.8 3.95e-02 3.56e-02h  1
>> > 8274  3.4626946e+05 3.00e-04 3.55e-01  -5.7 4.43e+00  -5.2 3.53e-01 2.57e-02h  1
>> > 8275  3.4626407e+05 2.44e-04 2.17e-01  -5.7 1.45e+00  -4.8 1.64e-01 2.25e-01h  1
>> > 8276  3.4626263e+05 2.40e-04 3.19e-01  -5.7 5.92e+00  -5.3 1.53e-01 2.01e-02h  1
>> > 8277  3.4625715e+05 2.04e-04 1.82e-01  -5.7 1.64e+00  -4.9 4.42e-02 2.05e-01h  1
>> > 8278  3.4624521e+05 2.74e-04 1.60e-01  -5.7 7.71e+00  -5.3 1.65e-01 1.47e-01h  1
>> > 8279  3.4624204e+05 2.54e-04 3.19e-01  -5.7 2.29e+00  -4.9 3.28e-01 1.05e-01h  1
>> > iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
>> > 8280  3.4621935e+05 3.81e-04 1.10e-01  -5.7 5.50e+00  -5.4 3.91e-02 2.53e-01h  1
>> > 8281  3.4621741e+05 3.61e-04 3.22e-01  -5.7 2.06e+00  -5.0 3.66e-01 5.74e-02h  1
>> > 8282  3.4621398e+05 3.54e-04 3.55e-01  -5.7 6.18e+00  -5.4 1.30e-01 3.39e-02h  1
>> > 8283  3.4620558e+05 3.05e-04 2.46e-01  -5.7 2.32e+00  -5.0 1.74e-01 2.22e-01h  1
>> > 8284  3.4620029e+05 3.03e-04 2.70e-01  -5.7 6.95e+00  -5.5 2.38e-01 4.65e-02h  1
>> > 8285  3.4619775e+05 2.88e-04 3.07e-01  -5.7 2.61e+00  -5.1 2.54e-01 5.98e-02h  1
>> > 8286  3.4618951e+05 2.97e-04 3.08e-01  -5.7 7.80e+00  -5.5 8.89e-02 6.48e-02h  1
>>
>>
>>
>> I read the 90-minutes-introduction to IPOPT and the implementation
>> paper. However I do not really have a feeling, why the algorithm is
>> converging that slow.
>>
>> this run is started with the options
>> tol 0.01
>> acceptable_tol 0.05
>> max_iter 200000
>>
>> So by default it should by
>> dual_inf_tol = 1
>> constr_viol_tol = 1e-4
>> compl_inf_tol = 1e-4
>>
>> I see, that dual feasibility is stisfied but primal feasibility is not.
>> I do not know, where to read the compl_inf value in the current
>> iteration. Further I do not know, if the primal and dual step sizes are
>> "small"...
>>
>> Has anybody some suggestions, why the algorithm is converging that slow?
>>
>> Thank you,
>> Uwe
>>
>> _______________________________________________
>> Ipopt mailing list
>> Ipopt at list.coin-or.org
>> http://list.coin-or.org/mailman/listinfo/ipopt
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>




More information about the Ipopt mailing list