OptaPlanner,强制按范围顺序填充 PlanningVariable

OptaPlanner, force PlanningVariable to be filled in sequence of a range

想要按照一些规则对一组任务进行排序。每个任务都有一个索引(PlanningVariable)来指示它的顺序,它的范围是从 1 到 n。一个规则需要最小化所有任务的影子变量的总和,并且只有当总和从索引 1 连续计算到更大的数字时才有意义,比如从 1 到 5。比如 2、4、8 求和是没有用的。问题:有什么方法可以强制 optaplanner 将 1 分配给任务,然后分配 2,然后分配 3 ...以获得潜在的解决方案?这样才不会浪费。

查看 optaplanner-examples 中的 任务分配示例 (源代码位于 optaplanner.org 绿色按钮的 zip 下载中)。 See this video.

它基本上使用 CHAINED 变量将任务分配给(链接的)列表。然后使用 @CustomShadowVariable 为每个 Task.

计算该链中的 index

在 optaplanner 的未来版本中,我们将支持具有 List<Task>Employee 和具有 @IndexShadowVariableTask,这将更加简单模型。但与此同时,您将不得不使用链式 var 方法。