OptaPlanner VRPTW适用于具有分拣和丢弃的大型设置客户

时间:2014-08-08 14:32:59

标签: optaplanner

我正在尝试为大小在20000左右的客户数据集创建路线计划。在单一路线中,车辆可能需要向客户提取或放弃订单。因此,正常的大小调整硬约束对此问题不起作用。

我创建了一个阴影变量来存储行程中每个位置的车辆负载。当车辆离开仓库时,负载是需要丢弃的所有元素的总和,并且每个位置我都会根据服务类型(提取/下降)不断更新负载。

问题是在添加阴影变量和变量更改侦听器之后性能降低了。每秒的计算量已经下降到400左右。这主要是因为,为了计算车辆段的车辆载荷,我已经循环通过链条。是否有另一种有效的方法来实现该功能?

1 个答案:

答案 0 :(得分:0)

我会以同样的方式实现它。而且我不知道以更好的方式实现它。需要调整链条的整个尾部,并且需要检查修改的链节点的正确容量。

如果性能成为一个巨大的问题并且您的约束经常不会发生变化(=很少维护),请考虑编写JavaIncrementalScoreCalculator:它们更快,但维护起来更痛苦......在VRP示例中,注释掉scoreDRL元素并在incrementalScoreCalculator元素中进行提交,以了解它的速度。