[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Help-glpk] The "dual" suffix and sensitivity to how a constraint is exp

From: Meketon, Marc
Subject: [Help-glpk] The "dual" suffix and sensitivity to how a constraint is expressed in GMPL
Date: Tue, 28 Dec 2010 15:22:19 -0600

I came across a curious quirk in the use of the new suffixes in GMPL:  how a constraint is formed leads to non-intuitive dual results.
This model:
  # Simple Model 1
  var x1 >= 0;
  var x2 >= 0;
  var s1 >= 0;
  var s2 >= 0;
  s.t. constraint1 : 1.0 = 0.1*x1 + x2 + s1;
  s.t. constraint2 : 1.0 = x1 + 0.2*x2 + s2;
  minimize obj: -x1 - x2;
  display constraint1.dual;
  display constraint2.dual;
displays the two duals as  
  constraint1.dual = 0.816326530612245
  constraint2.dual = 0.918367346938776
But changing how constraint1 and constraint2 are written to:
  s.t. constraint1 : 0.1*x1 + x2 + s1 = 1.0;
  s.t. constraint2 : x1 + 0.2*x2 + s2 = 1.0;
displays the two duals as
  constraint1.dual = -0.816326530612245
  constraint2.dual = -0.918367346938776
Using the "--wlp" option, it's easy to see what is occuring.  In the first case, the "wlp" output is:
  \* Problem: simple *\
   obj: - x1 - x2
  Subject To
   constraint1: - 0.1 x1 - x2 - s1 = -1
   constraint2: - x1 - 0.2 x2 - s2 = -1
and in the second case the "wlp" output is:
  \* Problem: simple *\
   obj: - x1 - x2
  Subject To
   constraint1: + 0.1 x1 + x2 + s1 = 1
   constraint2: + x1 + 0.2 x2 + s2 = 1
By switching around the terms on the "=" sign, GMPL reversed the signs of all of the coefficients.  Which reversed the signs on the duals.
I'm not a fan of the changing of the sign when I plan to use the duals for calculations later on; it leads to somewhat random behavior, and makes using the new suffixes a little scary for bigger models when it is not easy to know the correct sign for each constraint.  Is there really a need to change the signs?  I would hope this could be turned off.

This e-mail and any attachments may be confidential or legally privileged. If you received this message in error or are not the intended recipient, you should destroy the e-mail message and any attachments or copies, and you are prohibited from retaining, distributing, disclosing or using any information contained herein. Please inform us of the erroneous delivery by return e-mail. Thank you for your cooperation.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]