在层次问题上实现规划优化算法

Implementing a planning optimization algorithm on hierarchical problem

我正在解决一个规划问题,涉及:

  1. 计划实体的集合,每个计划实体都包含计划变量 A
  2. 全局规划变量B(包含在规划解决方案中)

由于我是 Optaplanner 和一般规划优化的初学者,所以我开始解决一个更简单的版本问题,重点是将 B 建模为规划事实来优化 A。

现在我有一个程序成功地优化了 A 给定 B。我想实现一个新的求解器来优化 A 和 B。事实证明,最好的优化搜索策略是首先 select 一个 B 值,然后在给定 B 值的情况下优化 A。应重复此过程,直到找到最优值(手头的问题是分层的)

我正在寻找有关如何使用 Optaplanner 实现此功能的建议。我最初以为我会分两个阶段(优化 B -> 优化 A)来实现它,但我现在明白 Optaplanner 阶段并不意味着这样做。例如,求解器不能遍历这个由两个阶段组成的有序序列。

相反,我认为我应该实现一个自定义 MoveSelector,它以 B 上的移动开始,然后是 A 移动的无限列表..

你怎么看?我在正确的轨道上吗?

亲切的问候,

A 和 B 是不同的阶段,没有不同阶段(在 OptaPlanner 术语中)。

多阶段规划(参见文档中的简短条目)中,它基本上是 2 个不同的求解器,一个馈入另一个。当 A 和 B 发生在不同时间(考虑战略与战术与运营计划)或由于康威定律(用户的组织结构)时,这很常见。这是最简单的解决方案,通常也是迄今为止最实用的业务变更管理解决方案。这是风险最小的。然而,它不是最优的(至少在理论上是这样)。

备选方案确实是拥有多个规划实体,这使其成为一个大规划问题。这是完美的解决方案。这很有挑战性。完美可以成为优秀的敌人。 OptaPlanner 的架构支持它,但确实需要自定义移动(今天在 OptaPlanner 7.35 中),因为默认移动选择器不会经常逃避局部最优。