我想使用Python将n个播放器分为6组,这些组可以变化,但需要预先确定大小。例如,对于15位玩家:3组3位玩家和3组2位玩家。每个前三名玩家都可以提前将他们的偏好给予某些组。
PLAYER PREF 1 PREF 2 PREF 3
player1 group 3 group 4 group 6
player2 group 1 group 5 group 3
player3 group 2 group 1 group 3
... ... ... ...
组中的哪个玩家都没关系。我想确定10个或20个最佳组合,以使所有玩家都能获得其最喜欢的组。 (之所以选择这10或20,是因为还有其他重要因素,这些因素也会消除某些组合。)
现在,我编写了一些代码,该代码生成所有可能的组合,并根据获得其偏好之一的玩家数量(pref 1 = 3pts,pref2 = 2pts,pref3 = 1pt)对它们进行逐一评分。如果至少一个玩家没有获得前三名的组合,则此组合的总得分设置为0。仅保留得分最高的10个组合。这种方法对于有限的玩家来说已经足够好了,但是对于n> 15的玩家,计算花费了很长时间。我可以肯定这不是最好的方法,但是我不知道解决这个问题的最好方法是什么。 (我在想一种方法,该方法只能交换2个不同组的玩家,并评估这是否是向前的一步,但是我不确定应该如何实现。)