Algorithm for computing timetable given restrictions
我正在考虑一个假设性的问题,并从算法的角度寻求如何解决问题的指导。
问题:
考虑一所大学。您有以下对象:
- 教员。每位员工都会教授一篇或多篇论文。
- 学生。每个学生都要拿一份或多份论文。
- 房间。房间里有一定数量的学生,并装有一定类型的设备。
- 论文。需要一定类型的设备,每周需要一定的时间。
考虑到入学信息(即每篇论文中录取了多少学生,以及分配了哪些员工教授每篇论文),我如何计算一个遵守以下限制的时间表:
讨论:
事实上,我并不太关心上面概述的情况——我对这类问题很好奇。乍一看,这似乎是一个很好的适合遗传算法,但适合这种算法的函数将是非常复杂的。
解决这种约束满足问题的好方法是什么?
我想可能没有办法完美地解决这一问题,因为学生们可能会把导致不可能的情况的论文结合起来,特别是随着学生人数和论文数量的增加。
基于遗传算法,我不认为适应度函数会非常复杂,恰恰相反。
基本上,您只需检查每个约束(您只有5个)的候选解决方案(无论编码如何),并为它们分配一个权重,以便当约束不满足时,将权重添加到可以表示适合性的总分中。
在这种情况下,您只需最小化适应度函数(因为可能的最佳适应度是0,这意味着满足了所有约束条件),然后让GA计算出数字。
编码需要一些计算,但一旦完成,它应该是简单的,除非我遗漏了一些东西,当然:)
这个问题的一个非常有限的版本是NP完全。
当只有一个学生可以拿一篇论文时,考虑一下这个问题。
现在,对于一个给定的时间段(比如说,纸是一整天教的),你可以构建一个三分图,有房间、纸和学生,如果学生愿意,纸和学生之间有一个边缘。在纸和可能的房间之间添加边。
我们现在看到三维匹配问题是您问题的一个例子:您需要为特定的时间段选择一个不重叠的(学生、纸张、房间)组合。
对于一般问题,你最好用一些启发式方法。对不起,我帮不了你。
希望有帮助。