[Coin-ipopt] IPOPT needs many iterations for some problem of dimension 4
Stefan Vigerske
stefan at vigerske.de
Sun Dec 3 09:48:52 EST 2006
Hi,
in my code, I'm using IPOPT so solve some subproblems. It's working very
fine and fast for most cases :-), but there are a few examples where it
seem to have a problem.
What I'm doing is that I'm minimizing a function p(x)-f(x) over a box
where p(x) is some quadratic function and f(x) can be anything.
In one of my examples IPOPT needs very many iterations (around 2800) for
minimizing p(x)-f(x) with x having dimension 12.
To isolate the problem, I followed a suggestion from Arnold Neumaier: I
stopped IPOPT after 1000 iterations, and fixed those variables that were
active (z_L oder z_U > 0) and were very close to the bounds.
Then the problem reduces to dimension 4, so I can post it here.
When I run it with the ampl-version of Ipopt 3.2.2 it still takes IPOPT
around 900 iterations to converge to a local optima.
var x1 := 0.945031, >= 0.9, <= 1.05;
var x2 := 1.0241, >= 0.9, <= 1.05;
var x3 := 1.03214, >= 0.9, <= 1.05;
var x4 := 7723.33, >= -10000, <= 10000;
minimize obj: 0.864506005768817*x1 - 9.09006295233917e-5*x4*x1 -
7.08063848069429e-5*x4 - 1.03973134163199e-5*x4 +
0.000460593359671313*x42 - 0.9*(-0.864296115364742*cos((-10000) + x4) -
6.06886185353939*sin((-10000) + x4))*x1 + 0.812060804378798*x2 +
1.40432467266548*x3 - 343160.616325042;
I agree that with a proper reformulation, everything will simplify. But
since this is what appear somewhere deep inside my code, it cannot be
reformulated by hand.
The IPOPT output with print_level 4 looks like that (I removed the
inf_pr column which is always 0.00e+00):
iter objective inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls
0 -3.1568920e+05 4.87e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0
1 -3.1569229e+05 1.54e+00 -1.0 9.75e-01 - 6.97e-01 8.74e-01f 1
2 -3.1569485e+05 4.34e+00 -1.0 1.19e+00 - 2.88e-01 1.00e+00f 1
3 -3.1569525e+05 5.06e+00 -1.0 5.07e-02 2.0 9.90e-01 1.00e+00f 1
4 -3.1569601e+05 4.78e+00 -1.0 1.46e-01 1.5 9.93e-01 8.84e-01f 1
...
910 -3.2544949e+05 6.81e+00 -2.5 4.57e-01 1.2 1.00e+00 1.00e+00f 1
911 -3.2586980e+05 4.96e+00 -2.5 7.23e+01 0.7 7.04e-02 1.00e+00f 1
912 -3.2587059e+05 4.91e+00 -2.5 1.76e+00 - 4.13e-03 8.14e-02f 1
913 -3.2587192e+05 1.18e+00 -2.5 7.15e-01 - 1.00e+00 1.00e+00f 1
914 -3.2587213e+05 2.47e-01 -2.5 3.24e-01 - 1.00e+00 1.00e+00f 1
915 -3.2587216e+05 5.31e-02 -2.5 3.12e-02 0.2 1.00e+00 1.00e+00f 1
916 -3.2587216e+05 2.21e+00 -2.5 4.55e-01 - 1.00e+00 1.07e-01f 2
917 -3.2587216e+05 3.48e-03 -2.5 3.56e-02 - 1.00e+00 1.00e+00f 1
918 -3.2587218e+05 6.33e-02 -3.8 5.30e-02 - 9.73e-01 7.55e-01f 1
919 -3.2587218e+05 6.87e-05 -3.8 4.90e-03 - 1.00e+00 1.00e+00f 1
920 -3.2587218e+05 9.40e-07 -5.7 5.46e-04 - 1.00e+00 1.00e+00f 1
921 -3.2587218e+05 1.19e-10 -8.6 6.13e-06 - 1.00e+00 1.00e+00f 1
(scaled) (unscaled)
Objective...............: -3.2587217749721e+05 -3.2587217749721959e+05
Dual infeasibility......: 1.1859351865773e-10 1.1859351865773223e-10
Constraint violation....: 0.0000000000000e+00 0.0000000000000000e+00
Complementarity.........: 2.5335012268450e-09 2.5335012268450292e-09
Overall NLP error.......: 2.5335012268450e-09 2.5335012268450292e-09
Maybe you have some idea which parameter to adjust. The function seem to
have many local minima. I do not need a very good one, just one that is
close to the starting point would be sufficient.
Many thanks,
Stefan
More information about the Coin-ipopt
mailing list