从分数计算的角度来看,假设阴影变量有助于比不使用阴影变量更快地到达解决方案是正确的。
利用阴影变量允许VariableListner将依赖实体的值重置为更接近最终/最佳值。
答案 0 :(得分:0)
这取决于。阴影变量和分数计算都使用delta来创建增量计算。这些delta是扩展并获得每秒高分数计算速度的关键(参见上一个INFO日志记录行和基准报告)。无论您做什么,请至少关注不同大小的数据集的值。
理论上,如果有一个影子变量来简化分数规则,或者如果没有影子变量且分数规则更复杂(并且可能使用insertLogicals
等),则无关紧要。
在实践中,它通常很重要:对于车辆路由,IIRC我已经看到影子变量arrivalTime
显着提高了性能和可扩展性。
我的建议是在域上使用阴影变量时使用阴影变量。例如,到达时间等。但是当满足时使用简单的计算的getter(没有循环):例如departureTime(= arrivalTime + duration)。并使用其余的分数规则。
最后,这是一个设计选择:得分规则是否需要自己弄清楚离开时间或到达时间,或者我们可以通过将它们放入模型中来抽象出来 - 并使规则更自然地阅读? / p>