我计划开发一个专家系统,自动适应学校教员的工作量(时间,教学负荷等),并生成课程部分,房间至少90%的准确性与某个系主任想要分配的某个学期的时间表。
使用什么算法?启发式?优化?如有任何建议或帮助,我们将非常感谢!
发布于 2011-01-22 01:32:05
我的两个朋友为一个班级项目做了类似的事情。他们使用了simulated annealing启发式。他们得出结论,这可能不是完成这项工作的最佳工具。
嘿,知道什么不该做是很有用的,对吧?:)
发布于 2011-01-22 14:05:30
以下是一些一般性的观察结果:
1)很少尝试从头开始进行手动调度。相反,有人从前一年的时间表开始,并根据需求的变化对其进行修改。用计算机模拟这一过程的一种方法是使用爬山算法,到目前为止,该算法反复尝试一些小的改变来改进解决方案。然后,可以按照当前计划启动此工作。
2)手动过程是否会最终得出这样的结论:需求是集体无法实现的,并且其中一些需求必须被删除?在这种情况下,你的算法必须足够透明,以便故障能够被理解,或者至少能够提出这样的改变(例如,通过最大化惩罚函数,允许它产生一个不满足所有原始约束的“最小不良”解决方案)。我知道有一种情况,复杂的基于约束的方法被一种简单得多的算法所取代,因为基于约束的系统的故障没有给出足够的用户反馈。
3)奇怪的是,下一代系统根本没有使用复杂的调度。事实证明-粗略地说-在必须做出决策的时候,复杂的日程决策的所有后果都是可以预见的,从长远来看,一个简单的可预测的日程安排可以无限期地维持下去,比不断地重新安排日程安排来抓住短暂的小优势更有效率。
发布于 2011-02-03 23:42:53
看看Drools Planner的curriculum course lesson scheduling示例(恐怕是开源的java )。它使用元启发式算法,如simulated annealing和tabu search。
https://stackoverflow.com/questions/4761593
复制相似问题