gpt4 book ai didi

java - OptaPlanner 的实体分数计算器回调

转载 作者:行者123 更新时间:2023-12-01 11:38:22 24 4
gpt4 key购买 nike

我的模型支持通过 Solver#addProblemFactChangeProblemFactChange 接口(interface)进行实时更改。实现此接口(interface)的 doChange 方法,我通过 beforeEntityRemovedbeforeProblemFactRemoved 等方法积极使用 scoreDirector 的通知>beforeProblemFactChanged 等。此外,模型的增量分数计算器实现了回调方法 beforeEntityAddedbeforeEntityRemoved 及其 after-versions。

在研究求解器行为时,我看到了这样的来自 optaplanner 的分数计算器调用图:

Callbacks call diagram

也就是说,尽管模型发生了变化,optaplanner 也不会调用计算器的实体相关方法。为什么会发生这种情况以及为什么需要通知 scoreDirector

最佳答案

ProblemFactChange API 的设计允许对问题进行增量更改,因此您需要调用 before|afterProblemFactAdded|Changed|Removed(),否则会实现增量问题改变是不可能的(不改变 API)。

ScoreDirector 负责处理这些事件:

  • DroolsScoreDirector 也可以增量地处理问题事实(不仅仅是规划变量)。
  • IncrementalScoreDirector 还不会针对问题事实增量执行此操作(但它会针对规划变量执行此操作)。只有some stopgap code 6.2 中有一个 TODO,它可以工作,但工作速度没有应有的快。

I created a jira issue to track this issue.

关于java - OptaPlanner 的实体分数计算器回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29769141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com