1

我有一个赛车游戏中的车手列表,我想将车手分配给每队 3 名车手。每个车手都有一个评分(通常是大约 500 到 5000 之间的数字,越高越好),我想用这个评分来平等地匹配所有车队。同样,我的意思是每支车队的车手的平均评分应该尽可能接近。

不过还有一个重要的附加限制:我希望每支车队由一名高级车手(高评级)、一名中级车手和一名低级车手组成。这很重要,因为它会影响比赛的最终得分。虽然一个车队可以通过将三名中级车手加入一个车队来实现公平(平均评分可能与其他车队相似),但最终得分是基于每次都有一名排名靠前的车手和一名排名低的车手的假设。如果这不是真的,那么评分将不公平。

所以总结一下,要求是:

  • 从最多 39 个驱动程序的列表开始,
  • 将司机分配给最多 13 队 3 名司机,
  • 保持每支球队的平均评分尽可能与其他球队相同
  • 确保每次由一名高级车手、一名中级车手和一名低级车手组成。

如果没有额外的限制,我可以很容易地想出一些优化算法(甚至是蛮力?),试图等于每个团队的平均评分。但在那种情况下,我可能最终会得到很多拥有 3 名同等级别车手的车队,这不是我想要的。如何将我的附加约束添加到此优化问题?

即使我可以蛮力(我认为最多 13 支车队中的 39 名车手应该是可能的?),我仍然不知道如何决定哪种解决方案(== 车队和指定车手列表)是最好的。如何确定每个解决方案的“分数”或“适应度”?

4

2 回答 2

1

我会按等级(最高优先)为您的车手列表排序,并从 1 到 13 为每个团队分配一名车手。

然后将接下来的 13 名车手从 13 - 1 倒数分配到列表中,因此评分最低的 13 号车队将获得下一个评分最高的车手。

最后,如果您将每个车队的当前车手评分加在一起,并首先按最低评分排序,那么您可以将最后 13 名车手添加到车队中,其中总排名最低的车队将获得评分最高的剩余车手。

于 2013-04-16T10:23:53.777 回答
0

您有限制 - 每队 3 名车手,最多 39 名车手,评级分类为低/中/高,每个团队的每个级别都有一名车手。

因此,驱动程序的数量为 3xN。是这样吗?

而且你有优化的目标——媒体应该最大限度地接近。作为要优化的数字,(您提到的适应度),使用这些介质的标准平方。

Teams Mediums=M i , i - 车队数量
N -车队数量
A - 所有媒介或所有车手的平均值(相同数量)
A=sum(driver's rate)/(3*N)
S(Square of standard)= sum (((M i -A) 2

标准本身可以视为 sqrt,但您实际上并不需要它。

每个班级有 N 个司机。现在只需尝试每个三和弦组合并降低 S。

作为一种快速的方法,我看到以下内容:(选择最好的 1 级驱动程序,以及最差的 2 级和 3 级驱动程序。用剩下的驱动程序重复。如果你不听我的下一个建议)

问题是,通常更好的驱动程序之间的差异大于更差的驱动程序之间的差异。而一号车手的车队通常绝对是最好的。如果您想避免这种情况,您应该更改速率增益算法,以便驱动程序将在 500 和 5000 之间相对均匀地分布。

于 2013-04-16T11:07:48.567 回答