1.研究背景
随着我国生鲜农产品市场的蓬勃发展,对产品的需求量和品质要求都在持续上升。然而,在这一过程中,我们也逐渐发现农副产品流通中的一些问题,特别是物流基础设施和信息化程度的不足。生鲜农副产品种类繁多,保鲜需求各异,储存时间短,且消费者需求分布广泛,路径网络错综复杂,这使得物流配送路径的优化变得尤为重要。
随着消费者对生鲜农副产品选择性、新鲜度等品质要求的提升,对配送时间的要求也愈发严格,这无疑为路径优化带来了新的挑战。配送作为生鲜农产品流通中的关键环节,其路径设计的科学性和合理性对消费者体验、企业经济效益以及社会影响都起着决定性作用。
因此,优化配送车辆路径不仅能提高配送效率,降低配送成本,确保产品准时送达,提升消费者满意度和企业经济效益,还能减少车辆使用,缓解城市拥堵,降低汽车噪声和尾气排放,从而实现对生态环境的保护。
生鲜农产品配送车辆路径优化(VRP)问题属于带时间窗的车辆路径(VRPTW)问题,该问题是由Pullen等[1](1967),Knight等[2](1968)考虑提供服务间隔时间约束时提出的。我国对该类问题的研究主要集中在模型构建和求解方法两个方向。2014年,杨磊等以顾客满意度为目标函数,以客户的时间要求为约束条件,建立带时间窗口的鲜活农产品配送模型进行配送车辆路径优化
研究[3]。2016年,葛显龙等考虑路程等因素,以物流企业的最小成本(车辆成本和货损成本)为目标函数,建立了带时间窗口约束的优化模型,并给出最优车辆路径[4]。2017年,朱莉等以最短车辆运行时间为最优目标提出了一种带时间窗口的紧急救援路线优化模型,解决了带时间窗的跨区救援线路优化问题[5]。2019年,冀巨海等以配送成本最小为目标函数,建立了基于软硬时间窗口限制和取送两种方式相结合的配送车辆路径优化模型[6]。2017年,郭咏梅等针对突发事件中的应急物流VRPTW问题,提出一种蚂蚁算法和人工鱼群算法相结合的混合算法[7]。2018年,邓红星等构建了公路零担物流配送路径优化模型,并提出置换算法求解得出最优方案[8]。2020年,赵志学把交通拥堵情况引入VRPTW数学问题,构建了配送车辆路径优化的数学模型,并采用GA进行问题求解。2022年,王阔和郝福珍以配送总路程最短为目标构建VRPTW问题的约束模型,用改进后的PGSA算法,达到更好的求解结果[9]。2023年,李建华等依据生鲜农产品物流的构成,引入Milk-Run循环取货模式,综合考虑装载率、出车数量、疲劳驾驶、客户时间等因素构建多目标VRPTW模型,通过仿真实验证明了所提出的方法可以为企业的物流决策提供参考[10]。
生鲜农产品配送车辆路径优化(VRP)问题,尤其是带时间窗的车辆路径(VRPTW)问题,是物流领域中的一个热点研究方向。我国学者在生鲜农产品配送车辆路径优化问题上取得了显著的进展。这些研究不仅关注了基本的路径优化问题,还逐渐将实际问题中的复杂因素纳入考虑,如客户的时间要求、物流成本、运输时间、交通拥堵等。在求解方法上,学者们也进行了多种尝试和创新。从早期的数学模型和仿真实验,到近年来的智能算法,如蚂蚁算法、置换算法、GA和PGSA算法等,这些算法在求解VRPTW问题上展现出了良好的性能。特别是近年来,随着大数据、人工智能等技术的快速发展,生鲜农产品配送车辆路径优化问题的研究也迎来了新的机遇。
2.模型
以生鲜农产品配送路径优化为研究对象,以配送路径最短构造优化模型,寻找最优配送方案。
2.1 模型假设
(1)假设存在一个配送中心和多个客户,配送车辆充足;(2)配送车辆匀速行驶且燃料充足,无故障;(3)配送中心货物充足,能满足多个客户需求;(4)所有货品运输储存温度一致;(5)车辆的载重量相同;(6)车辆服务完最后一个顾客后返回配送中心。
2.2 符号定义
A:表示客户节点数量,A={0,1,2,...A},0表示配送中心;
K:配送中心车辆数量;
Q:配送中心车辆的容量;
ti:到达第i个客户点的时间;
wi:第i个客户点的等待时间;
dij:第i个客户点与第j个客户点的距离;
qi:第i个客户点的需求量;
Fi:第i个客户点的服务时间;
Ei:第i个客户点的最早服务时间;
Li:第i个客户点的最晚服务时间;
Tk:第k辆车的最大行驶时间。
2.3 决策变量
2.4 目标函数
根据符号定义及决策变量,运输车辆路径最短的目标函数可以表述为:
2.5 约束条件
(1)配送中心车辆数量约束:
(2)车辆配送完成后返回配送中心:
(3)每个客户点都被一辆车服务一次:
(4)每辆车的容量约束:
(5)车辆最大行驶时间约束:
(6)客户服务时间约束:
3.遗传算法
3.1 标准遗传算法
3.1.1 编码
染色体编码是利用遗传算法求解问题时首先需要考虑的部分,编码的好坏直接影响计算的复杂度和各算子的性能。利用遗传算法求解车辆路径问题时通常采用自然数编码。在需进行配送的客户点数量为n,问题最大可使用车辆数为k时,设定染色体的长度为n+k-1,染色体表达形式即为(1,2,…n,n+1,……,n+k-2,n+k-1)。
3.1.2 适应度函数
本模型适应度函数是求取车辆路径最短,由于存在容量约束和时间窗约束,因此增加惩罚函数来进行求解:
f(s)=c(s)+αq(s)+βw(s)
式中,c(s)表示原本的目标函数,q(s)表示当前解违反容量约束之和,w(s)表示当前解违反时间窗约束之和。α、β为常数系数,因容量约束比较容易满足而满足时间窗约束较为困难,设定α为一较小常数,β为一比较大的常数。带时间窗的车辆路径问题要求求解满足约束条件下的最短路程,因此f(s)的解越小,适应度越高。
3.1.3 构造初始种群
遗传算法的一系列操作都是基于种群进行的,因此在进行遗传操作前需根据问题构造初始解。本文的操作为:在客户点集合中随机选出一客户点i作为路径上的第一站,按照顺序依次判断客户点i+1、i+2、…、n、1、2、…、i-1,将集合中的点全部添加至路径。具体判断方法为:
确定该点是否满足当前路径的容量约束,如果满足则将该点添加至路径,不满足则保存当前路径并更新一条新路径将该点作为新路径的第一站。如满足容量约束,判断该点能否在满足自身以及路径上相邻两点的左时间窗的情况下插至现有路径两点之间,如ad <ai<ae,则客户点i可以加至d、e两点之间。
如满足容量约束,且该点不能插入当前路径相邻两点之间,则将该点插至当前路径末位。
通过以上方法判断整个集合,可得到初始种群中的一个初始解,根据设定的种群大小重复操作,可得到初始种群。
3.1.4 选择算子
根据个体的适应度,按照一定的规则或方法,从某一代群体中选择出一些优良的个体遗传到下一代群体中。
3.1.5 交叉算子
将群体中选中的各个个体随机搭配,对每一对个体,以某一概率(交叉概率)交换它们之间的部分染色体。通过交叉,遗传算法的搜索能力得以飞跃提高。
3.1.6 变异算子
为保证种群内个体多样性,依照生物界基因规律设定变异概率为一个较小值,按照概率进行变异操作。
3.1.7 终止条件
判断运算迭代次数是否达到设定值,未达到则继续循环迭代;达到则停止循环,输出当前种群为最优解。
图1 遗传算法的流程图
3.2 标准遗传算法的改进
传统遗传算法的局部搜索容易出现过程停滞,在一定程度上影响了优化求解的效率和最优结果的精度,引入大规模邻域搜索算法(LNS)的破坏和修复思想改进遗传算法的局部搜索操作,提高VRPTW问题配送路径优化精度。
大邻域搜索算法的关键是破坏和修复操作。破坏操作选择移除客户点的过程中,为确保每次调用时都能破坏解决方案的不同部分,引入控制确定性的随机性参数。移除若干客户后,再使用修复操作将移除的客户点重新插入车辆行驶路径增加最少的位置,并检验插入后是否满足车辆载重量和时间窗约束。具体修复过程为:首先,找到满足约束条件的位置,计算增加值最小的位置插入;然后,计算所有移除客户点插入最佳位置后的目标增加值,将增加值最大的客户作为第一个插入;重复上述操作,直至移除客户点全部插入配送路径。
其在主函数中的代码,可以通过删除该条代码,比较传统遗传算法和改进遗传算法的性能。
%% 局部搜索操作(改进)
SelCh=local_search(SelCh,cusnum,cap,demands,a,b,L,s,dist,alpha,belta,v);
3.3 算法性能
3.3.1 结果的准确性
利用Solomon标准算例运行代码,将算法运行的结果与标准算例的理论最优值进行对比。
表1 改进前后遗传算法性能比较
算例 | 理论最优值 | 标准遗传算法 | 误差 | 改进遗传算法 | 误差 |
R101(25) | 617.1 | 911.6 | 47.72% | 669.2 | 8.44% |
R102(25) | 547.1 | 834.3 | 52.12% | 576.8 | 5.43% |
R103(25) | 454.6 | 719.3 | 58.22% | 507.1 | 11.55% |
由上表可知,标准遗传算法运行的结果误差较大,改进后的遗传算法运行的结果误差较小,改进后的遗传算法能够快速并有效解决VRPTW问题。
3.3.2 参数的设置
在算法运行过程中,通过调整遗传算法的种群大小、交叉概率、变异概率和迭代次数等参数,遗传算法会呈现不一样的运行结果,基于此,可以得出模型各参数的具体取值:
表2 模型参数表
参数 | 取值 |
种群规模 | 100 |
最大迭代次数 | 100 |
交叉概率 | 0.8 |
变异概率 | 0.05 |
代沟 | 0.9 |
容量约束惩罚函数 | 10 |
时间窗约束惩罚函数 | 100 |
容量约束比较容易满足而满足时间窗约束较为困难,设定容量约束惩罚函数为一较小常数,时间窗约束惩罚函数为一比较大的常数。
1.参数对算法的影响
(1)种群大小:较小的种群规模可能导致搜索空间探索不足,算法容易陷入局部最优解,即所谓的“早熟收敛”;而较大的种群规模能够提供更多样的遗传基因,有助于搜索过程对解空间的广泛探索,但也导致计算资源的大量消耗和效率降低。选择合适的种群规模需要考虑问题的复杂度、解空间的大小、计算资源的限制等因素。一般来说,对于复杂问题或解空间较大的问题,需要更大的种群规模。
(2)交叉概率:交叉操作模拟生物进化中的基因重组过程,通过组合父代个体的基因片段,产生新的个体,增加种群的多样性。较高的交叉概率可以促进种群的搜索能力,更容易找到新的解空间;较低的交叉概率可以加速算法的收敛速度,保留更多的父代个体的优秀基因。选择合适的交叉率需要考虑问题的特点、种群的多样性、算法的收敛速度等因素。一般来说,对于复杂问题或需要更多探索的问题,可以选择较高的交叉率。
(3)变异概率:变异操作模拟了生物进化中的基因突变过程,通过随机改变个体的基因,引入新的基因,增加种群的多样性。较高的变异概率能够增强种群的搜索能力,更容易跳出局部最优解;较低的变异率会减少对已有解的破坏,可以加快算法的收敛速度。选择合适的变异率需要考虑问题的特点、种群的多样性、算法的收敛速度等因素。一般来说,对于复杂问题或容易陷入局部最优的问题,可以选择较高的变异率。
(4)迭代次数:迭代次数较小时,遗传算法运行速度快,但是可能难以收敛到最优解;迭代次数较大时,算法有更多的机会对种群进行进化操作,能够增加算法的搜索空间,提高找到最优解的机会,但迭代次数过高时,算法运行时间会变长,可能造成计算资源的浪费。
2.参数之间的关系
种群规模、交叉率和变异率三个参数相互关联,共同影响着遗传算法的性能。
(1)种群规模与交叉率
较大的种群规模可以容忍更高的交叉概率,因为更大的种群可以提供更多样化的个体,降低交叉操作导致的基因丢失风险。
(2)种群规模与变异率
较大的种群规模可以容忍更高的变异概率,因为更大的种群可以提供更多样化的个体,降低变异操作导致的解的破坏风险。
(3)交叉概率与变异概率
较高的交叉概率可以弥补较低的变异概率带来的探索能力不足,反之亦然。
4.仿真实验及结果分析
4.1 算例数据
假设车辆以40km/h速度匀速行驶,外界温度为27℃,车内温度为6℃,所使用的配送车辆最大载重量为5吨。在满足客户时间窗及车辆载重量的约束的同时,进行合理安排配送路线。配送中心及客户的位置坐标、客户的需求量、要求服务时间窗等信息如表所示,其坐标分布图如图所示。
表3 配送中心及客户点信息
编号 | 横坐标/km | 纵坐标/km | 配送量/吨 | 时间窗Ei/h | 时间窗Li/h | 时间窗Ei/min | 时间窗Li/min | 服务时间/min |
0 | 366.60 | 96.72 | 0 | 5:00 | 17:30 | 0 | 750 | 0 |
1 | 373.70 | 98.86 | 1.5 | 5:30 | 9:00 | 30 | 240 | 20 |
2 | 372.46 | 99.72 | 0.5 | 7:00 | 9:30 | 120 | 270 | 10 |
3 | 369.09 | 99.42 | 1.5 | 5:30 | 8:30 | 30 | 210 | 30 |
4 | 365.75 | 98.41 | 1.5 | 6:00 | 9:00 | 60 | 240 | 25 |
5 | 371.66 | 103.61 | 2 | 6:10 | 10:00 | 70 | 300 | 30 |
6 | 370.13 | 97.44 | 2 | 6:30 | 10:20 | 90 | 320 | 30 |
7 | 365.17 | 100.32 | 1.8 | 7:00 | 9:30 | 120 | 270 | 30 |
8 | 370.20 | 102.49 | 1 | 7:00 | 10:00 | 120 | 300 | 20 |
9 | 369.91 | 103.22 | 1 | 6:40 | 9:30 | 100 | 270 | 25 |
10 | 366.66 | 100.79 | 1 | 6:00 | 9:40 | 90 | 280 | 20 |
11 | 367.42 | 102.81 | 1 | 7:00 | 10:30 | 120 | 330 | 20 |
12 | 373.22 | 97.54 | 0.5 | 7:00 | 10:00 | 120 | 300 | 15 |
13 | 365.98 | 102.38 | 0.5 | 7:00 | 10:30 | 120 | 330 | 15 |
14 | 371.00 | 101.03 | 1.5 | 7:00 | 10:00 | 120 | 300 | 20 |
15 | 369.98 | 100.44 | 2 | 6:20 | 9:30 | 80 | 270 | 40 |
16 | 368.86 | 102.30 | 1.5 | 6:40 | 9:30 | 100 | 270 | 15 |
17 | 367.00 | 99.40 | 1.5 | 6:40 | 9:00 | 100 | 270 | 20 |
18 | 372.03 | 101.11 | 0.5 | 7:00 | 10:00 | 120 | 300 | 10 |
19 | 373.82 | 103.65 | 2.5 | 6:00 | 9:30 | 60 | 270 | 40 |
20 | 371.21 | 98.11 | 1 | 7:00 | 10:00 | 120 | 300 | 20 |
为了便于算法的计算,仿照大多文献的做法,将服务的时间窗进行如下变换:
①整理出所有顾客的时间窗和配送中心的时间窗,比如说配送中心的时间窗是[5:00-17:30],顾客1的时间窗是[5:30-9:00]。
②找出配送中心和所有顾客的左时间窗的最小值,然后将其设为0。这里最小的左时间窗是配送中心的左时间窗5:00,因此将其设为0,配送中心的右时间窗为17:30-5:00=12.5小时=750分,于是配送中心的右时间窗为750。然后顾客1的左时间窗就变为5:30-5:00=0.5小时=30分,于是顾客1的左时间窗为30,顾客1的右时间窗就变为9:00-5:00=4小时=240分,于是顾客1的右时间窗就变为240。同理得到表3中第七列和第八列的时间窗。
配送中心及客户点坐标分布图如图所示:
图2 配送中心及客户点分布图
4.2 结果对比
从多方面分析,改进后的遗传算法更优于标准的遗传算法。
改进前的配送路线车辆绕行距离长且派出车辆数量多,车辆路线存在交叉现象,配送的区域重叠程度较高,车辆的总行驶距离长。
改进后的车辆的路线减少了派车数量、总配送距离与配送成本,配送区域交叉现象明显减少。此外改进后车辆的平均装载率得到提高,达到87.67%,这样能够减少企业汽车资源的浪费。
表4 结果对比表
改进前 | 改进后 | ||
配送 路线 | 0->15->4->8->18->2->0 0->7->0 0->10->13->16->14->9->0 0->6->0 0->17->20->11->3->0 0->19->1->5->12->0 | 0->4->7->0 0->10->13->11->16->8->0 0->18->19->5->9->0 0->17->3->20->6->0 0->12->1->2->14->15->0 | |
车辆数 | 6 | 5 | |
总距离 | 115.4572 | 75.9994 | |
车辆平均装载率 | 73.06% | 87.67% | |
配送区域重叠度 | 高 | 低 | |
违反约束路径数 | 1 | 0 | |
违反顾客数 | 4 | 0 |
图3 改进前的配送路线
图4 改进前的优值变化图
图5 改进后的配送路线
图6 改进后的优值变化图
5.研究结论
本文以生鲜农产品配送路径优化为切入点,考虑时间窗约束构建了配送路径最短的优化模型,基于标准遗传算法、大规模邻域搜索算法给出了一种改进遗传算法的实现流程,详细阐述了传统遗传算法、大规模邻域搜索算法局部搜索操作的具体步骤,并从标准算例运行结果的准确性方面验证了改进遗传算法解决VRPTW问题的有效性。通过种群大小、交叉概率、变异概率和迭代次数等遗传算法参数的不断调整以求算法性能最优,仿真试验获得算例配送路径为5条,最多需要车辆数量为5辆,最短配送路径75.9994 km,优于标准遗算法所得最短路径,对企业生鲜配送路径的选取和改进有一定的指导意义。