这是我很长一段时间以来一直在思考的问题。作为老师和程序员的儿子,这很早就发生在我身上……但是我仍然没有找到解决方案。
所以这就是问题所在。需要使用一些约束来为学校创建时间表。这些通常分为两类:
健全性检查
优先
现在,经过几年没有找到解决方案(同时又学习了一两件事……)之后,我意识到这听起来像是一个NP难题。
它被证明是NP硬性的吗?
有谁知道如何破解这个东西?
看着这个问题让我思考了这个问题,以及在这种情况下遗传算法是否适用。但是,在保持健全性检查规则的同时,很难改变可能性。我也不清楚如何区分不兼容的需求。
一个小的附录,可以更好地说明问题。这适用于意大利学校风格的教室,在该教室中,所有学生都属于不同的班级(例如:A年级第一节),并且老师在班级之间移动。同一班级的所有学生都有相同的时间表,没有选择参加哪些课程的选择。
我是从事学生信息系统调度程序工作的开发人员之一。在我们最初的调度问题处理方法中,我们研究了遗传算法来解决约束满足问题,即使我们最初取得了成功,但我们意识到解决该问题的方法要简单一些(参加学校调度工作坊后)
我们当前的实现效果很好,并使用蛮力和智能启发法在短时间内获得有效的计划。首先建立总进度表(将课程分配给教师),同时考虑到每位教师的所有限制,同时最大程度地减少与学生发生冲突的可能性(基于他们的课程要求)。然后使用相同的方法将学生安排在班级中。
这样做可以让您先让计算机构建主计划,然后在需要时进行人工调整。
调度程序的当前实现是用perl编写的,但是我们早期访问的其他选项是Prolog和CLIPS(专家系统)