[Ipopt] ipopt: The problem FAILED

Joris Kinable deus87 at gmail.com
Thu Apr 25 14:48:52 EDT 2013


Dear Stefan,

I managed to find out why the init start didn't work: instead of copying my
initial values into the double array x, I mistakenly wrote:
x=myInitialValues; thereby overwriting the reference to the array.

Unfortunately, I'm still having some weird results with the initial starts.


1. I initialized my model with a heuristically obtained solution, limit the
number of iterations to 0, and solve the model. This is the result:

                                   (scaled)                 (unscaled)
Objective...............:   1.4348357906583399e+02    1.4348357906583399e+02
Dual infeasibility......:   3.4494939467173791e+00    1.1992447967144086e+00
Constraint violation....:   2.5542688232884450e+02    2.7080707935425266e+03
Complementarity.........:   1.0000000000015498e+09    1.0000000000015498e+09
Overall NLP error.......:   1.0000000000015498e+09    1.0000000000015498e+09

The objective is indeed identical to my heuristic objective. However, I'm
puzzled by the large Constraint Violation. I wrote some additional code
which inserts my initial solution into the function protected boolean
eval_g(int n, double[] x, boolean new_x, int m, double[] g), and compares
the result against the lower and upper bounds of the constraints. The
result was a maximum bound violation of 0.0000000001 caused by a rounding
error. So, how is it possible that Ipopt reports a bound violation of
255.42, which is significant larger?


2. Another problem occurs as follows:

1. Solve the problem.
Result:
Number of Iterations....: 122
                                   (scaled)                 (unscaled)
Objective...............:   1.4023993576871166e+02    1.4023993576871166e+02
Dual infeasibility......:   3.2150729385190527e-10    3.2150729385190527e-10
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   2.5415311533493614e-09    2.5415311533493614e-09
Overall NLP error.......:   2.5415311533493614e-09    2.5415311533493614e-09

2. Take the solution, and use that solution as an initial start.
3. Set the max iterations to 0 (or 1).
4. Resolve.

Result:
Number of Iterations....: 0
                                   (scaled)                 (unscaled)
Objective...............:   1.4023993576871166e+02    1.4023993576871166e+02
Dual infeasibility......:   9.2604242966773098e-01    9.2604242966773098e-01
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   5.7376840606707844e+13    5.7376840606707844e+13
Overall NLP error.......:   5.7376840606707844e+13    5.7376840606707844e+13


As you can see, the objectives and constraint violation are identical (as
they should be). But why are 'Dual infeasibility', 'Complementarity' and
'Overall NLP error' so much different? Note that the IPOPT output
description in the manual:
http://www.coin-or.org/Ipopt/documentation/node56.html does not elaborate
on these values. I hope that there is a good explanation why Ipopt seems so
inconsistent.

Btw, the derivative checker does not report any errors.


br,

Joris


On Wed, Apr 3, 2013 at 12:42 PM, Stefan Vigerske
<stefan at math.hu-berlin.de>wrote:

> Hi,
>
>
> On 04/02/2013 07:01 PM, Joris Kinable wrote:
>
>> Dear,
>>
>> I've implemented a small NLP model into ipopt using the Java interface.
>> When I hit solve, the program terminates with the following message:
>>
>> "The problem FAILED".
>>
>> I'm trying to debug the model to see what's wrong. Hence, I've set the
>> objective function to a fixed constant, thereby turning the optimization
>> problem into a constraint satisfaction problem. Next, I've initialized the
>> problem with a feasible solution, i.e. a solution which satisfies all
>> constraints. So basically, the optimizer could return the initial solution
>> immediately; no optimization is required. Still, I get the message that
>> the
>> problem fails (part of the log is included at the end of this mail).
>>
>> 1. Why doesn't the solver return the initial solution, as it is a feasible
>> solution?
>>
>
> Ipopt may have moved your initial point, if it was close to the bounds.
> Try setting the options bound_push and bound_frac to 0.0:
> http://www.coin-or.org/Ipopt/**documentation/node97.html<http://www.coin-or.org/Ipopt/documentation/node97.html>
> http://www.coin-or.org/Ipopt/**documentation/node98.html<http://www.coin-or.org/Ipopt/documentation/node98.html>
>
>
>  2. What could cause ipopt to return 'The problem Failed', i.e. what should
>> I debug? I manually checked that all my constraints are feasible, as well
>> as the variable bounds.
>>
>
> The problem failed message is written by the Java interface and not really
> helpful. Look at the messages from Ipopt itself (e.g., after EXIT) to see
> why Ipopt stopped. There you also see which infeasibility (primal, dual, or
> complementarity) is still too high to have Ipopt stopping successfully.
>
>
>  3. The logger mentions that the search direction becomes too small. Why
>> can't it identify that it has found a local/global optimum?
>>
>
> Maybe your implementation of gradients or hessians is wrong. Try the
> derivative checker:
> http://www.coin-or.org/Ipopt/**documentation/node53.html<http://www.coin-or.org/Ipopt/documentation/node53.html>
>
> Stefan
>
>
>> br,
>>
>> Joris
>>
>>
>>
>> ==============================**=
>>
>> Number of Iterations....: 263
>>
>>                                     (scaled)                 (unscaled)
>> Objective...............:   1.0000000000000000e+00
>>  1.0000000000000000e+00
>> Dual infeasibility......:   1.0999505370964350e-05
>>  1.0999505370964350e-05
>> Constraint violation....:   0.0000000000000000e+00
>>  0.0000000000000000e+00
>> Complementarity.........:   9.0909090909090941e-10
>>  9.0909090909090941e-10
>> Overall NLP error.......:   1.0999505370964350e-05
>>  1.0999505370964350e-05
>>
>>
>> Number of objective function evaluations             = 289
>> Number of objective gradient evaluations             = 55
>> Number of equality constraint evaluations            = 0
>> Number of inequality constraint evaluations          = 289
>> Number of equality constraint Jacobian evaluations   = 0
>> Number of inequality constraint Jacobian evaluations = 266
>> Number of Lagrangian Hessian evaluations             = 264
>> Total CPU secs in IPOPT (w/o function evaluations)   =      0.180
>> Total CPU secs in NLP function evaluations           =      0.016
>>
>> EXIT: Search Direction is becoming Too Small.
>> Obj: 1.0
>> Circle 0: (-41.30054873354737,3.**222049686239637), r:10.0
>> Circle 1: (0.49442322310794523,-26.**773758302392906), r:10.0
>> Circle 2: (-44.843610818313735,-23.**277936648765795), r:10.0
>> Circle 3: (-22.36952325252463,-36.**936746537913145), r:10.0
>>
>>
>> *** The problem FAILED!
>>
>>
>>
>> ______________________________**_________________
>> Ipopt mailing list
>> Ipopt at list.coin-or.org
>> http://list.coin-or.org/**mailman/listinfo/ipopt<http://list.coin-or.org/mailman/listinfo/ipopt>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20130425/93ac5703/attachment.html>


More information about the Ipopt mailing list