【发布时间】:2020-07-31 06:10:28
【问题描述】:
是否可以像在 Matlab linprog 中一样从scipy linprog 检索拉格朗日乘数?如果有怎么办?
我阅读了文档,但没有找到。有一个return 参数调用slack 但我认为这是不同的,因为它只与不等式约束有关:
松弛:一维数组
松弛变量的(名义上正)值,b_ub - A_ub @ x。
感谢您的帮助!
【问题讨论】:
标签: python scipy mathematical-optimization
是否可以像在 Matlab linprog 中一样从scipy linprog 检索拉格朗日乘数?如果有怎么办?
我阅读了文档,但没有找到。有一个return 参数调用slack 但我认为这是不同的,因为它只与不等式约束有关:
松弛:一维数组
松弛变量的(名义上正)值,b_ub - A_ub @ x。
感谢您的帮助!
【问题讨论】:
标签: python scipy mathematical-optimization
从 scipy 1.7.0 开始,还可以使用HiGHS dual simplex solver 接收拉格朗日乘数(也称为对偶值或影子价格):
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']
【讨论】:
虽然 Arraval 已经回答了我的问题。我找到了一个我想分享的解决方法,也使用scipy。 Linprog 尚未实现,但 minimize 函数在使用 method='trust-constr' 时可以返回拉格朗日乘数:
我希望这会有所帮助。
【讨论】: