我試圖弄清楚什麼是錯我的執行意想不到的解決方案,我希望得到的結果是[5, 10]
,我不明白它是如何得到[7.5, 7.5]
,x1
應該是一半x2
。從筆者線性規劃,等式約束
from scipy.optimize import linprog
import numpy as np
c = [-1, -1]
A_eq = np.array([
[1, 0.5],
[1, -0.5],
])
b_eq = [15, 0]
x0_bounds = (0, None)
x1_bounds = (0, None)
res = linprog(
c,
A_eq=A_eq.transpose(),
b_eq=b_eq,
bounds=(x0_bounds, x1_bounds),
options={"disp": True})
print res.x
# =>
# Optimization terminated successfully.
# Current function value: -15.000000
# Iterations: 2
# [ 7.5 7.5]
更新:
正如有人說這裏不需要矩陣轉置。 問題是在基質本身中,爲了獲得期望的結果,這是[5, 10]
,它必須是:
A_eq = np.array([
[1, 1],
[1, -0.5],
])
謝謝,原來的問題是沒有矩陣換位,這樣做可能是因爲晚上不知不覺,可能是因爲晚了,基本上找到了如何達到預期結果,矩陣的第一行必須是'[1,1]',再次感謝。 –
@RustyRobot很高興聽到您發現問題出在哪裏。不用謝! :) –