你在僅有3尺寸相等約束整數程序(IP)。等式約束2 x + 5 y + 8 z = 14
在三維空間中定義了一個平面。參數化它,
x = 7 - 2.5 u - 4 v
y = u
z = v
我們在2個維度獲得不受約束 IP。鑑於完整性約束,我們有u <- {0,2}
和v <- {0,1}
。枚舉所有雙,我們得出結論,最小值爲4
並且它達到在(u,v) = (2,0)
和(u,v) = (0,1)
,其對應於分別(x,y,z) = (2,2,0)
和(x,y,z) = (3,0,1)
。
使用PuLP解決整數程序:
from pulp import *
# decision variables
x = LpVariable("x", 0, None, LpInteger)
y = LpVariable("y", 0, None, LpInteger)
z = LpVariable("z", 0, None, LpInteger)
# define integer program (IP)
prob = LpProblem("problem", LpMinimize)
prob += x+y+z # objective function
prob += 2*x + 5*y + 8*z == 14 # equality constraint
# solve IP
prob.solve()
# print results
print LpStatus[prob.status]
print value(x)
print value(y)
print value(z)
產生x = 3
,y = 0
和z = 1
。
正如在下面的答案中指出的那樣,除非你對變量'x,y,z'有限制,否則問題是無界的。在一些問題中,所有變量都有一個下限爲零的情況很常見,但是您沒有指定這個。一般來說,對於Python中的線性編程問題,我會推薦[PuLP](https://pypi.python.org/pypi/PuLP)。 – kabdulla
也許這聽起來沒有意義,是否(x,y,z)需要是整數解決方案? – shole
是的,只尋找整體解決方案。 –