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 *\
Minimize
obj: - x1 - x2
Subject To
constraint1: - 0.1 x1 - x2 - s1 = -1
constraint2: - x1 - 0.2 x2 - s2 = -1
End
and in the second case the "wlp" output is:
\* Problem: simple *\
Minimize
obj: - x1 - x2
Subject To
constraint1: + 0.1 x1 + x2 + s1 = 1
constraint2: + x1 + 0.2 x2 + s2 = 1
End
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.
-Marc