班级安排

时间:2012-06-21 15:20:07

标签: algorithm search

问题是这样的:

一所学校有不同的课程。每节课每周安排一次(8小时英语,6小时数学,2小时艺术等)。每个教师在课程的子集中都有一定的小时数。 (我猜学校就像几乎无处不在)。

可以添加一些额外的约束,例如:

  1. 老师X将不会在周一工作
  2. 老师Y在某个班级连续两个小时 等等。
  3. 目标是找到一个优化约束成本函数的计划。

    最后,我认为这是一个问题的NP问题。它可以使用空间状态搜索来解决(我们尝试所有可能的组合,使用一些聪明的搜索方式,我们选择最佳解决方案)。

    • 这可行吗? (组合很大,每班10个班,30个小时,7个科目大约10 ^ 253,即使可以进行一些实质性的修剪:我猜SAT求解器可以处理类似的事情。)

    • 完成搜索是否有任何改变,即使是近似的?

1 个答案:

答案 0 :(得分:1)

这是 Constraint Satisfaction Problem。如链接中所述,解决这些问题的方法之一是使用min-conflictsforward checking等本地搜索方法。您无法保证获得最佳解决方案,但通常会在相对较短的时间内获得“良好”解决方案。

如果您正在使用Prolog,clpfd库(有限域上的约束逻辑编程)非常强大。