2017-06-08 45 views

回答

2

每最大化問題可以通過-1的C-向量乘以轉化爲最小化問題:假設你有從documentation的2變量的問題,而是要最大限度地c=[-1,4]

from scipy.optimize import linprog 
import numpy 
c = numpy.array([-1, 4]) # your original c for maximization 
c *= -1 # negate the objective coefficients 
A = [[-3, 1], [1, 2]] 
b = [6, 4] 
x0_bnds = (None, None) 
x1_bnds = (-3, None) 
res = linprog(c, A, b, bounds=(x0_bnds, x1_bnds)) 
print("Objective = {}".format(res.get('fun') * -1)) # don't forget to retransform your objective back! 

輸出

>>> Objective = 11.4285714286 
+0

謝謝,它的工作。還有一個問題是如何在python中的相同[示例](https://docs.scipy.org/doc/scipy/reference/optimize.linprog-simplex.html)中定義上限和下限。例如,對於以下情況,您如何在python中執行此操作: 最小化:f = -1 * x [0] + 4 * x [1] 除-10:= -3 * x [0] + 1 * x [1] <= 6 – Anonymous

+0

您要求* ranged rows *,即具有2個不同右手邊的不等式(命名上限通常用於變量邊界)。訣竅是使用2個不等式。您可以直接輸入正確的不平等(<= 6)。係數和右邊-10 <= ...部分的右邊必須用-1來表示所需的第二個不等式。 – Gregor