[Coin-ipopt] Call for help
Andreas Waechter
andreasw at watson.ibm.com
Thu Dec 27 12:42:30 EST 2007
Hi Roy,
What you observe is that the algorithm has trouble to proceed. Usually,
when this happens, Ipopt pulls the emergency break and uses the
restoration phase to find less infeasbile points. However, in this case,
the current iterate is already feasible.
This can happen, if
- your functions are not smooth (i.e., twice differentiable),
- the problem is very badly scaled,
- the problem fails to satisfy a "constraint qualification"
That last possibility (which is most probably what is going on) means that
your constraints are somewhat nasty, and don't satisfy the assumption
under which Ipopt's convergence properties have been proven.
When I look the the summary of the infeasibilities of your problem, I see
that the scaled dual infeasibility is 1.5625000000000000e-02. This is not
particularly small. However, if we look at the overall NLP error, it is
reported as 1.0028497388717635e-12, and this certainly satisfies the
convergence tolerance.
So, what is happening here? First, what Ipopt reports as "scaled" errors
are the norms etc taken from the quantities as Ipopt sees them; remember
that Ipopt might do some scaling of problem functions before it solves a
problem, and the "unscaled" column tells what the norms are for the
original problem formulation.
Now, the overall (scaled) NLP error, which is usually the quantity used in
the convergence test, is computed as shown in equation (5) in the Ipopt
paper (http://www.research.ibm.com/people/a/andreasw/papers/ipopt.pdf).
Note the scaling term s_d under the part for the dual infeasibility. The
dual infeasibility itself has the value of 1.5625e-02, but since the
overall NLP error is so small, the s_d scaling parameter must be very
large in your case. Looking at how s_d is computed, you can see that this
means that your constraint or bound multipliers must be becoming very
large.
This indicates that your problem does not satisfy a constraint
qualification (LICQ); most NLP solver will have trouble with this, since
this essentially means that the first order optimality conditions that the
NLP solver tries to satisfy, cannot be satisfied.
I recommend that you have a look at the constraints and try to find out
if your include redundant constraints - deleting those would probably help
a lot.
Alternatively, you can also just change the convergence criteria for
Ipopt: The reason that Ipopt does not stop, even though the error is with
1e-12 definitely below the convergence tolerance of 1e-8, is that Ipopt
additionally requires that tolerance for the dual infeasibility (without
the s_d scaling) is less than 1e-4. You can increase this value with the
dual_inf_tol option, and e.g., set it to 1. (I will also just change the
default now to 1.)
I hope this helps,
Andreas
On Sat, 22 Dec 2007, Roy Chen wrote:
> Hi, there
>
> I have the following problems when I ran the problem:
>
> In iteration 132, 7 Slacks too small, adjusting variable bounds
> In iteration 133, 7 Slacks too small, adjusting variable bounds
> In iteration 135, 7 Slacks too small, adjusting variable bounds
> In iteration 136, 7 Slacks too small, adjusting variable bounds
> In iteration 137, 7 Slacks too small, adjusting variable bounds
> In iteration 139, 7 Slacks too small, adjusting variable bounds
> In iteration 140, 7 Slacks too small, adjusting variable bounds
> In iteration 141, 7 Slacks too small, adjusting variable bounds
> In iteration 143, 7 Slacks too small, adjusting variable bounds
> Restoration phase is called at point that is almost feasible,
> with constraint violation 3.205075e-12. Abort.
>
> Number of Iterations....: 144
>
> (scaled) (unscaled)
> Objective...............: -7.9195441218271328e+04 -2.6926450014212250e+05
> Dual infeasibility......: 1.5625000000000000e-02
5.3124999999999999e-02
> Constraint violation....: 0.0000000000000000e+00 0.0000000000000000e+00
> Complementarity.........: 1.4323837401800188e-09 4.8701047166120633e-09
> Overall NLP error.......: 1.0028497388717635e-12
> 5.3124999999999999e-02
>>
> Number of objective function evaluations = 923
> Number of objective gradient evaluations = 146
> Number of equality constraint evaluations = 923
> Number of inequality constraint evaluations = 923
> Number of equality constraint Jacobian evaluations = 146
> Number of inequality constraint Jacobian evaluations = 146
> Number of Lagrangian Hessian evaluations = 145
> Total CPU secs in IPOPT (w/o function evaluations) = 1.141
> Total CPU secs in NLP function evaluations = 0.179
>
> EXIT: Restoration Failed!
> Restoration failed or stop at tiny step: we don't know about optimality, but
> we have feasibility!!
> --- Reading solution for model inv_case2
> --- s6-p6-c6-seg3-ipopt-nonit.gms(399) 4 Mb 1 Error
> *** Status: Execution error(s)
> --- Job s6-p6-c6-seg3-ipopt-nonit.gms Stop 12/22/07 02:38:15 elapsed 0:0
>
> What should I do with the IPOPT option file to eliminate this error
>
> Best,
>
> Roy
>
More information about the Coin-ipopt
mailing list