异步循环赛

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。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java检查整数是0还是检查变量是null更好?   java Android Kotlin(初学者)使用File(),并从ACTION\u GET\u内容返回Uri   java JavaFx在“内部场景”和根场景之间切换   spring将XMLBean配置转换为java配置   java JPA HIBERNATE映射列两次(embeddedID和POJO)   c#单态模式模型在什么情况下适用?   java请求。getRemoteUser在特定时间后返回null?   spring boot中PUT api控制器的java my单元测试用例失败   java在字符串中互换地解析和替换值   java Android JNI在应用程序中检测到错误:调用JNI GetMethodID时出现挂起异常   JavaSpringDataMongo:使用非简单键持久化映射   爪哇玻璃鱼连接被拒绝   java如何在用户注册时发送特定电子邮件id的自动回复?   Java列表:实例化时和之后的赋值之间的差异