寻找让Drools/Optaplanner更快的方法

寻找让Drools/Optaplanner更快的方法,drools,optaplanner,Drools,Optaplanner,我正在使用Optaplanner 6.2.0.CR4和Drools对解决方案进行增量评分,以完成一个顶点项目。这个问题与Optaplanner的护士排班示例非常相似,只是增加了一点复杂性。我想知道是否有一些常见的陷阱可以减缓我在代码中寻找的流口水。解算器非常快地运行构建阶段,但当它到达本地搜索阶段时,会碰到一堵墙。Drools加入了很多额外的东西,比如计算每个发薪期的工作日,每个发薪期的特定时间段空闲时间,等等,我想我写规则的方式可能是问题所在。参见文档。尤其要注意你的“每秒平均分数计算计数”。

我正在使用
Optaplanner 6.2.0.CR4
Drools
对解决方案进行增量评分,以完成一个顶点项目。这个问题与Optaplanner的护士排班示例非常相似,只是增加了一点复杂性。我想知道是否有一些常见的陷阱可以减缓我在代码中寻找的流口水。解算器非常快地运行
构建阶段
,但当它到达
本地搜索阶段
时,会碰到一堵墙。Drools加入了很多额外的东西,比如计算每个发薪期的工作日,每个发薪期的特定时间段空闲时间,等等,我想我写规则的方式可能是问题所在。

参见文档。尤其要注意你的“每秒平均分数计算计数”。它应该高于
1000
,最好高于
10000

使用。它将是你在这段恋情中最好的朋友,请推我:)


注意:问问自己:“更快”是什么意思?您是否希望同时获得更好的结果?你想更快地得到同样的结果吗?和/或您想扩大规模吗?可能需要做出权衡选择-使用OptaPlanner基准测试仪查看所有三条战线上的纯收益,同时也可以可视化这三条战线之间的权衡。

“…可以减缓流口水的常见陷阱…”可能性很多。我对流口水很陌生,我真正做的只是插入事实,在本例中,这些是预制的java类,为每个规划实体计算,然后规则激活并调整分数。我真正使用的唯一函数是acculate和conditional语句中的Number(),因为每个人都只是“插入事实”,而且没有特别令人不安的影响,速度的放缓肯定是由于其他原因造成的。-请注意,我们可以在未来几天内在这个层面上讨论这个问题,但如果你需要一些真正的帮助,你必须坦白。尽管你有疑问,这就是我正在做的一切。谢谢你的建设性意见。还有人有什么意见吗?叹气。你为什么不发布你的规则?