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
和具有 @IndexShadowVariable
的 Task
,这将更加简单模型。但与此同时,您将不得不使用链式 var 方法。
想要按照一些规则对一组任务进行排序。每个任务都有一个索引(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
和具有 @IndexShadowVariable
的 Task
,这将更加简单模型。但与此同时,您将不得不使用链式 var 方法。