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



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

我得到了x1和x2但我还想得到1和2的值。这可能吗?

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

最新更新