我想就我已经研究了很长时间的算法寻求帮助。实际上,几年前我主要使用贪婪配对对其进行了编程,但我并不满意。任何帮助将不胜感激!
所以说正事。我有一个参加锦标赛的申请(确切地说是沙滩排球,但应该适用于任何以锦标赛形式进行的双人运动)。球员们在锦标赛当天出现,并与其他参与者随机组合并与其他随机球队对抗。最重要的是尽可能多地玩,但是玩家的数量并不总是能被同时玩的地方的数量整除。因此,总会有许多球员在休息,也就是说,我正试图通过使用 2 个变量来确保这尽可能公平: 休息(一天中的休息总数) 休息排(显然是连续休息几场比赛)
比赛的最初概念是混合队伍,每队有 1 男(男)和 1 女(女),与另一支男/女队比赛。然而,休息部分更重要,通常有比另一种性别更多的球员(即 20 f 和 7 m)。与其让男性参加每一轮比赛,不如让 f/f 的团队与 f/f 比赛。不过,应该避免同性与 f/m。玩家每轮都应该得到新的伙伴,每轮都要和新的球队比赛。最好在再次与某人玩耍之前与所有异性玩家一起玩。球员可以来去自如,也可以随时休息(自愿休息)。
我研究过不稳定的婚姻问题和室友问题,但我的问题似乎是两者的混合。通常会有两个球员名单(男/女)和配对,但在某些前提下,应该只有一个名单组成的球队,如所描述的。让我给你举个例子:
例子:
43 名球员参加了一场有 6 个球场的锦标赛。17 名女性 (f) 和 26 名男性 (m)。
6 个球场可容纳 12 支球队,每轮共有 24 名球员。
第1轮
*12 m - 12 f* *19 resting (5f, 14m)*
第二轮
5f和14m有1个休息,应该玩。
最好的解决方案是:
*4 f - 4 m* *1f - 1m* *4m - 4m* *1f - 1m* (these players played last round as well).
在这个例子中,如果从一开始就有 49 名玩家,通常不会连续超过 1 个休息。
在未来的更新中,我还计划让用户选择每支球队的球员人数,并跳过 m/f 必要条件。
有什么想法吗?