这是我想了很久的问题。作为老师和程序员的儿子,我很早就想到了……但我仍然没有找到解决方案。
所以这就是问题所在。需要使用一些约束条件为一所学校创建一个时间表。这些通常分为两类:
健全性检查
- 一个老师不能同时教两门课
- 学生不能同时上两节课
- 一些教师在一周内必须至少休息一天
- 一周中的所有日子都应包含在时间表中
- 对象 X 每周必须有确切的时间
- ...
优先
- 每位教师的日程安排应尽可能紧凑(即教师应连续工作一天中的所有时间,如果可能,不得停顿)
- 放假的老师应该能够表达对哪一天的偏好
- 从事兼职工作的教师应该能够表达偏好是在上学的开始还是结束时工作。
- ...
现在,在几年没有找到解决方案(同时学习一两件事......)之后,我意识到这闻起来像是一个 NP 难题。
它被证明是NP难的吗?
有没有人知道如何破解这个东西?
看着这个问题让我想到了这个问题,以及在这种情况下遗传算法是否可用。然而,在保持健全性检查规则的同时改变可能性是相当困难的。我也不清楚如何区分不兼容的要求。
一个小的附录,以更好地说明问题。这适用于意大利学校风格的教室,所有学生都在不同的班级(例如:第一年 A 部分)并且教师在班级之间移动。同一班级的所有学生都有相同的时间表,并且无法选择参加哪节课。