用PuLP约束最小的不同值

时间:2017-09-14 05:31:58

标签: optimization linear-programming pulp

我一直在使用PuLP library进行辅助项目(每日幻想体育),我根据一系列限制优化了阵容的预计值。

我已经实施了大部分内容,但有一个限制因素是玩家必须至少来自三个不同的小组。

paper有一个实现(第18页,4.2),我已将其作为图像附加:

enter image description here

似乎他们以某种方式为每支球队得出一个指标变量,如果一支球队在阵容中至少有一名球员,那么它就会将这些指标的总和限制为大于或等于3.

有人知道如何在PuLP中实现这一点吗?

类似的例子也会有所帮助。

任何帮助都会受到超级赞赏!

1 个答案:

答案 0 :(得分: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