[Ipopt] Slow convergence
Andreas Waechter
andreasw at watson.ibm.com
Fri Oct 16 12:43:21 EDT 2009
Hi Praveen
It is difficult to make a statement without knowing the problem better,
but maybe the following helps:
1. Make sure your first derivatives are correct.
2. Make sure the problem is scaled well (I notice that the step sizes
||d|| are quite small). Try to scale up the objective function
(obj_scaling_factor option). Make sure your objecgive
function and constraint have derivatives on the the order of at least 1.
3. You are using the quasi-Newton approximation. This can easily converge
slower than using exact second derivatives. Is it not possible in your
application to compute the Hessian of the Lagrangian method?
4. If you want to stick with the quasi-Newton, you can play with options
related to the update.
5. Adjust your expectations: In nonlinear problems, it can easily happen
that a small problem takes a large number of iterations, depending on
the nonlinearity of your problem, and on your starting point,
particularly if you are using a Hessian approximation. 30 iterations
for solving an NLP is certainly not very large.
The algorithm is rejecting many steps which might mean that your
objective function is quite nonlinear...
God luck,
Andreas
On Mon, 12 Oct 2009, Praveen C wrote:
> I have a problem with one non-linear constraint. I have attached the
> output of an optimization. The constraint is very easily satisfied from
> the first iteration itself. But ipopt seems to converge very slowly for
> this problem. In fact I do not get convergence in 30 iterations and
> about 100 function evaluations. Is it possible to find out what is
> causing this slow convergence ?
>
> Thanks
> praveen
>
> List of user-set options:
>
> Name Value used
> acceptable_tol = 0.01 yes
> compl_inf_tol = 0.01 yes
> constr_viol_tol = 0.01 yes
> dual_inf_tol = 0.01 yes
> hessian_approximation = limited-memory yes
> limited_memory_max_history = 6 yes
> max_iter = 30 yes
> mu_strategy = monotone yes
> output_file = ipopt.out yes
> print_level = 5 yes
> print_user_options = yes yes
> tol = 0.01 yes
>
> ******************************************************************************
> 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.7.0, running with linear solver ma27.
>
> Number of nonzeros in equality constraint Jacobian...: 10
> Number of nonzeros in inequality constraint Jacobian.: 0
> Number of nonzeros in Lagrangian Hessian.............: 0
>
> Total number of variables............................: 10
> variables with only lower bounds: 0
> variables with lower and upper bounds: 10
> variables with only upper bounds: 0
> Total number of equality constraints.................: 1
> 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 1.0000000e+00 0.00e+00 2.92e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0
> Warning: Cutting back alpha due to evaluation error
> 1 9.3218634e-01 4.83e-14 9.43e-01 -1.0 7.11e-02 - 1.00e+00 8.70e-02f 4
> 2 9.2273589e-01 1.04e-13 4.19e+00 -1.7 1.42e-02 - 1.00e+00 1.25e-01f 4
> 3 9.2166788e-01 5.53e-13 2.00e+00 -1.7 1.81e-03 - 1.00e+00 1.00e+00f 1
> 4 9.2109032e-01 9.21e-13 2.13e+00 -1.7 1.40e-03 - 1.00e+00 5.00e-01f 2
> 5 9.1805379e-01 2.65e-12 6.82e-01 -1.7 5.32e-04 - 1.00e+00 1.00e+00f 1
> 6 9.1754089e-01 6.65e-12 6.74e-01 -1.7 2.84e-04 - 1.00e+00 1.00e+00f 1
> 7 9.1636554e-01 6.59e-12 1.06e+00 -1.7 2.73e-02 - 1.00e+00 3.12e-02f 6
> 8 9.1085596e-01 1.97e-11 1.61e+00 -1.7 4.81e-03 - 1.00e+00 1.00e+00f 1
> 9 9.0634559e-01 5.47e-11 2.32e+00 -1.7 5.73e-03 - 1.00e+00 1.00e+00f 1
> iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls
> 10 9.0338670e-01 1.48e-10 7.97e-01 -1.7 3.77e-03 - 1.00e+00 1.00e+00f 1
> 11 9.0299679e-01 9.07e-12 2.23e+00 -1.7 3.42e-03 - 1.00e+00 2.50e-01f 3
> 12 9.0078352e-01 4.21e-12 5.74e-01 -1.7 4.11e-03 - 1.00e+00 5.00e-01f 2
> 13 9.0048649e-01 2.95e-12 2.81e+00 -1.7 5.07e-03 - 1.00e+00 6.25e-02f 5
> 14 8.9893907e-01 4.81e-12 1.21e+00 -1.7 1.86e-03 - 1.00e+00 1.00e+00f 1
> 15 8.9909228e-01 3.19e-12 1.26e+00 -1.7 1.22e-03 - 1.00e+00 2.50e-01f 3
> 16 8.9912056e-01 4.68e-12 7.54e-01 -1.7 6.43e-04 - 1.00e+00 5.00e-01f 2
> 17 8.9953878e-01 5.25e-12 2.71e-01 -1.7 1.29e-03 - 1.00e+00 5.00e-01f 2
> 18 8.9957048e-01 1.16e-12 4.83e-01 -1.7 2.87e-03 - 1.00e+00 6.25e-02f 5
> 19 8.9950272e-01 2.88e-12 5.58e-01 -1.7 6.06e-04 - 1.00e+00 2.50e-01f 3
> iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls
> 20 8.9943346e-01 1.11e-11 5.58e-01 -1.7 3.95e-04 - 1.00e+00 1.00e+00f 1
> 21 8.9943889e-01 1.11e-11 2.31e-01 -1.7 1.83e-03 - 1.00e+00 7.81e-03f 8
> 22 8.9951131e-01 1.46e-11 3.59e-01 -1.7 6.37e-04 - 1.00e+00 5.00e-01f 2
> 23 8.9951224e-01 9.32e-12 5.61e-01 -1.7 9.48e-04 - 1.00e+00 6.25e-02f 5
> 24 8.9942348e-01 7.51e-12 5.12e-01 -1.7 7.24e-04 - 1.00e+00 5.00e-01f 2
> 25 8.9941830e-01 6.04e-12 3.69e-01 -1.7 4.64e-04 - 1.00e+00 6.25e-02f 5
> 26 8.9937708e-01 1.49e-11 1.73e-01 -1.7 1.49e-04 - 1.00e+00 1.00e+00f 1
> 27 8.9830206e-01 4.05e-11 1.49e+00 -2.5 2.12e-03 - 1.00e+00 1.00e+00f 1
> 28 8.9801104e-01 3.49e-11 2.44e+00 -2.5 4.08e-02 - 1.00e+00 2.83e-02f 6
> 29 8.9535303e-01 9.35e-11 1.63e+00 -2.5 7.12e-03 - 1.00e+00 1.00e+00f 1
> iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls
> 30 8.9523790e-01 5.23e-11 1.63e+00 -2.5 1.46e-02 - 1.00e+00 1.25e-01f 4
>
> Number of Iterations....: 30
>
> (scaled) (unscaled)
> Objective...............: 8.9523789616951255e-01 8.9523789616951255e-01
> Dual infeasibility......: 1.6296134728676277e+00 1.6296134728676277e+00
> Constraint violation....: 5.2255866300754406e-11 5.2255866300754406e-11
> Complementarity.........: 3.5541737998279169e-03 3.5541737998279169e-03
> Overall NLP error.......: 1.6296134728676277e+00 1.6296134728676277e+00
>
>
> Number of objective function evaluations = 103
> Number of objective gradient evaluations = 31
> Number of equality constraint evaluations = 103
> Number of inequality constraint evaluations = 0
> Number of equality constraint Jacobian evaluations = 31
> Number of inequality constraint Jacobian evaluations = 0
> Number of Lagrangian Hessian evaluations = 0
> Total CPU secs in IPOPT (w/o function evaluations) = 0.103
> Total CPU secs in NLP function evaluations = 0.043
>
> EXIT: Maximum Number of Iterations Exceeded.
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>
More information about the Ipopt
mailing list