1.时序约束下多卡车多无人机包裹投递任务分配方法,其特征在于,包括以下步骤:S1、根据卡车‑无人机的初始位置、待配送客户的位置以及表示时序约束的有向无环图,采用续航约束检查方法获取满足续航约束的卡车‑无人机路径;
S2、采用变邻域下降算法对满足续航约束的卡车‑无人机路径进行改进,得到卡车‑无人机的联合配送路径,完成多卡车多无人机包裹投递任务分配;
所述步骤S1包括以下分步骤:
S1‑1、根据m对卡车‑无人机的初始位置 、n个待配送客户的位置集合以及表示时序约束的有向无环图 ,将所有待配送客户分配给卡车进行服务,以得到满足时序约束的m条卡车路径 ;
S1‑2、根据满足时序约束的m条卡车路径 ,采用拆分算法获取卡车‑无人机联合路径,并使用长度为n的列表 将所有客户标记分类;
S1‑3、根据满足时序约束的m条卡车路径 和列表 ,检查每辆卡车所携带的无人机在为客户提供服务时是否违反续航约束,并将违反续航约束的无人机对应的客户重新分配给携带该无人机的卡车进行服务;
S1‑4、判断是否存在预计被服务时间有更新的客户,若是则进入步骤S1‑5,否则得到最后一个客户被服务的时间 ,进入步骤S2,其中 表示客户位置c预计被服务的时间;
S1‑5、获取预计被服务时间有更新的客户并更新时间 ,返回步骤S1‑3;
所述步骤S1‑2中使用长度为n的列表 将所有客户标记分类的具体方法为:
(1)若客户位置 由卡车服务且该卡车正携带着无人机,则将该客户位置对应的客户标记为0,即令 ;
(2)若客户位置 由卡车服务且该卡车所携带的无人机已被释放,则将该客户位置对应的客户标记为1,即令 ;
(3)若客户位置 由无人机服务,则将该客户位置对应的客户标记为2,即令;
所述步骤S1‑3中检查每辆卡车所携带的无人机在为客户提供服务时是否违反续航约束的具体方法为:针对路径 中所安排的各个客户 ,其中 , , 表示路径 的长度,按照从前往后的顺序依次检查 和 、 和 、…、和 的客户类型,并根据相邻两个客户的不同类型,分为8种可能的情况:情况(1): , ;
情况(2): , ;
情况(3): , ;
情况(4): , ;
情况(5): , ;
情况(6): , ;
情况(7): , ;
情况(8): , ;
针对情况(1)、(6)和(7),采用公式(1)计算卡车到达客户 所在位置的时间 :(1)
其中 表示客户 所在位置预计被服务的时间, 表示无人机到达客户所在位置的时间, 表示卡车从客户 所在位置到达客户 所在位置的行驶时间;
针对情况(2)和(8),采用公式(2)计算无人机到达客户 所在位置的时间 :(2)
其中 表示无人机被释放时所在的客户位置, 表示客户位置 预计被服务的时间,表示无人机到达客户位置 的时间, 表示无人机从客户位置 到客户 所在位置的飞行时间;
针对情况(3),采用公式(3)计算卡车到达客户 所在位置的时间 :(3)
其中 表示客户 所在位置预计被服务的时间, 表示无人机到达客户所在位置的时间, 表示卡车从客户 所在位置到客户 所在位置的行驶时间;
针对情况(4),采用公式(1)计算卡车到达客户 所在位置的时间 ,同时采用公式(4)计算无人机到达客户 所在位置的时间 :(4)
其中 表示无人机被释放后所服务的客户位置, 表示客户位置 预计被服务的时间, 表示无人机到达客户位置 的时间, 表示无人机从客户位置 到客户 所在位置的飞行时间;
通过公式(5)检查续航约束:
(5)
其中 表示无人机的最大飞行时长;
若满足公式(5),则路径 暂时满足续航约束,并继续往路径 后端检查;若不满足,则无人机的本次投递任务违反续航约束,取消无人机的本次投递任务,将对应的客户重新分配给携带该无人机的卡车进行服务,并更新列表 ;
针对情况(5),采用公式(3)计算卡车到达客户 所在位置的时间 ,同时采用公式(4)计算无人机到达客户 所在位置的时间 ,并进行情况(4)相同的续航约束检查过程;
采用公式(6)计算客户 所在位置预计被服务的时间 :(6)
其中 表示客户 所在位置最早允许被服务的时间,且 ;
所述步骤S1‑5中通过公式(7)更新时间 :(7)
其中 表示客户位置 最早允许被服务的时间, , 表示客户位置在有向无环图 中的子客户集合, 表示客户位置 预计被服务的时间,客户位置 在客户位置 之前被服务且 , 表示预计被服务时间有更新的客户位置集合,为一个趋近于零的正数;
所述步骤S2中有三种领域结构:
邻域1:翻转 中的一段路径,该段路径的长度在4到 之间,其中 , 表示路径 的长度;
邻域2:交换 中两个不相邻客户的位置;
邻域3:将某个客户插入到另一个客户后面的位置;
所述步骤S2包括以下分步骤:
S2‑1、初始化设置变量 , , ;
S2‑2、判断是否满足 ,若是则令变量a加1, 并进入步骤S2‑3,否则进入步骤S2‑5;
S2‑3、判断是否满足 ,若是则令变量j加1, , 并进入步骤S2‑4,否则进入步骤S2‑5;
S2‑4、判断是否满足 ,若是则进入步骤S2‑9,否则返回步骤S2‑2;
S2‑5、翻转路径 ;
S2‑6、判断当前卡车路径是否满足时序约束,若是则采用步骤S1‑1 S1‑4相同的方法得~到最后一个客户被服务的时间 ,并进入步骤S2‑8,否则进入步骤S2‑7;
S2‑7、令变量b加1,并返回步骤S2‑2;
S2‑8、判断是否满足 ,若是则返回步骤S2‑7,否则令 并返回步骤S2‑1;
S2‑9、初始化变量 , , ;
S2‑10、判断是否满足 ,若是则令变量a加1, 并进入步骤S2‑11,否则进入步骤S2‑13;
S2‑11、判断是否满足 ,若是则令变量j加1, , 并进入步骤S2‑12,否则进入步骤S2‑13;
S2‑12、判断是否满足 ,若是则进入步骤S2‑17,否则返回步骤S2‑10;
S2‑13、交换客户 和 的位置;
S2‑14、判断当前卡车路径是否满足时序约束,若是则采用步骤S1‑1 S1‑4相同的方法~得到最后一个客户被服务的时间 ,并进入步骤S2‑16,否则进入步骤S2‑15;
S2‑15、令变量b加1,并返回步骤S2‑10;
S2‑16、判断是否满足 ,若是则返回步骤S2‑15,否则令 并返回步骤S2‑1;
S2‑17、初始化变量 , , , ;
S2‑18、判断是否满足 ,若是则令变量 加1, 并进入步骤S2‑19,否则进入步骤S2‑22;
S2‑19、判断是否满足 ,若是则令 ,变量 加1, 并进入步骤S2‑20,否则进入步骤S2‑22;
S2‑20、判断是否满足 ,若是则令变量 加1, 并进入步骤S2‑21,否则进入步骤S2‑22;
S2‑21、判断是否满足 ,若是则完成多卡车多无人机包裹投递任务分配,否则返回步骤S2‑18;
S2‑22、将客户 插入到客户 的后一个位置;
S2‑23、判断当前卡车路径是否满足时序约束,若是则采用步骤S1‑1 S1‑4相同的方法~得到最后一个客户被服务的时间 ,并进入步骤S2‑25,否则进入步骤S2‑24;
S2‑24、令变量b加1,并返回步骤S2‑18;
S2‑25、判断是否满足 ,若是则返回步骤S2‑24,否则令 并返回步骤S2‑1;
所述步骤S2‑6、S2‑14和S2‑23中判断当前卡车路径是否满足时序约束的具体方法为:A1、令有向无环图 ,并在有向无环图 中添加从客户 指向客户 的有向边;
A2、获取有向无环图 中入度为零的客户点集合 ;
A3、判断集合 中客户点个数是否为零,若是则进入步骤A4,否则进入步骤A5;
A4、判断有向无环图 中客户点个数是否为零,若是则满足时序约束,否则表示有向无环图 中存在环,不满足时序约束;
A5、在有向无环图 中删除集合 里包含的所有客户位置及其相连的有向边,然后清空集合 ,返回步骤A2。