gpt4 book ai didi

python - 即使存在解决方案,scipy.optimize.linprog 也找不到解决方案

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:23 27 4
gpt4 key购买 nike

我正在使用 Python 2.7.12 和 Numpy 1.11.0 尝试以下代码。

import numpy as np
from scipy.optimize import linprog

A = np.matrix([[1,0,0,1], [0, 1, 0 ,1], [0, 1, 1, 0]])
c = np.zeros(A.shape[1])
res = linprog(c,A_eq = A, b_eq = [0,1,-1], options=dict(bland=True))
print (res.x)
print (A.dot([0, 1, -2, 0]))

上面的输出是

nan
[[ 0 1 -1]]

因此,即使 A_eq 与 [0, 1, -2, 0] 的点乘输出明显存在解,scipy.optimize.linprog 也找不到解。

提出了类似的问题here我尝试了那里建议的解决方案(即添加 options=dict(bland=True) 或更新容差值)。我仍然得到与上面发布的相同的错误输出。这种行为的原因可能是什么?谢谢。

最佳答案

我是OP,解决方案是明确添加边界,如下所示:

 res = linprog(c, A_eq = A, b_eq = [0,1,-1], bounds=(None, None))

我的印象是,默认情况下,linprog 假设解决方案没有界限,但实际上默认界限是(0,无),即非负值。

docs 中提到了这一点:

bounds : sequence, optional

(min, max) pairs for each element in x, defining the bounds on that parameter. Use None for one of min or max when there is no bound in that direction. By default bounds are (0, None) (non-negative) ...

关于python - 即使存在解决方案,scipy.optimize.linprog 也找不到解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45416130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com