我有一个赛车游戏中的车手列表,我想将车手分配给每队 3 名车手。每个车手都有一个评分(通常是大约 500 到 5000 之间的数字,越高越好),我想用这个评分来平等地匹配所有车队。同样,我的意思是每支车队的车手的平均评分应该尽可能接近。
不过还有一个重要的附加限制:我希望每支车队由一名高级车手(高评级)、一名中级车手和一名低级车手组成。这很重要,因为它会影响比赛的最终得分。虽然一个车队可以通过将三名中级车手加入一个车队来实现公平(平均评分可能与其他车队相似),但最终得分是基于每次都有一名排名靠前的车手和一名排名低的车手的假设。如果这不是真的,那么评分将不公平。
所以总结一下,要求是:
- 从最多 39 个驱动程序的列表开始,
- 将司机分配给最多 13 队 3 名司机,
- 保持每支球队的平均评分尽可能与其他球队相同
- 确保每次由一名高级车手、一名中级车手和一名低级车手组成。
如果没有额外的限制,我可以很容易地想出一些优化算法(甚至是蛮力?),试图等于每个团队的平均评分。但在那种情况下,我可能最终会得到很多拥有 3 名同等级别车手的车队,这不是我想要的。如何将我的附加约束添加到此优化问题?
即使我可以蛮力(我认为最多 13 支车队中的 39 名车手应该是可能的?),我仍然不知道如何决定哪种解决方案(== 车队和指定车手列表)是最好的。如何确定每个解决方案的“分数”或“适应度”?