问题描述
我正在考虑使用整数规划来生成组成一支球队的足球运动员的最佳组合。
尽管问题本身很简单,但我无法为职位资格制定有效的约束条件。
我在 stackoverflow 中搜索了经典整数规划问题的变体,并提出了一个临时解决方案,但想验证当前的解决方案是否有效。
问题
从一组有限的潜在球员中为一支足球队选择 11 名球员。
球队由11个位置组成:5个进攻,5个防守和1个守门员。
每个角色都有自己的合格玩家池。
(例如守门员只能从一组戴手套的球员中选择)
每个玩家都会被分配一个代表他们技能的“技能分数”
目标函数
最大化:所有 11 个玩家技能得分的总和
约束
- 所有 11 个插槽必须至少有 1 名玩家填满
- 1 个玩家只能占用 1 个位置
- 每个空位必须由有资格担任该角色的球员填补
我的临时解决方案
Let xij: player i in consideration for slot j (j=1,2,...,11,1 <= i <= n)
and w: n x 1 weight matrix representing skill score for player i
1. sum_j(xij) == 1 for each slot j
2. 0 <= sum_i(xij) <= 1 for each player i
3. 0 <= xij <= 1 if player i is eligible for slot j,== 0 otherwise
maximize sum(wTx)
我还想不出一种优雅的方法来操作 3,所以我现在的答案是将每个单元格硬编码为 0。
我打算在 Python(cvxpy 或 PuLP)中使用整数编程库。
当前的设计是否会导致收敛或计算时间方面的问题?
是否有更有效的方法来对问题建模?
注意事项
- 为简单起见,我们假设一个玩家可以成为多个角色的候选人,但他们的技能点不会因角色而变化
- 如果玩家的技能分数根据他们与其他玩家的协同作用而变化,问题的表述是否会改变?我认为通过 nC2 可能的交互简单地扩展 x 矩阵是可行的,但我很好奇是否有更好的解决方案。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)