优化组合算法

时间:2018-06-02 14:50:45

标签: algorithm

我在一周内组织了一场比赛。我开始考虑数学安排团队的最佳方式(这样他们才真正均匀,因此更具竞争力)。所以这里是数据:

  • 活动中有20名球员
  • 为每位玩家分配技能等级(高数字=熟练)
  • 每队5名队员的4支队伍(虽然我更喜欢建立一个算法,将这些作为 变量)
  • 我正在使用计算机来解决问题

所以,我有20名球员。我想生成4支球队,每队5名球员。为此,我想生成所有可能的团队组合的列表。为了评估团队组合,我:

  • 生成团队组合(匹配)
  • 根据该团队中的球员总结每支球队的总技能
  • 将每支球队相互比较,比赛中任意两支球队之间的最大差异是"公差"该比赛的水平。如果容差级别高于特定上限,则匹配将被丢弃

我目前的做法是生成一个长度为N位的基数X数,其中X是我想要的球队数,N是球员数。然后将基数X增加1,我将获得每个可能的团队组合,并且我可以生成具有低容差值的匹配列表。

正如您可能知道的那样,问题在于4支队伍中有20名队员,其中3名队员(4-1)^ 20队伍,这是1E12场比赛。 (这在我的电脑上需要很长时间)。有一种数学方法可以在短时间内简化计算吗?

通过当前的方法还允许不均衡的玩家分散在多个团队中的可能性,这是优选的。如果这不能与高性能算法一起出现,那么可以不使用它。

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

  • 对于1至4队:从剩下的
  • 中选出最强的球员
  • 另一个方向相同:从4到1
  • 再次1至4
  • 再次4比1
  • 在最后一轮使用随机

当玩家技能或多或少地均匀分布时,这很有效。如果没有,那么团队之间更大差异的概率就更高。