[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

```