目前是否有一种方法可以将流量模式与包和交付VRP问题合并到OptaPlanner中?
。假设我需要在今天和明天的30辆车中优化500次取货和送货,每次取货有1-4小时的时间窗口。如果可能的话,我想在高峰时间避开城市的繁忙地区。
还可以添加新的拾取(或同时取消)。
我相信这是一个普遍的问题。在OptaPlanner中存在一个体面的解决方案吗?
谢谢!
用户经常这样做,但没有现成的例子。
有几种方法可以做到这一点,但其中一种方法是向distancemmatrix添加第三维,表示departureTime。通常使用15分钟、30分钟或1小时的粒度。
这里有两个缩放问题:
- 内存。15分钟意味着每天24 * 4 = 96。考虑到2个维度,一个10k的位置距离矩阵使用了几乎2gb的RAM,显然内存可以成为一个问题。
- pre-calculation时间。计算距离矩阵可能会很耗时。"大部分algorithms"我能帮上忙。例如,graphhopper社区不支持批量距离计算,但是他们的企业版本——以及OSRM(免费的)支持。从远程Google Maps API或远程企业Graphhopper API获取三维矩阵可能会导致带宽问题(见上文,距离矩阵的大小可能会达到几个GB,特别是在非二进制格式(如JSON或CSV)中)。
在任何情况下,一个三维矩阵是存在的,这只是一个调整OptaPlanner示例的ArrivalTimeUpdateListener
使用getDistance(from, to, departureTime)
的问题。