复杂配对算法 - 团队锦标赛

时间:2017-05-20 15:02:53

标签: algorithm math tournament

我想请求一个我已经工作了很长时间的算法的帮助。我实际上几年前使用贪婪配对编程,但我并不满意。任何帮助将不胜感激!

开始做生意。我有一个锦标赛的应用程序(准确的沙滩排球,但应该适用于锦标赛格式的任何一对运动)。球员们出现在比赛日,并随机与其他参赛者和其他随机球队一起进行比赛。最重要的是尽可能多地玩,但玩家的数量并不总是可以被同时播放的点数整除。因此总会有一些玩家休息,站在那里,我试图通过使用2个变量来确保尽可能公平:     休息(白天休息的总数)     连续休息(显然连续休息几场)

比赛的最初概念是将每支球队中的1名男性(m)和1名女性(f)混合在一起,与另一支m / f队比赛。然而,休息部分更重要,并且通常有一个性别的玩家比另一个(即20 f和7 m)更多。该计划不应让男性每一轮比赛,而是应该让f / f队伍对阵f / f。但应该避免同性对比f / m。 球员应该每轮都有新的合作伙伴,并且每轮都要与新球队比赛。最好在再次与某人玩耍之前与所有异性玩家一起玩。玩家可以随意来人离开,也可以随时休息(自愿休息)。

我调查了不稳定的婚姻问题和室友问题,但我的问题似乎是两者的混合。通常会有两个玩家列表(m / f)和配对,但在某些前提下,应该只有一个列表,如上所述。让我举个例子:

示例:

  

43名球员参加6场比赛。     17名女性(f)和26名男性(m)。

     

6个球场适合12支球队,每轮共有24名球员。

     

第1轮

*12 m - 12 f*

*19 resting (5f, 14m)*
     

第2轮

     5f和14m有1次休息,应该玩。

     

最好的解决方案是:

*4 f - 4 m*

*1f - 1m*

*4m - 4m*

*1f - 1m* (these players played last round as well).

在这个例子中,如果从一开始就有49名玩家,那么连续通常不会有超过1个休息符。

在未来的更新中,我还计划让用户选择每个团队的玩家数量,并且还要跳过m / f必需品。

有什么想法吗?

0 个答案:

没有答案