[Ipopt] How to deal with out of constraints evaluation requests ?

aurelien lambert aurelien-lambert2 at wanadoo.fr
Tue Apr 23 04:08:08 EDT 2013

The problem is that inverse matrix occurs in jac_g, as the gradiant of the determinant. So using such a trick looks complicated.

> Message du 18/04/13 22:46
> De : "Tony Kelman" 
> A : aurelien-lambert2 at wanadoo.fr, ipopt at list.coin-or.org
> Copie à : 
> Objet : Re: [Ipopt] How to deal with out of constraints evaluation requests ?
> Another reformulation you can consider is instead of inverting matrices in 
> your objective or constraint functions, let the linear solver in Ipopt do 
> the inversion for you. That's its job, after all.
> If you have an expression of the form A(x)^(-1) * x in some functions, you 
> can introduce a new vector variable y and equality constraints A(x) * y == 
> x. Then you can replace every occurrence of A(x)^(-1) * x with y, and your 
> functions will no longer have the inversion issue. For regions where A(x) is 
> singular, the equality constraint will likely not be feasible, but the 
> functions should at least be well-defined.
> -Tony
> -----Original Message----- 
> From: aurelien lambert 
> Date: Wed, 17 Apr 2013 14:48:24 +0200 (CEST)
> To: ipopt at list.coin-or.org
> Subject: [Ipopt] How to deal with out of constraints evaluation requests ?
> Hello
> Im using Ipopt with its python interface in my internship, and it seems to 
> do well, thank you for this nice job :-) I compiled the last sources of 
> every needed libraries (including MUMPS, on Ubuntu), so I should be up to 
> date. But my problem is I cant evaluate f, grad_f and jac_g (no h because in 
> quasi-Newton mode) when Im out of my constraints, because I need to compute 
> inverse of some matrices constrained to be positive definite, but which can 
> have non inverse when not. So how can I do that ?
> * If g returns false (which make python return false in the C++ interface 
> according to the source code), I have the message "Warning: Cutting back 
> alpha due to evaluation error". It's just a warning and works fine, but if I 
> lower the output level in order to not write these warnings, I have no 
> useful output left.
> * If I compute g (which gives out of constraint g, I checked it), ipopt also 
> try to evaluate f and grad_f, and grad_f returning false gives "EXIT: 
> Invalid number in NLP function or derivative detected.", which stops the 
> algorithm.
> Is there a way to disable these warnings ? Is not ipopt suppose to handle 
> silently false return value, or detect out of constraints g ?
> Thank you
> PS : I dont give my source code because it's quite long, and my problem 
> doesnt seem to be related to it. But if you need it I can ...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20130423/d6655808/attachment.html>

More information about the Ipopt mailing list