有效地阻止无效的解决方案



在Optaplanner中阻止无效解决方案的最佳方法是什么?我知道你可以用HardSoftScore提供一个负的硬得分,但在找到有效的解决方案之前,可能仍然需要很长时间来探索无效的解决方案。

例如,如果你看到一辆卡车能装多少个包裹,如果所有包裹的总尺寸超过了卡车的容量,你根本不想在这个空间里探索任何解决方案。

我认为这与Optaplanner的工作方式背道而驰,在这种工作方式中,你有很多糟糕的解决方案,然后慢慢地朝着好的解决方案收敛。审查解决方案不会向Optaplanner提供任何关于为什么该解决方案被否决的信息,而且可能只有在遍历可否决的解决方案后才能找到更好的解决方案。

相反,考虑一下你的分数限制是否导致了分数陷阱。对于可否决的解决方案,不要使用固定的-1硬得分,而是要有一个与该解决方案的糟糕程度成比例的分数

在我的例子中,这意味着我不应该将产能过剩的解决方案标记为hard-1,而是应该使用penalizematchWeigher形式,按照产能过剩的程度来惩罚它们。

最新更新