Algorithm 将一组人分成有约束的团队

Algorithm 将一组人分成有约束的团队,algorithm,Algorithm,所以我想写一个小程序,可以把一组人(100-200人)分成几个有限制的平等组(10-15人) 每个人都有一个来自的城市(通常总共8-12个不同的城市)。 在这个新的部门之前,每个人都属于一组人(10-20个不同的组)。 举个例子 现在我想把这些人分成不同的小组,这样我们就努力让每个团队中来自不同城市的人数相同(所以不是所有的纽约人都在同一个团队中等等),并努力让以前在同一个团队中的人不会再次组队 找不到一个算法可以帮助我。对于找到一个绝对最好的答案,有一种np完全的感觉。但是你只需要一个非常好的

所以我想写一个小程序,可以把一组人(100-200人)分成几个有限制的平等组(10-15人)

每个人都有一个来自的城市(通常总共8-12个不同的城市)。 在这个新的部门之前,每个人都属于一组人(10-20个不同的组)。 举个例子

现在我想把这些人分成不同的小组,这样我们就努力让每个团队中来自不同城市的人数相同(所以不是所有的纽约人都在同一个团队中等等),并努力让以前在同一个团队中的人不会再次组队


找不到一个算法可以帮助我。

对于找到一个绝对最好的答案,有一种np完全的感觉。但是你只需要一个非常好的答案,非常快,想出一个启发性的答案并不难

组建空队。决定团队的最大规模。按其他人数对人员进行排序,以避免(同一城市或同一团队)下降。将每个人都安排在非完整团队中,尽量避免与其他人接触,打破团队中与较小人员的联系,并随机打破任何剩余的联系


这并不能保证产生最佳结果。但它很简单,并且会产生相当好的结果。

取决于“奋斗”在这种情况下的含义。你可以按城市将人们分成小组(因此每个城市中有一个在一个小组中,而不是更多),然后随机洗牌这些城市成员的顺序,并将他们按顺序分组。在这里,你努力以一种简单的方式随机分组。我建议你通过一张纸上的例子。。。不难。在这里发帖,甚至没有尝试一个算法——或者你在导出算法时遇到的具体问题——都是非常糟糕的形式。。。。