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

时间:2014-11-25 17:47:41

标签: algorithm

所以我想编写一个小程序,可以将一组人(100-200)分成几个相等的组(10-15)并有约束。

每个人都有一个他们来自的城市(通常约有8-12个不同的城市)。 在这个新部门之前,每个人都在一群人中(10-20个不同的团体)。 这就是它的例子。

现在我想把不同群体中的人分开,以便我们努力让每个团队中来自不同城市的人数相同(所以并非所有纽约人都在同一个团队中等),并努力让那些参与其中的人同一支球队之前不会再合作。

找不到可以帮助我的算法。

1 个答案:

答案 0 :(得分:1)

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

设置空团队。决定最大的团队规模。按照其他人的数量对人们进行排序(相同城市或同一团队)下降。将每个人都放在非完整团队中,与你想要避免的其他人最少,打破与小团队的关系,并随机打破任何剩余的关系。

无法保证产生最佳效果。但它很简单,会产生很好的效果。