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

Tony Kelman kelman at berkeley.edu
Thu Apr 18 16:46:19 EDT 2013


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 <aurelien-lambert2 at wanadoo.fr>
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 ...



More information about the Ipopt mailing list