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