algorithm - 是否有一种算法可以创建整个学期的大学时间表?

标签 algorithm timetable

我必须实现一种算法来生成大学的时间表。我搜索并发现了很多算法。但这就是问题所在。我需要一种算法来生成整个学期的时间表,而不是每周一次。它还应考虑类(class)部分的预定义顺序,例如练习1应该在第2讲之后和第3讲之前。你有什么建议吗?

谢谢。

更新:
我有以下硬约束:
H1:在任何时间段,每个房间只分配一个类(class)部分。
H2:房间可以容纳所有参加的学生,并满足事件要求的所有功能。
H3:没有学生同时上一门课的模式(至少是必修课)
H4:没有老师同时教授超过一个类(class)部分。

软约束是:
S1:类(class)部分不应分配给讲师不方便的时间段。
S2:老师的课之间应该有最少的间隔。
S3:学生的课间间隔应该最少。
S4:类(class)应满足讲师的偏好 - 日期和时间段。
S5:应安排类(class)部分以预定义顺序。

例子:
《软件架构》类(class)

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

最佳答案

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

关于algorithm - 是否有一种算法可以创建整个学期的大学时间表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3078422/

相关文章:

algorithm - 用下一个较小的值交换元素

java - 减少字符串中的字符数

带时间表的 MySQL SELECT 查询

java - 是否有用于计划或创建时间表的 Java API

.net - 如何设计公共(public)交通时刻表数据库?

algorithm - 最短的两条不相交的路径;两个来源和两个目的地

algorithm - 是否总是可以通过树旋转将一个BST转换为另一个BST?

java - 在 MySQL 表中存储多个用户日历

php - 多类(class)、相互关联的学校时间表作为 MySQL 数据库

algorithm - 如何搜索以给定字母开头的单词