1

我正試圖解決線性化的DEA優化問題。在Python中爲DEA優化定義約束條件

這是我如何定義在Python的問題:

Philadelphia = plp.LpProblem("Philadelphia", plp.LpMaximize) 
U1 = plp.LpVariable("U1", 0) 
U2 = plp.LpVariable("U2", 0) 
V1 = plp.LpVariable("V1", 0) 
V2 = plp.LpVariable("V2", 0) 
Philadelphia += 700*U1 + 300*U2, "obj" 
Philadelphia += 700*U1 + 300*U2 - 40*V1 - 500*V2 <= 0, "c1" 
Philadelphia += 300*U1 + 600*U2 - 50*V1 - 500*V2 <= 0, "c2" 
Philadelphia += 200*U1 + 700*U2 - 50*V1 - 400*V2 <= 0, "c3" 
Philadelphia += 400*U1 + 600*U2 - 50*V1 - 500*V2 <= 0, "c4" 
Philadelphia += 500*U1 + 400*U2 - 40*V1 - 400*V2 <= 0, "c5" 
Philadelphia += 500*U1 + 500*U2 - 50*V1 - 500*V2 <= 0, "c6" 
Philadelphia += 800*U1 + 500*U2 - 40*V1 - 600*V2 <= 0, "c7" 
Philadelphia += 300*U1 + 200*U2 - 30*V1 - 400*V2 <= 0, "c8" 
Philadelphia += 40*V1 + 500*V2 = 1, "c9" 

然而,約束:

Philadelphia += 40*V1 + 500*V2 = 1, "c9" 

給出了錯誤「無效語法」用一個箭頭指向等號。

我該如何修改我的約束,以避免出現此錯誤?

+1

...這是無效的Python語法。你究竟想要做什麼? – CoryKramer 2014-09-23 20:59:56

+3

對於一切的愛,**編輯問題**。請參閱http://stackoverflow.com/help/mcve – jonrsharpe 2014-09-23 21:01:48

+0

@Cyber​​這是有效的代碼(儘管可以使用較少的約束來創建示例)。它使用稱爲PuLP的線性編程庫,並期望這種語法。 – Mike 2014-09-23 21:25:12

回答

1

爲了強制相等,PuLP語法需要==

Philadelphia += 40*V1 + 500*V2 == 1, "c9" 

這應該工作!