异步循环赛
asyroro的Python项目详细描述
想象一下你正在组织一场为期一天的足球赛。五支队伍 会来的,每个队都应该和其他队比赛,而你只有 一个领域。这被称为异步循环赛。与 itertools,python使打印所有游戏的列表变得很容易:
import itertools
list(itertools.combinations(range(5), 2))
输出将是:
^{pr2}$这里,第一个元素(0,1)表示0队在 第一场比赛,第二个元素(0,2)意味着0队将与 第二场比赛的第二场,以此类推。不幸的是,游戏规则 不适合。0队必须连续打四场比赛而不休息, 其他大多数球队也必须连续打两场或更多场比赛。在 对比度,不对称.py创建一个平衡的时间表。在
用法:
执行脚本asyroro.py
来运行几个示例。调整代码
满足你自己的需要。有5支球队参加的锦标赛(称为a、B、C、D、E
在这里),计算出的10场比赛是:
(A-B) (D-C) (E-A) (B-C) (D-E) (C-A) (B-D) (C-E) (A-D) (E-B)
实施:
对于偶数个团队,圆方法[1,2]用于 生成计划。对于奇数个团队,圆法 不产生令人满意的结果,并且建议的方法 而是使用Suksompong[3]。根据 下面的第四个标准,一个类似于创建规则的方法 使用Herke[4]提出的锦标赛。在
质量控制:
有几个标准定义了一个平衡的时间表的质量:
- 在
保证休息时间(GRT)
如上所述,每个小组都应该先休息一下 必须再玩一次。任何球队的最低休息时间是“保证” 休息时间“GRT[3]。例如,如果时间表的GRT为2,则 每支球队都有至少2场比赛的休息时间 再玩一次。在
对于asyroro生成的时间表,偶数个团队的GRT=k-2 (2k)和GRT=k-1,对于奇数个团队(2k+1)。在
在 - 在
游戏玩法差异(GPD)
在比赛期间的任何时候,每支球队都应该 玩了类似数量的游戏。游戏玩了不同的GPD[3] 是进度表中出现的最大差异。在
对于所有Asyro生成的计划,GPD=1
在 - 在
休息差指数(RDI)
两队比赛时,休息时间不同 他们不能有相同的休息时间,因为 会在上一场比赛中互相对抗)。 调度中出现的最大休息差称为 静息差分指数RDI[3]。在
ASYROR生成的2个团队的计划数=偶数 对于奇数个队,RDI=1。在
在 - 在
锦标赛不规则指数(TII)
比赛场地的两半部分可能没有相同的质量,因为 一方面,玩家必须直接观察 落日,这是一个缺点。因此,所有团队都应该 每半场比赛的数量大致相同。让我们说说符号 (0-1)表示0队在左边,1队在右边 侧面。如果一个有3支队伍的锦标赛的赛程是(0-1)(0-2) (1-2),那么第二个游戏需要更改才能获得 平衡时间表:(0-1)(2-0)(1-2)。在图论中,这种平衡 (或几乎平衡的)时间表称为常规(或半常规) 锦标赛。在这里,我把游戏之间的最大差异称为 左边和右边的比赛适合任何一支球队参加 不规则指数。在
对于异步生成的计划,偶数的TII=1(半正则) 团队数量,对于奇数个团队,TII=0(常规)。在
在
参考文献:
[1]Arunachalam Y.锦标赛日程安排 https://nrich.maths.org/1443。在
[2]维基百科。循环赛 https://en.wikipedia.org/wiki/Round-robin_tournament#Scheduling_algorithm。在
[3]苏克松庞。安排异步循环赛。 操作s Research Letters,44:961002016年 http://dx.doi.org/10.1016/j.orl.2015.12.008。在
[4]S.赫尔克。有趣的图表,2014年 https://www.youtube.com/watch?v=tKpariULmPI。在
阿凡达项目是从 https://commons.wikimedia.org/wiki/File:4-tournament.svg。在
- 项目
标签: