[Ipopt] Enforcing bound during iterations

Andreas Waechter andreasw at watson.ibm.com
Wed Apr 8 18:42:21 EDT 2009


Hi,

Ipopt always respects bounds in each iteration (with the expection 
described for the option bound_relax_factor).  (A user-given starting 
point might not, but then Ipopt moves the point into the bounds at some 
early point).

In AMPL, a constraint xi >= 0 as you posed it will be reformulated as a 
bound on the variable (instead of an extra inequality constraint), unless 
you disable AMPL's presolve (option presolve 0).  So, if you have a 
variable x >= 0, the the argument of exp(-x) will always be negative.

However, if you use a "=" definition in your variable (like your 
definition of xi0 it means that AMPL will substitude xi with the 
expression y/d everywhere where xi appears.  This means, that xi>=0 
becomes a nonlinear inequality constraint (not transferred into a bound) 
which might be violated during the iteration.

You can avoid what you describe by making xi a real variables (not using 
=... in the var statement), and make xi = y/d a constraint.  Then, the 
bound xi>=0 makes sure that the exp term can be evaluated.

I hope this helps,

Andreas

On Wed, 8 Apr 2009, Mikhail Nediak wrote:

> Dear Ipopt developer/users,
> 
> I would like to know if there is a way to make sure that IPOPT operates
> only within the feasible region (through AMPL options). I am encountering
> a situation where defined variables are explicitly constrained, something
> along the lines of
> 
> var y >= 0;
> var d = "some stuff"
> subject to dpos: d >= 0;
> var xi = y / d;
> subject to xipos: xi >= 0;
> var w = exp(-xi);
> 
> however, IPOPT aborts abnormally out with a message
> 
> Error evaluating "var =" definition 697:
> can't evaluate exp(3632.5): No such file or directory.
> 
> because (I guess) it cannot evaluate things like
> var w = exp(-xi);
> elsewhere in the model.
> 
> I am sure that the initial point supplied to the solver is feasible. Any
> suggestions would be greatly appreciated (I have already tried to replace
> defined variables with constraints -- that causes other problems).
> 
> Thanks. Best,
> Mikhail
> 
> 
>



More information about the Ipopt mailing list