我需要开发一个课程时间表软件,可以有效地分配时间段和房间。这是一个基于课程的例程,而不是基于后期注册。并且有效地意味着课程根据工作人员的时间偏好分配时间段,并且还需要最小化第1年 - 第2年课程重叠,以便第2年学生可以重新学习他们未能通过的课程。(以及3至4年级的学生)
现在,起初我认为这将是一个容易的问题,但现在看起来有所不同。我看过的大多数论文都使用遗传算法/ PSO /模拟退火或这些类型的算法。我仍然无法将问题解释为GA问题。 令我困惑的是为什么几乎没有人建议使用DFS或图形着色算法?
如果使用DFS / graph-coloring,有人可以解释这个场景吗?或者为什么不建议或尝试它们。
答案 0 :(得分:2)
我为一个复杂的部门解决这个问题的经验是,通过精确的方法可以很容易地解决硬约束(比如同一群体所采用的课程没有重叠,以及教师的严格约束)。我用0-1整数线性编程模拟了问题,并用一个名为minisat +的基于SAT的工具解决了这个问题。像cplex这样的竞争性商业工具也可以解决它。 因此,使用今天的工具,即使输入相当大,也无需按照上面的建议进行近似。 现在,优化解决方案是另一回事。可以存在许多(加权)目标,并且找到使目标达到最小的解决方案确实非常难以计算(我试过的工具可以在24小时内解决它),但它们在几个小时内达到接近最佳状态(我知道)它接近最佳,因为我可以计算解决方案的理论界限。
答案 1 :(得分:0)
本文档介绍了如何将GA方法应用于大学时间表,因此它应该直接适用于您的要求:Using a GA to solve university time-tabling