我必须实现一种算法,为大学生成时间表。我搜索并发现了很多算法。但问题就在这里。我需要一种算法来生成整个学期的时间表,而不是每周一次。它还应该考虑课程部分的预定义顺序,例如练习1应该在第2讲之后和第3讲之前。您有什么建议吗?
谢谢。
更新:
我有以下硬性限制:
H1:在任何时间段,每个房间只分配一个课程部分。
H2:房间可以容纳所有参加的学生并满足活动要求的所有功能。
H3:没有学生同时参加的模式超过一门课程(至少是必修课)
H4:没有老师同时教超过一门课程部分。
软约束是:
S1:不应将课程部分分配给讲师不方便的时间段。
S2:老师的班级之间应该有最小数量的差距。
S3:学生的班级之间应该有最少的间隔。
S4:课程应满足讲师的偏好——天数和时间段。
S5:课程部分应按预定顺序安排。
示例:
课程“软件架构”
Week No Course Room Course Part Day Time
--------+---------+-------+--------------+----------+-----
Week 1: SA 435 Lecture 1 Wednesday 8.15-11
Week 2: SA 435 Lecture 2 Wednesday 8.15-11
Week 3: SA 47 Lab 1 Monday 13-15
Week 3: SA 436 Lecture 3 Wednesday 11-14
Week 4: SA 243 Exercise 1 Monday 13-15
Week 5: SA 436 Lecture 4 Wednesday 8.15-11