产生排列

时间:2018-11-26 11:22:16

标签: excel vba permutation

我有n位玩家分配给n场比赛。 10 <= n <= 20。每个玩家最多可以注册3个游戏,但只能获得一个。不同的玩家对于他们注册的每个游戏都有不同的分数。

有10个玩家的示例:

score of 10 players

总是可以将玩家x分配给游戏x,但总得分不一定总是最高。

我的目标是获得尽可能高的分数,因此我想测试不同的排列。我可以在理论上测试所有排列并丢弃不可行的排列,但这会给我带来很多可能性(n!)。 最多可以减少3个游戏的注册限制吗?也许比我的方法更容易做到?有什么想法吗? 我正在使用Excel VBA。

希望您能像我一样有趣...

对不起,如果您发现不清楚!我的问题是是否有可能生成所有排列的子集。仅精确地列出可行指标(没有任何零分的指标)。

1 个答案:

答案 0 :(得分:1)

好吧,只需使用线性编程在求解器中进行设置即可,如图所示。显示了公式,以便您也可以构建公式以及求解器设置。

不会给出排列,但可以求解最高组合。 编辑,更新图像...在尝试使其适合合理大小后,现在可以显示正确的计算范围...

enter image description here