[Ipopt] Why is IPOPT deoptimizing my problem?
Stefan Vigerske
svigerske at gams.com
Sun Oct 20 14:11:11 EDT 2019
Hi,
around iteration 6, the dual infeasibility was relatively high, so even
though the point satisfied all constraints, optimality conditions were
not satisfied, so Ipopt kept going.
You didn't mention whether you actually told Ipopt that it should
maximize, since by default it is minimizing. You can enable maximizing
by setting the scaling factor for the objective function to -1.
Stefan
On 11/22/18 7:11 PM, Morten Bakkedal wrote:
> I'm trying to maximize an objection function subject to some inequality
> constraints. I'm puzzled why IPOPT converges nicely towards a maximum in
> iteration 6 below, and then consistently decreases the objective function
> again, never to reach the previous maximum.
>
> iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du
> alpha_pr ls
> 0 3.4514596e+000 0.00e+000 1.28e+004 -1.0 0.00e+000 - 0.00e+000
> 0.00e+000 0 y
> 1 4.0733925e+000 1.28e-011 7.98e+003 -1.0 5.36e-005 8.0 1.00e+000
> 1.00e+000f 1 Nhj
> 2 4.5348610e+000 6.86e-011 3.88e+003 -1.0 6.72e-005 7.5 1.00e+000
> 1.00e+000f 1
> 3 4.8755784e+000 3.59e-010 2.14e+003 -1.0 9.81e-005 7.0 1.00e+000
> 1.00e+000f 1
> 4 5.0819253e+000 1.81e-009 1.01e+003 -1.0 1.31e-004 6.6 1.00e+000
> 1.00e+000f 1
> 5 5.1863223e+000 8.85e-009 5.16e+002 -1.0 1.81e-004 6.1 1.00e+000
> 1.00e+000f 1
> 6 5.1984290e+000 3.93e-008 2.38e+002 -1.0 2.20e-004 5.6 1.00e+000
> 1.00e+000f 1
> 7 5.1398073e+000 1.93e-007 1.13e+002 -1.0 2.86e-004 5.1 1.00e+000
> 1.00e+000f 1
> 8 5.0214100e+000 9.48e-007 7.53e+001 -1.0 4.49e-004 4.7 1.00e+000
> 1.00e+000f 1
> 9 4.8496351e+000 4.46e-006 5.11e+001 -1.0 6.82e-004 4.2 1.00e+000
> 1.00e+000f 1
> 10 4.6276959e+000 2.05e-005 3.15e+001 -1.0 9.95e-004 3.7 1.00e+000
> 1.00e+000f 1
> 11 4.3503200e+000 9.00e-005 2.06e+001 -1.0 1.93e-003 3.2 1.00e+000
> 1.00e+000f 1
> 12 3.6612505e+000 2.55e-004 9.30e+001 -1.0 7.12e-002 2.8 6.58e-002
> 1.00e+000f 1
> 13 3.5887529e+000 9.20e-005 3.85e+000 -1.0 9.09e-004 3.2 1.00e+000
> 1.00e+000h 1
> 14 3.4504079e+000 5.40e-004 9.49e+000 -1.0 2.08e-003 2.7 1.00e+000
> 1.00e+000f 1
> 15 3.2575577e+000 3.55e-003 1.56e+001 -1.0 5.36e-003 2.2 1.00e+000
> 1.00e+000f 1
> 16 3.1991365e+000 7.87e-004 1.78e+000 -1.0 2.46e-003 2.6 1.00e+000
> 1.00e+000h 1
> 17 3.1065203e+000 9.52e-003 3.23e+000 -1.0 9.13e-003 2.2 1.00e+000
> 1.00e+000h 1
> 18 3.0739173e+000 1.78e-003 1.46e+000 -1.0 3.69e-003 2.6 1.00e+000
> 1.00e+000h 1
> 19 3.0011247e+000 1.72e-002 3.80e+000 -1.0 1.31e-002 2.1 1.00e+000
> 1.00e+000h 1
> 20 2.9751764e+000 3.29e-003 1.75e+000 -1.0 5.09e-003 2.5 1.00e+000
> 1.00e+000h 1
>
> As I understand the documentation, inf_pr is the max norm of the constraint
> violation. However, according to my log, there is no violations at all in
> most of the steps.
>
> The calculated derivatives have been carefully verified by plotting f(x)
> and f(x0)+f'(x0)*(x-x0), allowing visual inspection of consistency between
> f(x) and f'(x) (and in the same fashion between f'(x) and f''(x)), but the
> calculation is particularly challenging for this problem, so I'm not 100%
> sure.
>
> I'm I understanding the way IPOPT works incorrectly or where do you suggest
> I start debugging my calculations? Derivatives? Scalings? I'm forced to use
> a fairly old version of IPOPT if that makes a difference.
>
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> https://list.coin-or.org/mailman/listinfo/ipopt
>
More information about the Ipopt
mailing list