我正在使用Optaplanner来解决以下一个有很多要求的复杂vrp问题。除了以下两个方面之外,我能够处理其中的大部分内容。
我们的目标是接送一群客户,这些客户将前往目的地,并将他们放在同一车辆中。
提前致谢!我很感激帮助!
问题与示例VRP TimeWindow示例非常相似,但有以下更改。
规划使用每个取货到取件之间得分的道路距离。皮卡 - > Drop-Off未知(计划使用Air)。
我很难执行这项工作,在将电路留给下线客户后,车辆可能无法回来接载更多客户,并且可以通过车辆在赛道中制作的固定路径进行此项工作。 / p>
我的主要想法是做以下事情。
答案 0 :(得分:0)
我可能会考虑这样的域名模型:
@PlanningEntity
class Pickup implements PickupOrVehicle {
Customer customer;
@PlanningVariable
PickupOrVehicle previousPickup;
@PlanningVariable
int dropOffPriority;
}
@PlanningEntity // Shadow entity
class Vehicle implements PickupOrVehicle {
...
@ShadowVariable(based on dropOffPriority and previousPickup)
List<Customer> dropOffOrderList;
// For consistency we might also add pickUpOrderList
}
dropOffPriority
应该是全局唯一的(通过唯一地初始化它并且只为该变量配置SwapMoves。
或者,VariableListener应该只按其客户的ID订购具有相同dropOffPriority
的2个分配(因为排序必须是确定性的!)。
不确定它是否会运作良好。如果您确实尝试过,请在此处告知我们是否运作良好。