梦幻英超梦幻队算法?

时间:2018-07-15 14:15:54

标签: algorithm optimization knapsack-problem

对于那些不熟悉FPL的人来说,这是一个简短的版本。您有球员担任守门员,后卫,中场或前锋。每个玩家都有一定的价格(四舍五入为0.5或.0),并且根据他们的真实生活表现,您可以获得积分。您的预算为100英镑,并且需要组建团队,请注意每个位置的球员人数都受到限制。

现在,问题是:如果您拥有一个季节中所有球员的价格,他们的位置和得分总数,那么如何找到得分最高的球队,例如4-4-2阵型? (1GK,4DEF,4MID,2FWD)

我想这是背包问题的一个变体,在这个问题中,您只能有11名球员和4-4-2阵型。 那么,这是解决该问题的最佳方法吗,您将如何通过这些修改/限制解决它,还是有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

将问题表示为整数程序,然后使用您喜欢的IP解算器(例如https://www.gnu.org/software/glpk/)解决。

对于每个球员p,该公式具有0-1决策变量x_p,如果该球员在团队中,则该决策变量为1。

maximize sum_{p in players} points-scored(p)
subject to
sum_{p in players} price(p) x_p <= 100
sum_{p in goalkeepers} x_p <= 1
sum_{p in defenders} x_p <= 4
sum_{p in midfielders} x_p <= 4
sum_{p in forwards} x_p <= 2
for all p in players, x_p in {0, 1}