调度算法/问题

时间:2009-10-20 21:51:28

标签: algorithm scheduling

我很无聊,这个问题再次困扰着我。回到大学时,我常常想知道他们如何安排考试。能够安排10k学生在2周内完成考试,并保证没有学生连续两个学期参加考试。我假设应用某种形式的启发式方法。

今晚我很无聊,如果你给我正确的工具,我会在今晚和周末工作

欢呼声, dassouki

编辑1: 我想我们所知道的就是以下几点:

  1. 学生人数及他们每人注册的课程
  2. 考试时段的数量

10 个答案:

答案 0 :(得分:17)

这是着名的计算机科学问题(exam scheduling problem),已知为NP-hard。你可能无法在周末解决它。

答案 1 :(得分:7)

我知道这对于SO来说是偏离主题的,但是我的大学只是安排了与课堂时间相匹配的考试。所以,每个下午1点20分有MWF班级的人都在15日下午1点参加考试。由于你不能同时参加两门课程,所以不可能有考试冲突。

答案 2 :(得分:5)

这是约束满足问题的一个例子,这是一类困难的问题。其中一些人在NP级。存在大型商业软件包试图解决这些问题(例如CPLEX) - 一般来说,它们使用一些数学和大量的启发式算法。

答案 3 :(得分:1)

这很贵,但我看到CPLEX用于类似的问题。

答案 4 :(得分:1)

问题实际上可能比这更普遍。例如,在我的学校,考试安排在课程安排时 - 即通常在学期期间同时开课的所有课程,在考试周的某个区段安排考试(不一定同时考试)然而,常规班级会议。因此,由于显而易见的原因,学生不会在同一会议时间参加两个班级,因此通常不存在冲突,因此不会同时进行两次考试。

但是,这意味着您仍然需要安排以便它们不会发生冲突。 :)

答案 5 :(得分:1)

我在主人中使用了tabu search。这个想法并不太复杂:

  1. 从一个可能的解决方案(任何人)开始,然后选择它(例如,如果一个学生同时进行两次考试,则给予-1000分)
  2. 只需更改一些作业并重新计算考虑因素即可更改该解决方案
  3. 如果2.优于1.并以2.作为根解决方案重复开始
  4. 如果您被阻止,您可以通过对初始解决方案进行重要更改来“访问”其他解决方案。

答案 6 :(得分:1)

当我在大学读书时,我们在AI课程中做了类似的最终项目。我们写了一个(几乎没有)工作系统来在适当的时间安排建筑物的课程。不能违反某些规则:如果教授。需要一个多媒体教室,他有一个。如果它是CS类,那么它不应该安排在艺术大楼。教授在课堂等之间的时间不得超过2小时。

我们使用了遗传算法。

答案 7 :(得分:1)

使问题更简单的一些事情。通过查看坐在同一套考试中的人,你可以将“预定单位”的数量从数万减少到几百。如果你有300人都坐在“计算机科学概论”和“CS学生数学”中,你可以将所有300个人作为一个单元安排,因为他们都有相同的限制,你(可能)不想要相同考试将在多个位置进行。

答案 8 :(得分:1)

Drools Planner有一个考试安排示例(称为考试,请参阅下载和参考手册)。问题在the ITC2007 competition track 1中指定。

答案 9 :(得分:1)

这是graph coloring problem的应用程序。这个问题可以表示为一个图形,其中每个顶点都是一个过程,两个顶点之间的边缘意味着有一个共同的学生在两个课程中注册。所以这是一个图形着色问题,其中最小数量的时隙等于着色图形顶点所需的最小颜色数,使得没有两个相邻顶点共享相同的颜色。