使用optaplanner解决VRPMT问题的最佳实践是什么?

使用optaplanner解决VRPMT问题的最佳实践是什么?,optaplanner,vehicle-routing,Optaplanner,Vehicle Routing,我们当前的方法多次运行solver。我想知道是否有更好的方法 一些解释: 多行程车辆路径问题VRPMT:车辆可以执行多条路径。以VRP为例,将车辆重命名为VehiclePerDay,然后在其上引入两个字段:车辆和LocalDate。这是假定每天一次旅行 如果您在同一天进行多次旅行,有两种方法: 1将车辆拆分为如上所述的车辆,并使其指向上一个车辆。因此,当同一车辆的第一次行程返回车辆段加上装载时间时,第二次行程离开 2在每次访问之前使用影子可变总和容量使用,并引入自动返回车辆段的时刻。 基本上,如

我们当前的方法多次运行solver。我想知道是否有更好的方法

一些解释:


多行程车辆路径问题VRPMT:车辆可以执行多条路径。

以VRP为例,将车辆重命名为VehiclePerDay,然后在其上引入两个字段:车辆和LocalDate。这是假定每天一次旅行

如果您在同一天进行多次旅行,有两种方法:

1将车辆拆分为如上所述的车辆,并使其指向上一个车辆。因此,当同一车辆的第一次行程返回车辆段加上装载时间时,第二次行程离开

2在每次访问之前使用影子可变总和容量使用,并引入自动返回车辆段的时刻。 基本上,如果一辆车的容量为10辆,并且每辆车运送到5个地点,每个地点有3件物品,则看起来如下所示:

车辆A 访问1:总容量需要3,@ShadowVariable goBackToDepotFirst=false 访问2:总容量需要6,@ShadowVariable goBackToDepotFirst=false 访问3:总容量需要9,@ShadowVariable goBackToDepotFirst=false 访问4:总容量需要3,@ShadowVariable goBackToDepotFirst=true 访问5:总容量需要6,@ShadowVariable goBackToDepotFirst=false
以VRP为例,将Vehicle重命名为VehiclePerDay,然后在其上引入两个字段:Vehicle和LocalDate。这是假定每天一次旅行

如果您在同一天进行多次旅行,有两种方法:

1将车辆拆分为如上所述的车辆,并使其指向上一个车辆。因此,当同一车辆的第一次行程返回车辆段加上装载时间时,第二次行程离开

2在每次访问之前使用影子可变总和容量使用,并引入自动返回车辆段的时刻。 基本上,如果一辆车的容量为10辆,并且每辆车运送到5个地点,每个地点有3件物品,则看起来如下所示:

车辆A 访问1:总容量需要3,@ShadowVariable goBackToDepotFirst=false 访问2:总容量需要6,@ShadowVariable goBackToDepotFirst=false 访问3:总容量需要9,@ShadowVariable goBackToDepotFirst=false 访问4:总容量需要3,@ShadowVariable goBackToDepotFirst=true 访问5:总容量需要6,@ShadowVariable goBackToDepotFirst=false