如何解决这种kirkkmans女学生的变化

时间:2012-02-14 10:41:57

标签: algorithm scheduling

我正在尝试实施一个应用程序,将学生分配给实验室组中的l个实验室。约束是:

1:学生应与每个实验室的新生一起工作。 2:所有学生一旦成为实验室领导者。

如果学生不能在实验室组中均匀分配,则

2无法解决。因此,如果“奇怪”的学生永远不会成为实验室领导者,那是可以接受的。

我尝试了两种方法,但我还不满意。:

  1. 禁忌搜索,解决1但解决问题2(我实际上先解决1然后尝试解决2,这可能是错误的方法,任何建议)

  2. 一个简单的解决方案,我将#labs中的学生分成一个数组[0..6] [7..14] [15..21],然后旋转(带0,1,2 inc) )并转置矩阵,以递增的旋转(1,2,4)和(2,4,6)重复#labs次。对于实验组为7的3个实验室中的21名学生,结果如下:

    • 实验室1:[0,7,14],[1,8,15],[2,9,16],[3,10,17],[4,11,18],[5,12 ,19],[6,13,20]
    • 实验2:[6,12,18],[0,13,19],[1,7,20],[2,8,14],[3,9,15],[4,10 ,16],[5,11,17]
    • 实验3:[5,10,15],[6,11,16],[0,12,17],[1,13,18],[2,7,19],[3,8 ,20],[4,9,14]
  3. 实验室领导者是​​实验室1的第一列,第二列是实验室2 ......

    此解决方案效果不错,但例如3个实验室的12名学生或6个实验室的150名学生失败。有什么建议吗?

    2似乎处理相同数量的案例或组合,与1相比闪电般快。也许我应该得到一个高贵的价格: - )

1 个答案:

答案 0 :(得分:2)

仅限约束#1通常被称为社交高尔夫球手问题。 (让参数g为组的数量,s为每组的大小,w为周数。分组是g * s高尔夫球手分成g组的大小为s。确定是否可以找到w分组每对高尔夫球手最多被组合在一起。)社交高尔夫球手问题已经在组合优化文献中进行了研究,这些方法有三种类型(你可以用自己喜欢的搜索引擎找到研究文章):

  1. 本地搜索。当w远低于其最大可行值时,这是有效的。 Dotú and Van Hentenryck有一篇论文将禁忌搜索应用于社交高尔夫球手问题。

  2. 完成搜索。当w高于或低于其最大可行值时,这是必要的,但它不能很好地扩展。

  3. 代数结构。这就是臭名昭着的g = 8 s = 4 w = 10实例的解决方法。不幸的是,对于许多参数集,没有已知的结构。

  4. 要分配实验室负责人,请在学生和实验室小组之间计算maximum matching,如果该学生属于该实验室小组,则学生和实验室小组之间存在优势。