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