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

最佳答案

我会按等级(最高第一名)排列你的司机名单,从1到13给每个车队分配一名司机。
然后将接下来的13名车手从13-1向后分配到列表中,这样排名最低的13号车队将获得排名第二的车手。
最后,如果将每个团队的当前驱动程序评级相加,并首先按最低评级对其进行排序,则可以将最后13个驱动程序添加到团队中,其中总排名最低的团队将获得最高评级的剩余驱动程序。

关于algorithm - 将赛车手分成相等团队的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16034311/

10-11 06:14