Algorithm 优化组合算法

Algorithm 优化组合算法,algorithm,Algorithm,我将在一周内组织一场比赛。我开始思考以数学的方式安排团队的最佳方式(这样他们才真正公平,从而更有竞争力)。以下是数据: 20名选手参加了比赛 每个玩家被分配一个技能等级(高数值=熟练) 4个团队,每个团队5名球员(尽管我更喜欢构建一个算法,将这些作为 变量) 我正在用电脑解决这个问题 所以,我有20名球员。我想组建4支球队,每个队有5名球员。为此,我想生成一个所有可能的团队组合的列表。为了评估团队组合,我: 生成团队组合(一场比赛) 根据每个团队中的球员计算出每个团队的总技能 将每支球队相

我将在一周内组织一场比赛。我开始思考以数学的方式安排团队的最佳方式(这样他们才真正公平,从而更有竞争力)。以下是数据:

  • 20名选手参加了比赛
  • 每个玩家被分配一个技能等级(高数值=熟练)
  • 4个团队,每个团队5名球员(尽管我更喜欢构建一个算法,将这些作为 变量)
  • 我正在用电脑解决这个问题
所以,我有20名球员。我想组建4支球队,每个队有5名球员。为此,我想生成一个所有可能的团队组合的列表。为了评估团队组合,我:

  • 生成团队组合(一场比赛)
  • 根据每个团队中的球员计算出每个团队的总技能
  • 将每支球队相互比较,比赛中任何两支球队之间的最大差异是该比赛的“容忍度”。如果公差级别高于某个上限,则放弃匹配
我目前的方法是生成一个长度为N位数的基数X,其中X是我想要的球队数量,N是球员数量。然后将基数X增加1,我将得到所有可能的团队组合,并且我可以生成一个具有低容差值的匹配列表

正如你可能知道的那样,这个问题是针对4支拥有20名球员的球队,即(4-1)^20在3垒,这是需要检查的1E12场比赛。(这在我的电脑上需要很长时间)。有没有一种数学方法可以在短时间内简化此计算


根据目前的方法,还考虑到球员分布不均匀的可能性,这是最好的。如果一个高性能的算法不能实现这一点,那么不使用它是可以的

尝试以下方法:

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

当玩家的技能分布比较均匀时,这种方法效果很好。如果没有,那么团队之间差异更大的概率就更高。

如果你想利用数学结构来击败暴力,那么你需要更正式地表述它。技能水平不是数学术语(二进制、整数、浮点、有界与否、非负…)。通常有一个成本函数需要优化,但这很难在这里读出,因为您似乎使用(随机?部分?)匹配/比赛-“模拟”,这不容易转换为通常的离散opt方法。我也不清楚整件事。你的计算忽略了(某些)对称性,但对称性并不总是容易打破的。