[英]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.