1 year ago

#362127

test-img

Tom Bennett

cvxpy: Possible sign flip for Lagrange Multiplier/dual variable

I have encountered a very strange problem when using cvxpy. Consider the following two problems:

x = cvx.Variable(1, "x")
obj = cvx.Minimize(x)
cons = [x==1]
prob = cvx.Problem(obj, cons)
prob.solve()
print(cons[0].dual_value)

Output: -1

x = cvx.Variable(1, "x")
obj = cvx.Maximize(x)
cons = [x==1]
prob = cvx.Problem(obj, cons)
prob.solve()
print(cons[0].dual_value)

Output: 1

The only difference is that one is a minimization problem and the other is a maximization problem, but the sign of the dual variable is flipped.

Conceptually, this shouldn't happen as in both cases the Lagrangian is L=x + lambda*(x-1), but I cannot find the documentation on how it is defined.

Does anyone have an explanation on why this is happening?

cvxpy

0 Answers

Your Answer

Accepted video resources