2017-09-14 98 views
0

我一直在使用PuLP library作爲一個側面項目(每日幻想體育),其中我根據一系列約束來優化陣容的投影值。使用PuLP限制最小差異值

我已經實現了其中的大部分,但一個限制是玩家必須來自至少三個獨立的團隊。

paper有一個實現(第18頁,4.2),我已經把它貼爲圖像:

enter image description here

看來,他們以某種方式得到的指示變量對每個團隊,是一個如果給定的球隊至少有一名球員進入陣容,然後它將這些指標的總和限制爲大於或等於3.

有沒有人知道這將如何實施在PuLP

類似的例子也是有幫助的。

任何援助將超級讚賞!

回答

0

在這種情況下,您將定義一個二進制變量t,它設置x變量的上限。在python中,我不喜歡用單個字母來命名變量,但是因爲我沒有其他任何東西可以繼續,所以我將如何在紙漿中做到這一點。

假設變量lineupsplayersplayers_by_teamteams被設置在其他地方

x_index = [i,p for i in lineups for p in players] 
t_index = [i,t for i in lineups for t in teams] 
x = LpVariable.dicts("x", x_index, lowBound=0) 
t = LpVAriable.dicts("t", t_index, cat=LpBinary) 
for l in teams: 
    prob += t[i,l] <=lpSum([x[i,k] for k in players_by_team[l]]) 
prob += lpSum([t[i,l] for l in teams]) >= 3 
+0

非常感謝你。我能弄明白。 – user3382172