我计划开发一个专家系统,自动适应学校教师的工作量(时间,教学负荷等),并生成课程部分,与某个部门的主任至少90%准确的空间想要分配某个学期的时间表。
使用什么算法?启发式?优化?任何建议或帮助都非常感谢!
答案 0 :(得分:1)
我的两个朋友为一个班级项目做了类似的事情。他们使用了simulated annealing启发式算法。他们的结论是,它可能不是这项工作的最佳工具。
嘿,知道不要做什么可能有用,对吧? :)
答案 1 :(得分:1)
以下是一些一般性意见:
1)很少从头开始尝试手动调度。相反,有人从上一年的时间表开始,并改变它以考虑需求的变化。使用计算机模拟这种方法的一种方法是使用爬山算法,该算法反复尝试一些小的改变以改进目前为止的解决方案。然后可以按照当前的时间表开始。
2)手动过程是否会终止,结论是要求是集体无法实现的,而且其中一些必须被删除?在这种情况下,您的算法必须足够透明,以便能够理解失败,或者至少能够提出这样的变化(例如,通过最大化惩罚函数,使得它能够产生不满足所有原始约束的“最差”解决方案。 )。我知道一个案例,其中基于约束的复杂方法被更简单的算法所取代,因为基于约束的系统的故障没有给出足够的用户反馈。
3)奇怪的是,下一代系统根本没有使用复杂的调度。事实证明 - 粗略地说 - 在做出决策时并非所有复杂调度决策的结果都可以预测,而且从长远来看,可以无限期维持的简单可预测的时间表比不断重新安排时间表以获得短暂的优势。
答案 2 :(得分:1)
看一下curriculum course lesson scheduling Drools Planner的例子(开源,我害怕java)。它使用元启发式,例如simulated annealing
和tabu search
。
答案 3 :(得分:0)
以下是使用遗传算法进行动态调度的a paper ...您可能会发现这里的一些想法很有用......即使域名不相同,我认为这个想法更普遍适用。