使用PuLP限制最小差异值
问题描述:
我一直在使用PuLP library
作为一个侧面项目(每日幻想体育),其中我根据一系列约束来优化阵容的投影值。使用PuLP限制最小差异值
我已经实现了其中的大部分,但一个限制是玩家必须来自至少三个独立的团队。
这paper有一个实现(第18页,4.2),我已经把它贴为图像:
看来,他们以某种方式得到的指示变量对每个团队,是一个如果给定的球队至少有一名球员进入阵容,然后它将这些指标的总和限制为大于或等于3.
有没有人知道这将如何实施在PuLP
?
类似的例子也是有帮助的。
任何援助将超级赞赏!
答
在这种情况下,您将定义一个二进制变量t
,它设置x
变量的上限。在python中,我不喜欢用单个字母来命名变量,但是因为我没有其他任何东西可以继续,所以我将如何在纸浆中做到这一点。
假设变量lineups
,players
,players_by_team
和teams
被设置在其他地方
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
非常感谢你。我能弄明白。 – user3382172