3v3循环时间表生成器

时间:2018-10-11 17:07:05

标签: scheduling round-robin tournament

我被要求为3v3排球比赛制定轮转时间表,必须满足以下条件:(从最重要到最不重要)

每个玩家最多只能与另一个玩家玩一次    每个玩家至少玩4次    每个玩家最多只能坐一轮    每个玩家不会再与其他玩家对战
         比两倍

当我遇到以下情况时,我正在努力解决蛮力问题:    40名选手    4个法院

我已经能够强行为15个团队提供半功能解决方案,但是手工操作变得太笨拙了,因此我想尝试使用Java程序。我不完全确定如何制定一个蛮力程序来做到这一点。我目前正在尝试使用每3人一组的清单,并将其插入时间表。然后遍历它们进行替换,直到游戏运行。

这是另一个人问的相同问题的另一个版本    https://eso-community.net/viewtopic.php?t=9816

此处的最高答案为8-13岁的团队提供了完美的解决方案

1 个答案:

答案 0 :(得分:0)

40人问题有很大的搜索空间,我不认为任何强力解决方案都行得通。只需考虑选择参加一轮比赛的24名球员,就有6x10 ^ 10的方式可以做到这一点,还有更多的方法可以将这24名球员分配到3对3的4个场上。

目前尚不清楚您要寻找的可能如何。拥有4个球场,每个球场6名球员,每轮留下16个再见。因此,非常希望有5圈的任何倍数(i),因为16 x 5i = 80i,因此可以安排每进行5i轮比赛,40支球队中的每支球队都有3i场比赛和2i场比赛。您要求“每个玩家至少玩4次”,所以最好的选择是寻找10轮回合的解决方案,其中每个玩家有6场比赛。这是一个可能的选项,其中所有伙伴都不同,而所有对手都不同。

  (38 15 11 v  7 25 23) (33 14  9 v 20 29 19) (40 16 27 v 37 28 21) (34 17  3 v 10 24 32)
  (39 11 12 v  8 21 24) (34 15 10 v 16 30 20) (36 17 28 v 38 29 22) (35 18  4 v  6 25 33)
  (40 12 13 v  9 22 25) (35 11  6 v 17 26 16) (37 18 29 v 39 30 23) (31 19  5 v  7 21 34)
  (36 13 14 v 10 23 21) (31 12  7 v 18 27 17) (38 19 30 v 40 26 24) (32 20  1 v  8 22 35)
  (37 14 15 v  6 24 22) (32 13  8 v 19 28 18) (39 20 26 v 36 27 25) (33 16  2 v  9 23 31)
  (36  5 33 v 12 32 15) (13  7 24 v 20  4  2) (25  1 28 v 30 10 31) (37 26 38 v  3  9 18)
  (37  1 34 v 13 33 11) (14  8 25 v 16  5  3) (21  2 29 v 26  6 32) (38 27 39 v  4 10 19)
  (38  2 35 v 14 34 12) (15  9 21 v 17  1  4) (22  3 30 v 27  7 33) (39 28 40 v  5  6 20)
  (39  3 31 v 15 35 13) (11 10 22 v 18  2  5) (23  4 26 v 28  8 34) (40 29 36 v  1  7 16)
  (40  4 32 v 11 31 14) (12  6 23 v 19  3  1) (24  5 27 v 29  9 35) (36 30 37 v  2  8 17)