我一直在使用PuLP library
进行辅助项目(每日幻想体育),我根据一系列限制优化了阵容的预计值。
我已经实施了大部分内容,但有一个限制因素是玩家必须至少来自三个不同的小组。
此paper有一个实现(第18页,4.2),我已将其作为图像附加:
似乎他们以某种方式为每支球队得出一个指标变量,如果一支球队在阵容中至少有一名球员,那么它就会将这些指标的总和限制为大于或等于3.
有人知道如何在PuLP
中实现这一点吗?
类似的例子也会有所帮助。
任何帮助都会受到超级赞赏!
答案 0 :(得分:0)
在这种情况下,您将定义一个二进制变量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