如何在 python 优化中使用拉格朗日方法获取 lambda 值

How to get lamda values while using lagrange method in python optimization

我用拉格朗日方法解决了一个不等式的优化问题。

我得到了 x1 和 x2,但我还想得到 lamda1 和 lamda2 值。这可能吗?

x1 = Symbol("x_")
x2 = Symbol('x_2')
Z = Symbol("Z")
lamd1 = Symbol("\lambda_1")
lamd2 = Symbol("\lambda_2")
eq1 = Eq(Z, (x1-4)**2 + (x2-4)**2 + 
         lamd1*(6 - 2*x1 - 3*x2) + lamd2*(-12 + 3*x1 + 2*x2))
display(eq1)

def f(x):
    return ((x[0] - 4)**2 + (x[1] - 4)**2)

cons = ({'type': 'ineq',
         'fun' : lambda x: np.array([2*x[0] + 3*x[1] - 6,
                                -3*x[0] - 2*x[1] +12])})

x0 = np.array([2,2,1])

res = minimize(f, x0, constraints=cons)
res

假设我理解正确并且你想获得解约束的拉格朗日乘数,你可以使用trust-constr方法:

res = minimize(f, x0, constraints=cons, method="trust-constr")
# the lagrangian multipliers for all constraints
lagr = res.v