我正在尝试实现一个应用程序,它将学生分配给实验室中的l个实验室。制约因素是:
1:每个实验室的学生都要与新生一起工作。他说:所有的学生一次都应该是实验室的领导。
如果学生不能在实验小组中被平均分配,那么2是不可解决的。因此,如果“古怪”的学生永远不能成为实验室的领导,这是可以接受的。
我试过两种方法,但我还不高兴。
- lab 1: [0, 7, 14], [1, 8, 15], [2, 9, 16], [3, 10, 17], [4, 11, 18], [5, 12, 19], [6, 13, 20]
- lab 2: [6,12, 18], [0, 13, 19], [1, 7, 20], [2, 8, 14], [3, 9, 15], [4, 10, 16], [5, 11, 17]
- lab 3: [5, 10, 15], [6, 11, 16], [0, 12, 17], [1, 13, 18], [2, 7, 19], [3, 8, 20], [4, 9, 14]
实验室领导是第一实验室的第一列,第二组是第二实验室.
该解决方案运行良好,但例如,3个实验室的12名学生或6个实验室的150名学生都失败了。有什么建议吗?
2似乎处理同样数量的案件或组合,而且与1相比闪电速度快。也许我应该得到一个高尚的价格:-)
发布于 2012-02-14 14:19:55
限制#1本身通常被称为社会高尔夫球手问题。(设参数g为组数,s为每个组的大小,w为周数。分组是将g* s高尔夫球手划分为g个大小的组。确定是否可以找到w组,以便使每一对高尔夫球手最多一次分组。)在组合优化文献中研究了社会高尔夫球手问题,研究方法有三种(你可以用你最喜欢的搜索引擎找到研究文章):
要指定实验室领导,计算学生和实验室组之间的最大匹配,如果学生属于该实验室组,则在学生和实验室组之间有一个边缘。
https://stackoverflow.com/questions/9275462
复制相似问题