繁体   English   中英

带有 scipy.optimize.linprog 的拉格朗日乘法器

[英]Lagrange multipliers with scipy.optimize.linprog

是否可以像 Matlab linprog 一样从scipy linprog中检索拉格朗日乘数? 如果有怎么办?

我阅读了文档,但没有找到。 有一个return参数调用slack但我认为这是不同的,因为它只与不等式约束有关:

松弛:一维数组

松弛变量的(名义上正)值,b_ub - A_ub @ x。

谢谢您的帮助!

尽管 Arraval 已经回答了我的问题。 我找到了一个我想分享的解决方法,也使用scipy Linprog尚未实现,但使用method='trust-constr'时, minimize function 可以返回拉格朗日乘数:

在此处输入图像描述

我希望这有帮助。

从 scipy 1.7.0 开始,还可以使用HiGHS 对偶单纯形求解器获得拉格朗日乘数(也称为对偶值影子价格):

import numpy as np
from scipy.optimize import linprog

c = -1*np.array([300, 500])
A_ub = np.array([[1, 2], [1, 1], [0, 3]])
b_ub = np.array([170, 150, 180])
A_eq = np.array([[1, 1]])
b_eq = np.array([80])

# solve c'x  s.t.  A_ub*x <= b_ub, A_eq*x == b_eq, x >= 0
result = linprog(c=c, A_ub=A_ub, b_ub=b_ub, method="highs-ds")

# lagrangian multipliers
λ_ineq = result['ineqlin']['marginals']
λ_eq   = result['eqlin']['marginals']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM