2

截至目前,Opta Planner 规划器提供以下支持:

  1. 禁忌搜索。
  2. 模拟退火。

但是,如果我需要使用 Opta Planner 实现任何其他算法,例如遗传算法,那么可以在哪里以及如何使用它。我有遗传算法的代码,但是我不知道如何将它与 Opta 规划器集成。我发现很少有可能的地方。

  1. 在自定义 Score 类中。
  2. 在自定义 Move 类中。
  3. 在自定义 MoveFactory 类中。
  4. 在 XML 配置文件中。

请指导我需要在哪里进行修改。

谢谢

4

2 回答 2

1

实际上,一个学生(Sam Van Malderen)已经分叉了 OptaPlanner 并添加了一个遗传算法实现。我指导他的工作。

这是源代码。有用。他编写了一个自定义SolverPhase并重用了Selector,Move和.TerminationScoreDirector

基于这项工作,我们已经能够确定一些问题(这里是要跟踪的 jira),以使 OptaPlanner 更友好地实施基于人口的元启发式算法。

话虽如此,在所有测试用例的所有非小型数据集上,遗传算法实现的结果始终不如禁忌搜索和延迟接受。就个人而言,我认为问题不在于实施......我不是 GA 的坚定信徒,但 OptaPlanner 总有一天需要开箱即用地完全支持它们(即使它只是为了证明 Local Search效果更好)。因此,我绝对欢迎任何将 GA 添加到 OptaPlanner 的工作。

如果您希望我让您与 Sam 联系以获取他的论文副本(描述了他实施了哪些 GA 技术),请告诉我 :)

于 2013-10-15T17:35:49.123 回答
0

PS:另一种快速的选择是实现自定义求解器阶段。容易得多,但您只能重复使用分数计算管道。

于 2014-06-02T17:52:53.437 回答