游览开始作为 Optaplanner VRPTW 中的附加规划变量 - 一个好主意?

tour start as an additional planning variable in Optaplanner VRPTW - a good idea?

祝所有 Optaplanner 用户新年快乐,

我们有计划旅行的要求。这些游览包含由每周变化的卡车数量执行的链式和时间窗活动(送货)。

单次参观的开始时间可能会有所不同,具体取决于多种情况(即,必须生产要交付的货物,然后才能开始参观;工厂门口只能提供有限数量的卡车同时;卡车必须在开始新的旅行之前返回)。意思是:旅行的顺序也可能会有所不同,并且卡车旅行之间可能会出现时间间隔。

我的设计计划是,在 Optaplanners VRPTW 示例中将 TourStartTime 注释为第二个计划变量,并将 TourStartTime 分配给 2 小时时间粒度(计划范围为 1 周,游览通常不会在夜间开始;所以提到的时间颗粒反映了可能的旅行开始的简化日历)。

可用卡车的数量(来自外部物流公司)可能每周都不同。关于这一点,我想计划 'unlimited' 辆卡车。但是,每个物流公司实际可以分配送货的卡车数量应该受到约束(即'trucks_to_be_used_in_parallel')的控制。

任何人都可以告诉我,如果这是一种可行的设计方法,或者我必须在哪里避免陷阱(大约 1000 deliveries/week,每天 40-80 辆卡车)?

谢谢 迈克尔

第二个规划变量是可能的(根据您的要求甚至可能是最好的设计),但它会破坏搜索 space 甚至可能需要自定义课程粒度移动才能变得更好结果。

相反,我首先调查是否可以将卡车的 TourStartTime 设为 影子变量。例如,给所有卡车一个唯一的优先编号。然后将卡车的 TourStartTime 设为影子变量:卡车可以离开的最快时间。如果只有3条车道,4辆卡车要离开,优先级最高的3辆卡车先离开(所以得到原来的TourStartTime,第4辆卡车得到更晚的)。