2017-09-14 69 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