[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