0

我在 OptaPlanner 的示例中为 VRP 实现了一个不对称距离矩阵,如答案https://stackoverflow.com/a/19420978/3743175的选项 B 中所建议

然而,软约束的值与测试中计算的路线距离的总值不一致。

任何人都知道这件事的原因吗?我检查了几次,我的矩阵是正确的,对称实例不会出现问题。

欢迎任何帮助。

谢谢。

找到的解决方案:

我在示例的 softScore 计算中发现了问题:softscore 是用反向弧计算的。

我在 VehicleRoutingIncrementalScoreCalculator 类中替换了这一行:

...
softScore -= vehicle.getLocation().getDistance(customer.getLocation());
...
softScore += vehicle.getLocation().getDistance(customer.getLocation());

和:

...
softScore -= customer.getLocation().getDistance(vehicle.getLocation());
...
softScore += customer.getLocation().getDistance(vehicle.getLocation());

我用以下方法修复了 Customer 类:

public int getDistanceToPreviousStandstill() {
    if (previousStandstill == null) {
        return 0;
    }
    return previousStandstill.getLocation().getDistance(location);
}
4

0 回答 0