<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: 12pt">
<DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">Neo,</DIV></DIV>
<DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">&nbsp;</DIV></DIV>
<DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">What 
you¡¯re seeing is an optimization where the implementation differs slightly from 
the simple theoretical canonical form in order to reduce the number of variables 
Ipopt has to calculate. Even if a constraint has finite values of both lower and 
upper bounds, you actually only need one dual variable (Lagrange multiplier) for 
that constraint. This is more efficient than considering the lower bound and the 
upper bound as separate constraints, since you would then need duplicate 
evaluations of constraint function, Jacobian and Hessian entries, separate dual 
variables, etc.</DIV></DIV>
<DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">&nbsp;</DIV></DIV>
<DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">&nbsp;</DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">If 
the lower and upper bound values are not equal to one another (lower bound 
strictly less than upper bound), then only one of the bounds can be active at a 
time. You can thus combine the Lagrange multiplier for the lower bound with the 
Lagrange multiplier for the upper bound into the same variable (since one or the 
other, or both, will always equal zero), using the sign of the variable to show 
which of the bounds is active. </DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">I 
tend to forget these sign conventions and have to check by running the code, but 
based on the example you¡¯re seeing it looks like the info.lambda value is 
negative when the lower bound for a constraint is active, and positive when the 
upper bound for a constraint is active. You can test this out by switching the 
signs of one of the constraint functions and adjusting all the bounds, Jacobian 
and Hessian entries accordingly, to see the effect on the sign of 
Lambda.</DIV></DIV>
<DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">&nbsp;</DIV></DIV>
<DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">In 
the other case, if the lower and upper bound values for a constraint are equal 
to one another, then that constraint is an equality constraint and the dual 
variable does not have a sign restriction, it can be either positive or 
negative.</DIV></DIV>
<DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">&nbsp;</DIV></DIV>
<DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">-Tony</DIV>
<DIV><BR>&nbsp;</DIV>
<DIV>
<DIV class=gmail_quote>---------- Original message ----------<BR>From: <B 
class=gmail_sendername>Âíƽ´¨</B> <SPAN dir=ltr>&lt;<A 
href="mailto:chambertinofn@gmail.com">chambertinofn@gmail.com</A>&gt;</SPAN><BR>Date: 
Tue, Feb 19, 2013 at 4:26 PM<BR>Subject: A question about the Lagrange 
multipliers of Ipopt solution<BR>To: <A 
href="mailto:ipopt@list.coin-or.org">ipopt@list.coin-or.org</A><BR><BR><BR>Dear 
sir or madam, 
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sorry for bothering you with 
this e-mail. But I actually encounter a big problem with my Master issue 
code.</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; My current problem lies in the 
coding based on Ipopt Matlab interface. I hava a question about the lagrange 
multipliers of Ipopt solution.</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; We all know that the general 
nonlinear programming problem form of Ipopt is the minimal optimization with the 
nonlinear constraints and variables bound constraints which both have the lower 
and upper bounds. And the value of the Lagrange multipliers at the solution lies 
in the info.lambda, info.zl, info.zu fields. But it seems that the value of 
info.lambda isn't right.</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; My ipopt version is 3.10.0. I 
run the original matlab example <I>examplehs071.m</I> which lies in the Ipopt 
source package. This optimization problem has 4 variables and 2 nonlinear 
constraints which includes 1 inequality constraint with only lower bounds and 1 
equality constraint. So the number of the multipliers associated with nonlinear 
constraints is 2. Then I have a modification on the example by changing the 
upper bound of inequality constraint from inf to 100 without any other changes. 
This mdification doesn't change the optimal solution. I thought this 
modification would make the length of the multipliers corresponding to nonlinear 
constraints become 3. But I was wrong. The length of info.lambda was still 2 and 
its value didn't change at all.</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I have read the Ipopt original 
artical "<I>A, Wachter and L. T. Biegler. On the implementation of an 
interior-point filter line-search algorithm for large-scale nonlinear 
programming. Mathematical Programming, 106(1):25-57, 2006</I>". But in the 
artical the optimization form only has equality constraints which have the same 
lower and upper bounds. It also said in that artical, "problems with general 
nonlinear inequality constraints, 'd(x)&lt;=0', can be reformulated in the above 
form by introducing slack variables." But I think that even so, 1 inequality 
constraint with both lower and upper bounds will generate 2 lagrange multiplier 
accordding to KKT condition, just like the situation of variable bound 
constraints.</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; So please give me the answer if 
you know it. And I have another question about the value of the multiplier of 
that original example <I>examplehs071.m</I>. The multiplier corresponding to the 
inequality constraint with only lower bounds is negative, acctually -0.5523. But 
according to the usual custom, we will make this multiplier positive by the 
proper definition of Lagrangian function. So please tell the definition of 
Lagrangian function of ipopt so that I could judge the sign of Lagrange 
multipliers.</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN 
style="FONT-FAMILY: arial,sans-serif; COLOR: rgb(34,34,34); FONT-SIZE: 13px">Thank 
you for your reading. I will really appreciate you for your answer.</SPAN></DIV>
<DIV><SPAN 
style="FONT-FAMILY: arial,sans-serif; COLOR: rgb(34,34,34); FONT-SIZE: 13px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
Hoping your reply.</SPAN></DIV>
<DIV>
<DIV>
<DIV>------------------------------------------------------------<BR>Regards<BR>Neo 
Ma Âíƽ´¨ | Graduate<BR><BR>T:+86-10-6278 2545 | <A 
href="mailto:E%3Achambertinofn@gmail.com" 
target=_blank>mailto:E%3Achambertinofn@gmail.com</A><BR>------------------------------------------------------------<BR>Dept. 
of Electrical Engineering, Tsinghua Univ.<BR>BLDG. 28# RM.312 Tsinghua Univ. 
Beijing 100084 
P.R.CHINA<BR>------------------------------------------------------------<BR>Remember 
what should be remembered, and forget what should be forgotten. Alter what is 
changeable, and accept what is immutable.</DIV></DIV></DIV></DIV>
<DIV>&nbsp;</DIV></DIV></DIV></DIV></DIV></BODY></HTML>