【发布时间】:2020-01-08 00:11:58
【问题描述】:
我需要在每次移动结束时将计算运行到内存中,然后根据此更新分数。计算的结果需要是有状态的,因为它在其他地方引用(存储在解决方案中)。
文档建议这应该是一个 PlanningEntity 更新为一个 ShadowVariable 在主实体上有一个 VariableListener 但当然这自然会触发每个实体更改,不必要地重新计算。
- 如何在 move 结束时触发,而不是按 variable 触发?来自流口水?这不是黑客行为吗?
- 如果不使用 VariableListener,它将不再是 PlanningEntity。不是把它变成一个与文档相反的ProblemFact吗?有什么缺点?
更多信息:
- “计算”是对规划期间流量网络值的预测,其中流量水平取决于任务的当前位置。
- 我们正在使用实时计划,因此计划周期窗口会根据任务集大小进行调整,并随时间变化。
【问题讨论】:
-
计算代表什么?如果我更好地理解用例,我可能会建议最佳方法或同意它是否是 optaplanner 中的 API 差距。
-
@GeoffreyDeSmet 它在计划期间预测流量网络的值,其中流量级别取决于影响流量的任务的位置。我会把这个添加到问题中。
-
您可能需要保留一组影响流程的任务。只是 count++ 和 count-- 并不总是正确的,例如在与自身交换某些东西时。
-
@GeoffreyDeSmet 任务具有是否需要重新计算流的属性,该属性在变量侦听器中进行检查。所以它只针对它所依赖的实体触发。
标签: drools optaplanner