哪种优化算法更适合时间表重新安排?

时间:2018-11-22 13:01:20

标签: optimization statistics mathematical-optimization data-science np

我正在从事将大学课程表示为待办事项的项目,其中:

  • 课程所有者(课程的老师)可以添加任务(包含需要学习的资源的URL和两个日期时间字段-何时开始和何时完成任务)

  • 课程订阅者(学生)可以将任务标记为已完成或未完成,并且它们的标记将分别为每个帐户保存。

如果学生将任务标记为已完成-他标记的他的帐户和元素将显示在教师的课程活动标签中,他可以在其中执行以下操作:

  • 与他进行基于JavaScript的聊天
  • 评估对话结果

在这里您可以推荐我使用哪种优化算法来进行时间表重新安排(如果学生拖延,请更改待办事项元素的日期时间字段)?

实际上,我们可以在资源上使用学生活动+他将任务标记为完成的事实+如果他单击或不单击放置在指向外部学习材料(例如Google图书)的待办事项元素上的URL )。

例如,遗传算法是否适用于此模型,它们有什么陷阱:https://medium.com/@vijinimallawaarachchi/time-table-scheduling-2207ca593b4d

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解您的问题,但是听起来您有一个可行的时间表,而您只需要改进它即可。

如果这样的话,遗传算法会很好地工作,但是我认为像链接中那样将所有内容表示为二进制“染色体”可能不切实际。 您可以通过多种其他方式表示时间表,例如以2D数组的形式,或为事件指定插槽号。 您可以研究禁忌搜索,模拟退火,大洪水和爬坡等算法。它们全都基于类似的思想,但有些在某些问题上比其他问题工作得更好。例如,如果您的搜索空间非常粗糙,那么模拟退火将不是最佳选择,而“爬山”通常只会找到局部最优值。

上述算法以及许多其他遗传算法和元启发式算法的一般体系结构是:使用移动运算符选择相邻的解决方案(例如,交换一个或两个或三个事件的时间或交换两个事件的房间等)。 。),检查移动是否没有违反任何严格的约束,请使用接受策略(例如模拟退火或大洪水)来确定该移动是否被接受。如果是这样,请保留解决方案并重复步骤,直到满足终止条件为止。这可以是最大时间,达到的迭代次数或x迭代次数中未发现改进的移动。 在运行的同时,请记录“最佳”解决方案的日志,以便在算法终止时找到最佳解决方案。您可以根据时间表违反了多少软约束来确定什么是“最佳”

希望这会有所帮助!