Can I tell Optaplanner (with constraint streams) not to recalculate join if it doesn#39;t depend on planning variable?(如果连接不依赖于规划变量,我可以告诉Optaplanner(带有约束流)不要重新计算连接吗?)
问题描述
我在约束流的开头使用fromUniquePair(Class<A> fromClass, BiJoiner<A,A> joiner)
。FromClass是一个计划实体,表示一个时隙。我需要所有重叠的时隙对的流,以便稍后检查它们的计划变量是否不冲突。时隙不会根据任何规划变量在时间上移动,因此此来自UniquePair联接的结果在优化时不会更改。
但是,每当规划变量发生变化时,就会将该时隙与所有其他时隙进行比较,以确定是否需要在流中添加或删除一对。这是不必要的,因为此连接器的结果以任何方式都不依赖于规划变量。我认为大部分时间都花在了这一点上,因为每次更改计划变量时,它都需要检查数千个其他时隙,而它只需要对计划变量本身进行几次快速检查。
有没有办法告诉Optaplanner不要这样做?
推荐答案
您在这里要求的内容可以与Drool中的属性反应性功能进行比较。不幸的是,约束流不支持这一点,也没有一种方法可以这样做--约束流不能看到过滤器lambdas或方法引用的内部,因此它不知道您访问的是哪些字段。这是我们为更好的抽象付出的代价。
我认为flattenLast()
在这方面不会做任何事情。您对其执行from(...)
操作的实体在每次更改时仍将被重新计算,然后所有拼合的数据也将被重新计算。也就是说,可能我误解了您的意图,如果您使用其他信息更新您的原始问题,我将重新考虑。
这篇关于如果连接不依赖于规划变量,我可以告诉Optaplanner(带有约束流)不要重新计算连接吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如果连接不依赖于规划变量,我可以告诉Optaplanner(带有约束流)不要重新计算连接吗?


- 未找到/usr/local/lib 中的库 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- 获取数字的最后一位 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01
- 转换 ldap 日期 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01