使用 numpy、scipy 版本
numpy 1.25.0
scipy 1.11.0
以下
scipy.optimize.linprog
电话,
import numpy as np
from scipy.optimize import linprog
A_ub = np.array(
[[-0.15729144, 0.29943807, 0.29311432],
[-1.32475528, -2.1125364 , -1.55138585],
[ 1.00861965, 0.53283629, -0.14939833],
[ 1.07581479, 0.164022 , -1.19889684]])
b_ub = -np.ones(4)
print(linprog(np.zeros(3),
A_ub=A_ub,
b_ub=b_ub))
返回不可行状态,
message: The problem is infeasible. (HiGHS Status 8: model_status is Infeasible; primal_status is At lower/fixed bound)
success: False
status: 2
fun: None
x: None
nit: 0
但是这个问题实际上是可行的,因为
x0 = np.array([ 229.1748166 , -507.05266751, 512.14005547])
print('x0 is feasible?', (A_ub @ x0 <= b_ub).all())
返回 True。在这种情况下,
linprog
不应该返回一个可行点以及不同的状态代码和消息吗?
来自 https://docs.scipy.org/doc/scipy/reference/ generated/scipy.optimize.linprog.html:
请注意,默认情况下 lb = 0 且 ub = None。
所以
x0 = np.array([ 229.1748166 , -507.05266751, 512.14005547])
是不可行的。