是否有算法可以为整个学期创建大学时间表?

时间:2010-06-20 06:38:52

标签: algorithm timetable

我必须实施一种算法,为大学生成时间表。我搜索并发现了很多算法。但这是问题所在。我需要一种算法来生成整个学期的时间表,而不是每周一次。它还应该考虑课程部分的预定义顺序,例如练习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

4 个答案:

答案 0 :(得分:1)

您可能需要查看interval scheduling。听起来你需要一个修改版本,增加了一些限制,例如允许放置练习的地方。贪婪算法通常很容易修改,并且有基本IS算法的whole bunch of already modified versions

答案 1 :(得分:0)

我最终得到了一个修改过的建议here算法。我使用了迭代前向算法,然后将模拟退火应用于软约束。我更改了时间段设置,因此它包含了整个学期的时间段,没有周末和假期。例如,如果学期有6个星期,而每个星期我有40个小时,那么我的一组时隙将包含整个240个时段。

我还为订单添加了约束。当不满足该约束时,它对当前解决方案赋予高权重。通过这种方式,我阻止算法选择一个不具有顺序的课程的解决方案。

答案 2 :(得分:0)

我正在开展类似的项目,并使用适应遗传算法来解决手头的问题。

详细研究遗传算法,然后使用约束设计流程图来解决您的问题,同时考虑到您提到的所有约束。

答案 3 :(得分:-1)

IIRC这样的问题不能通过算法完全解决。