【问题标题】:Course Scheduling Algorithms: why use of DFS or Graph coloring is not suggested?课程安排算法:为什么不建议使用 DFS 或图形着色?
【发布时间】:2012-10-31 23:18:45
【问题描述】:

我需要开发一个课程时间表软件,它可以有效地分配时间段和房间。这是基于课程的例行程序,而不是基于注册后的程序。并且有效地意味着根据员工时间偏好为课程分配时间段,并且还需要最大限度地减少第一年和第二年的课程重叠,以便第二年的学生可以重新参加他们未能通过的课程。(以及第三年和第四年的对) .

现在,起初我认为这将是一个简单的问题,但现在似乎不同了。我看过的大多数论文都使用遗传算法/PSO/模拟退火或这些类型的算法。而且我仍然无法将问题解释为 GA 问题。 我很困惑的是为什么几乎没有人建议 DFS 或 Graph-coloring 算法?

如果使用 DFS/图形着色,有人可以解释一下场景吗?或者为什么不建议或尝试它们。

【问题讨论】:

  • 根据细节,您的问题可能是“NP-Complete”。如果是这样,对于所有已知的精确算法,时间随着问题的大小呈指数增长。对于除了非常小的问题之外的任何问题,您都必须使用某种近似启发式算法,而不是精确算法。一般的图着色绝对是 NP-Complete。
  • 稍微扩展一下,任何常见的难题都具有良好的启发式方法,可以为该问题实现准确度和性能的合理组合。除非我正在着手一项重大的研究项目,否则我会采用一种普遍推荐的方法。
  • 作业调度或“时间表”问题如果引入了几个现实世界的约束,则往往是 NP-Complete 的。通过大量简化,它们可以在 P 时间内完成。因此,类似 DFS 的搜索是一种选择,但不是首选方法。只是其他几种优化技术(您已经发现)更适合此类问题。
  • 过快地调用“NP-complete”是调度算法合理讨论的祸根。 许多现实世界的问题可以在与可接受误差成正比的 P 中解决。 Vazirani 的“逼近算法”是从事此类工作的书架必备:amazon.com/Approximation-Algorithms-Vijay-V-Vazirani/dp/…
  • 如果问题规模足够小,我建议使用蛮力(例如 DFS),因为这样可以保证找到最佳解决方案,但是一旦问题规模太大,就会导致蛮力采取太长了。

标签: algorithm combinatorics genetic-algorithm mathematical-optimization evolutionary-algorithm


【解决方案1】:

本文档描述了将 GA 方法应用于大学时间表,因此它应该直接适用于您的要求:Using a GA to solve university time-tabling

【讨论】:

  • 我已经更新了链接 - 不知道发生了什么,但我一定是错误地提取了 URL。对不起。
【解决方案2】:

我为一个复杂的部门解决这个问题的经验是,硬限制(例如同一人群所学的课程没有重叠,以及教师的硬限制)很容易通过精确的方法解决。我使用 0-1 整数线性规划对问题进行建模,并使用名为 minisat+ 的基于 SAT 的工具解决了这个问题。像 cplex 这样的竞争性商业工具也可以解决它。 因此,使用今天的工具,即使输入相当大,也不需要像上面建议的那样进行近似。 现在,优化解决方案是另一回事。可以有许多(加权)目标,并且找到使目标最小化的解决方案在计算上确实非常困难(我尝试过的任何工具都无法在 24 小时内解决它),但它们在几个小时内达到接近最佳状态(我知道它接近最优,因为我可以计算解决方案的理论界限)。

【讨论】:

  • 这取决于问题的大小,但这肯定是我开始的方式。当您可以先用 MIP 锤子敲击它并查看它是否足够好时,没有理由编写算法。编写模型还有一个非常有用的附加好处,就是让您思考问题并确保您有正确的约束和目标。
猜你喜欢
  • 2021-09-19
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
相关资源
最近更新 更多