我正在使用Optaplanner来制作一个计划表,它的效果相当不错。
在阅读了文档之后,我意识到我应该使用至少1个(或更多)影子变量,因为我的drool-file正在调用基于planningVariable的值进行大量计算的方法。
我花了几个小时重写了我的代码来使用影子变量,但我注意到最初的解决方案非常糟糕(与没有影子变量相比),我不得不等待数分钟才能得到一个正常的结果。这正常吗?看起来最初的解决方案根本没有使用影子变量。
这个问题非常通用,所以我的回答也会如此。
有时你可以通过引入影子变量或其他形式的缓存来简化问题。如果你找到了正确的平衡点,你确实可以加快Drools的计算速度,并且--因此--在更短的时间内得到相同的解决方案。也因此,在同样的时间内达到更好的解决方案。
也就是说,引入影子变量不应该真正改变你的分数--只改变它们的计算速度。如果你看到相同的分数不同的 @PlanningSolution
,其实你的问题已经改变了,相对的性能已经没有可比性。
另外,你可能想检查一下 环境模式 以确保你没有在不经意间将分数损坏引入你的问题中。