OptaPlanner中VRP的非对称距离矩阵无法正常工作

时间:2014-06-23 14:28:45

标签: optaplanner drools-planner

我在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);
}

0 个答案:

没有答案