首页 > 解决方案 > OptaPlanner,强制PlanningVariable按范围顺序填充

问题描述

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

标签: optaplanner

解决方案


看看optaplanner-examples 中的任务分配示例(源代码在 optaplanner.org 上的绿色按钮的 zip 下载中)。看这个视频。

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

在 optaplanner 的未来版本中,我们将支持Employee有 aList<Task>Task有 a @IndexShadowVariable,这将是一个更简单的模型。但与此同时,您必须使用链式 var 方法。


推荐阅读