<div dir="ltr">Hi Stefan,<div><br></div><div>Thanks for your response. I think I still miss something.... I have asked a question several months ago: all my constraints were inequality (<=) and I wondered why I got negative "lambda" in "finalize_solution". Then I was told that IPOPT treats all constraints as equalities with slacks... However, in this email, I was told ip_data refer to the equality constraints (+ slack variables), and "lambda" refer my original inequalities (<=)? </div><div><br></div><div>Thanks again, Chunhua</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 7, 2016 at 6:01 AM, Stefan Vigerske <span dir="ltr"><<a href="mailto:stefan@math.hu-berlin.de" target="_blank">stefan@math.hu-berlin.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
you should read lambda directly.<br>
ip_data should refer to the internal representation of your problem, where inequality constraints have been reformulated to equality constraints (+ slack variables), so it might not be obvious what y_c() or y_d() mean.<br>
You can have a look at the documentation of intermediate_callback to get some idea how to bring y_c() and y_d() into the TNLP space:<br>
<a href="http://www.coin-or.org/Ipopt/documentation/node23.html#SECTION00053410000000000000" rel="noreferrer" target="_blank">http://www.coin-or.org/Ipopt/d<wbr>ocumentation/node23.html#SECTI<wbr>ON00053410000000000000</a><br>
<br>
Hope that helps,<br>
Stefan<div><div class="h5"><br>
<br>
On 10/28/2016 12:44 AM, Chunhua Men wrote:<br>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
Hello,<br>
<br>
I have a convex model with some inequality (<=)  nonlinear constraints. At<br>
the end of the optimization,  I wanted to get the Lagrange multipliers for<br>
each constraint. I found out there were 2 ways within<br>
"finalize_solution(...)" to get them:<br>
1) read "lambda" directly;<br>
2) get from ip_data->curr()->y_d(). And I had to do some data transfer to<br>
get it -  and what I did was "static_cast<const<br>
Ipopt::DenseVector*>(GetRawPtr<wbr>(ip_data->curr()->y_c()))".<br>
<br>
However, these 2 methods could not give me the completely same results. In<br>
my case, there were 6 constraints: 3 of them were the same, and 3 of them<br>
were not.<br>
<br>
Did I do anything wrong? and what is the best way to get Lagrange<br>
multipliers?  BTW, I am using " limited-memory" as "hessian_approximation",<br>
so I could not get Lagrange multipliers from "eval_h".<br>
<br>
Thanks! Chunhua<br>
<br>
<br>
<br></div></div>
______________________________<wbr>_________________<br>
Ipopt mailing list<br>
<a href="mailto:Ipopt@list.coin-or.org" target="_blank">Ipopt@list.coin-or.org</a><br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__list.coin-2Dor.org_mailman_listinfo_ipopt&d=CwICAg&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=BRcuJnQr5NAzU29t80hk2rsLc4vrlRySBDabuq0O1ZI&m=8QCzuoqz-AgMGxJ-2JYYSS62sOzui1ScGc0vPaY2sJM&s=qrM6-XpdelsvZ3rS_QCzA2dHp6S7EvzsMi-Le1gguHw&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.<wbr>com/v2/url?u=http-3A__list.coi<wbr>n-2Dor.org_mailman_listinfo_<wbr>ipopt&d=CwICAg&c=Ngd-ta5yRYsqe<wbr>UsEDgxhcqsYYY1Xs5ogLxWPA_<wbr>2Wlc4&r=BRcuJnQr5NAzU29t80hk2r<wbr>sLc4vrlRySBDabuq0O1ZI&m=<wbr>8QCzuoqz-AgMGxJ-2JYYSS62sOzui1<wbr>ScGc0vPaY2sJM&s=qrM6-<wbr>XpdelsvZ3rS_QCzA2dHp6S7EvzsMi-<wbr>Le1gguHw&e=</a><br>
<br><span class="HOEnZb"><font color="#888888">
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
<br>
<br>
-- <br>
<a href="http://www.gams.com/~stefan" rel="noreferrer" target="_blank">http://www.gams.com/~stefan</a><br>
</font></span></blockquote></div><br></div>