基于蚁群以及遗传算法的AGV调度方法与流程

文档序号:22739350发布日期:2020-10-31 09:21阅读:390来源:国知局
基于蚁群以及遗传算法的AGV调度方法与流程

本发明涉及一种agv调度方法,尤其是一种基于蚁群以及遗传算法的agv调度方法。



背景技术:

随着现代工业和信息服务业的发展,人力资本愈发珍贵,人们越来越认识到仓储、货运等物流环节对提高产品利润的重要性。据资料显示,物流、运输等环节占整个制造业企业成本的50%以上,因此提高存储、运输的效率,充分发挥场地的性能优势,成为各大企业竞相发展的焦点。

自动化立体仓库是在现代物流系统中的一个重要组成部分,自动化立体仓库的智能化程度对整个物流业的发展有着重要的影响,智能化程度越高,则物流业越发达,合理的调度方案可以显著提高物流效率,从而节约物流成本,提升企业的效益。

蚁群算法(antcolonyoptimization,aco)是一种启发式生物智能算法,以蚁群为研究对象,研究其在觅食过程中的群体性行为,并将这种群体智能行为抽象成数学算法,并应用到实际问题的求解过程中。遗传算法是一种模仿生物进化过程中,染色体的复制、交叉、变异等一系列变化过程,并将这种染色体的行为抽象成数学模型,应用到对实际问题的求解过程中。但是蚁群算法和遗传算法在解决agv(automatedguidedvehicle)调度的实际问题时容易出现无法收敛和陷入局部最优等不足,难以实现有效地调度。



技术实现要素:

本发明的目的是克服现有技术中存在的不足,提供一种基于蚁群以及遗传算法的agv调度方法,其能有效解决自动化仓储中多agv协同的工作,提高agv调度的效率,安全可靠。

按照本发明提供的技术方案,一种基于蚁群以及遗传算法的agv调度方法,所述agv调度方法包括如下步骤:

步骤1、对配送中心以及所述配送中心周围的n个客户节点,得到集合n={0,1,2,...,n},其中,节点0为配送中心,客户节点的集合为nc,nc={1,2,...,n},n为客户节点的数量;

对m个配送的车辆,得到车辆集合k,其中,k={1,2,...,m},在配送时,所有车辆必须从节点0开始并回到节点0;

对客户节点集合nc中的任一节点i,存在所述节点i的时间窗[ai,bi],ai表示节点i最早开始接受货物的时间,bi为节点i最晚接受货物的时间,qi为节点i的需求量,车辆在节点i的服务完成时间为si;对车辆集合k中的任一车辆k,车辆k达到节点i的时刻为tik,车辆k从节点i达到节点j的时刻为tij;

步骤2、根据步骤1中配送中心、客户节点集合nc、车辆集合k,建立带时间窗的车辆路径的数学模型,具体为

其中,

步骤3、确定蚂蚁的数量r,为每个蚂蚁设置对应的禁忌表tabu以及节点存储表tau;初始化迭代参数nf、初始化信息素集qr、初始化禁忌表tabu以及初始化节点存储表tau,并给定最大迭代次数nfmax、信息素重要度因子α、期望程度因子β、车辆容量因素的权衡因子θ、遗传算法中的交叉概率pc以及变异概率pm;

步骤4、将r只蚂蚁初始化到不同的客户节点上,并将每个蚂蚁对应的客户节点写入每个蚂蚁的禁忌表tabu表内;

步骤5、对于节点i上的蚂蚁r,将节点i加入蚂蚁r的节点存储表tau中;计算得到蚂蚁r的转移概率,按轮盘赌的方式选择下一个客户节点,具体地,

其中,为蚂蚁r在t时刻从节点i转移至节点j的概率,τij(t)为t时刻节点i与节点j之间的信息素强度;ηij(t)为t时刻节点i到节点j的期望启发函数,allow为蚂蚁r下一步允许访问的节点集合;ti为目前路径到达点i时经过的时间,(aj,bj)为节点j的时间窗,(az,bz)为节点z的时间窗,w1+w2=1;

步骤6、查询蚂蚁r的节点存储表tau,当蚂蚁r遍历完成所有的节点后,转到步骤7,否则,根据步骤5将蚂蚁r成功转至节点j,将节点j加入禁忌表tabu表;

在将蚂蚁r转移至节点j后,根据蚂蚁r的路径查询车辆的载重以及节点j的时间窗约束,当车辆在的载重大于车辆的额定载重qe或节点j的时间不满足时间窗约束时,则将蚂蚁r返回到节点0,同时将节点0加入到节点存储表tau表中,并转到步骤5;

步骤7:判断蚂蚁r是否回到节点0,若没有回到节点0,则将节点i加入到禁忌表tabu中,并转至步骤8;否则,直接转至步骤8;

步骤8:判断r是否大于蚂蚁数r,若r>r,转到步骤9;否则,令r=r+1并转至步骤5;

步骤9:根据每个蚂蚁的节点存储表tau,计算每个蚂蚁所走的路径长度,并将r个蚂蚁的路径按距离排列在集合solution中,找出所有蚂蚁中行走距离最短的那只蚂蚁,将行走距离最短蚂蚁所行走的路径作为当前迭代过程中的最优解now_bestcost,若当前最优解now_bestcost小于全局最优解best_cost,将全局最优解best_cost更新为当前最优解now_bestcost;

步骤10、将当前迭代过程中的最优解now_bestcost复制w个,作为遗传算法中的部分初始种群,通过轮盘赌的方法每次从步骤9中所得的所有剩下的蚂蚁路径中选择两个行走路径进行比较,将路径长度较短的路线保留到初始种群中,直至种群数达到r个,将数量为r的初始种群中的所有解中全部去除配送中心0,得到r条客户节点的排列,每条这样的排列被称作染色体,以得到遗传算法的父代染色体;

步骤11、产生一个随机数rand1,0<rand1<1,当随机数rand1大于设定的交叉概率pc时,执行交叉步骤,否则,随机复制一个父代染色体作为子代染色体,重复执行上述操作,直至得到r个子代染色体;

步骤12、产生一个随机数rand2,0<rand2<1,当随机数rand2小于变异概率pm,执行变异操作,否则,随机复制一个父代染色体作为子代染色体,重复执行变异操作,直至再次得到r个子代染色体;

步骤13、对r个子代染色体进行解码,并计算各子代个体染色体解码后的路径长度;

步骤14:更新集合solution中路径较长的解,更新节点存储表tau,更新当前最优解now_bestcost、全局最优解best_cost以及信息素集qr;

步骤15、清空每只蚂蚁的禁忌表tabu和节点存储表tau,清空集合solution,清空now_bestcost以及清空allow集合;

步骤16、判断迭代参数nf是否超过设置的最大迭代次数nfmax,若迭代参数nf大于最大迭代次数ncmax,则输出最优路径和最优路径长度;否则,nf=nf+1,跳到步骤4。

步骤14中,若当前最优解now_bestcost小于全局最优解best_cost,更新信息素集qr为:

其中:τij(t+1)为更新后节点i和节点j之间的信息素强度;τij(t)为更新前的节点i和节点j之间的信息素强度;delta为惩罚值,能够奖励超过全局最优解的蚂蚁;ρ为信息素挥发系数,δτij(t)为路径节点i到节点j上的信息素增加量,即所有蚂蚁在该段路径上释放的信息素之和,为蚂蚁r在客户节点i到客户节点j之间所释放的信息素;r为蚁群的数量;qr为信息素释放总量;lr为蚂蚁r所走过路径(从节点i到节点j)的总长度。

信息素挥发系数ρ的更新为:

其中,:ρmin为信息素挥发系数ρ的最小值,x,y为系数。

本发明的优点:在蚁群算法中引入车辆容量因素和时间窗因素改进蚂蚁状态转移概率,并且改进信息素挥发因子,使其能够随着计算进程自动调整,同时改进信息素更新策略,奖励超过全局最优解的精英蚂蚁。最后使用遗传算法中的选择、交叉、变异算子对蚁群算法得到的较优解进行局部优化,达到加快算法收敛速度,提高解的质量,能够明显解决传统优化算法进行路径规划时收敛速度慢、易陷入局部最优等缺点,能提高对实际问题的求解效率,减少迭代过程的盲目性。

附图说明

图1为本发明进行蚁群算法以及遗传算法的流程图。

图2为本发明交叉得到子代染色体的示意图。

具体实施方式

下面结合具体附图和实施例对本发明作进一步说明。

如图1所示:为了能有效解决自动化仓储中多agv协同的工作,提高agv调度的效率,本发明的agv调度方法包括如下步骤:

步骤1、对配送中心以及所述配送中心周围的n个客户节点,得到集合n={0,1,2,...,n},其中,节点0为配送中心,客户节点的集合为nc,nc={1,2,...,n},n为客户节点的数量;

对m个配送的车辆,得到车辆集合k,其中,k={1,2,...,m},在配送时,所有车辆必须从节点0开始并回到节点0;

对客户节点集合nc中的任一节点i,存在所述节点i的时间窗[ai,bi],ai表示节点i最早开始接受货物的时间,bi为节点i最晚接受货物的时间,qi为节点i的需求量,车辆在节点i的服务完成时间为si;对车辆集合k中的任一车辆k,车辆k达到节点i的时刻为tik,车辆k从节点i达到节点j的时刻为tij;

具体地,本发明所要解决的问题是带时间窗的车辆路径问题,车辆路径问题是一类经典的组合优化问题,也是物流领域研究的核心问题之一。如果在车辆路径问题中增加了对客户偏好服务时间的约束,即个性化地限定了客户被服务时间的范围,即延伸出了带时间窗的车辆路径问题。带时间窗的车辆路径问题可描述为:假设一个配送中心为周围若干个位于不同地理位置、且对货物送达时间有不同要求的客户节点提供配送服务。其中,配送中心用于运送的车辆都是同一型号的(即拥有相同的容量、速度);客户节点对车辆出入的时间有限制;车辆在所有客户节点有相同的停留服务时间;车辆需要从配送中心出发,经过所有的客户节点后回到配送中心。在这样的前提下,考虑如何合理安排车辆配送路线,既能在满足各项约束的条件下,将货物安全送到客户的手中,又能实现配送车辆行驶总路径最短。

因此,每个节点都包含三个信息,该节点的坐标、该节点的需求量qi以及该节点的时间窗。

步骤2、根据步骤1中配送中心、客户节点集合nc、车辆集合k,建立带时间窗的车辆路径的数学模型,具体为

其中,

具体地,dijk为车辆k从节点i到节点j之间的欧式距离,公式1为车辆总行驶路径最小目标函数;公式2为配送车辆的载重约束;公式3表示每个客户节点只能由一辆车进行服务;公式4表示车辆服务某节点后必须从此节点出发去下一节点约束;公式5和公式6表示每个客户节点只允许被服务一次;公式7为消去子回路约束;公式8和公式9为时间窗约束。

步骤3、确定蚂蚁的数量r,为每个蚂蚁设置对应的禁忌表tabu以及节点存储表tau;初始化迭代参数nf、初始化信息素集qr、初始化禁忌表tabu以及初始化节点存储表tau,并给定最大迭代次数nfmax、信息素重要度因子α、期望程度因子β、车辆容量因素的权衡因子θ、遗传算法中的交叉概率pc以及变异概率pm;

具体地,初始迭代参数nf一般取1,最大迭代次数nfmax可取100,α是信息素在概率计算中的权重,表示信息素浓度对蚂蚁进行路径选择的影响程度。β为启发信息重要程度,表示路径上的期望度对蚂蚁进行路径选择的影响程度,θ是车辆容量因素的权衡因子,θ值越大,车辆选择货物需求量大的客户节点的可能性越大,车辆最终满载率可能最高。蚂蚁的数量r和客户节点数量可一致为100个。信息素集qr为每两个客户节点间的信息素浓度集合,初始化信息素集qr即把每两个节点的初始信息素浓度都设置为客户节点数(100)/所有节点(包括配送中心)间的总距离,总距离一般是指节点0到其他所有节点的总距离+节点1到其他节点的总距离+…+节点n到其他所有节点的总距离。每只蚂蚁都有一个禁忌表tabu和一个节点存储表tau,禁忌表tabu存储蚂蚁经过的客户节点(不包含配送中心0),节点存储表tau存储蚂蚁行走的路径中所有的节点(包括但并不止一个配送中心0),初始化禁忌表tabu、初始化节点存储表tau后,则禁忌表tabu为空、节点存储表tau内为0。此外,还包括集合solution,所述集合solution中储存的是算法运行后所得到的带时间窗的车辆路径规划问题的解。

遗传算法中的交叉概率pc、变异概率pm的具体情况可以根据需要进行选择设定,具体为本技术领域人员所熟知,此处不再赘述。

步骤4、将r只蚂蚁初始化到不同的客户节点上,并将每个蚂蚁对应的客户节点写入每个蚂蚁的禁忌表tabu表内;

具体地,将r只蚂蚁随机化分布到客户节点上,各蚂蚁初始的化客户节点编号写入禁忌表tabu表内。

步骤5、对于节点i上的蚂蚁r,将节点i加入蚂蚁r的节点存储表tau中;计算得到蚂蚁r的转移概率,按轮盘赌的方式选择下一个客户节点,具体地,

其中,为蚂蚁r在t时刻从节点i转移至节点j的概率,τij(t)为t时刻节点i与节点j之间的信息素强度;ηij(t)为t时刻节点i到节点j的期望启发函数,,一般地,ηij(t)为节点i到节点j之间距离的倒数,allow为蚂蚁r下一步允许访问的节点集合;ti为目前路径到达点i时经过的时间,(aj,bj)为节点j的时间窗,(az,bz)为节点z的时间窗,w1+w2=1;μij(t)为车辆容量因数,设车辆在节点i的累积载重量为gi,qi为节点i的需求量,qe为车辆的额定载重,则车辆容量因数μij(t)为

具体地,集合allow为蚂蚁r下一步允许访问的客户节点集合,即为nc集合中排除禁忌表tabu中客户节点后所剩的允许访问的客户节点;从集合allow内依次选取客户节点,逐次累加节点i与各个客户节点间的转移概率,将这个累加值与(0,1)中的随机数比较,若累加值大于该随机数,则选择所累加的最后一个客户节点j为蚂蚁r行走的下一个节点(比如节点2到节点3的概率小于该随机数,然后就用这个概率加上从节点2到节点4的概率,累加后的概率和随机数比较,如果大于随机数,选择4节点作为下一个行走的节点),。一般地,w1=0.8,w2=0.2。

步骤6、查询蚂蚁r的节点存储表tau,当蚂蚁r遍历完成所有的节点后,转到步骤7,否则,根据步骤5将蚂蚁r成功转至节点j,将节点j加入禁忌表tabu表;

在将蚂蚁r转移至节点j后,根据蚂蚁r的路径查询车辆的载重以及节点j的时间窗约束,当车辆在的载重大于车辆的额定载重qe或节点j的时间不满足时间窗约束时,则将蚂蚁r返回到节点0,同时将节点0加入到节点存储表tau表中,并转到步骤5;

具体地,蚂蚁r遍历完成所有节点就是蚂蚁r遍历所有客户节点1次,也就是必须满足步骤2中的约束公式5和公式6,也相当于禁忌表tabu中包含全部客户节点。所述车辆满足载重约束就是车辆目前所经过的客户节点的需求量qi的累加值不能超过车辆的额定载重qe,也就是步骤2要求的约束公式2,所述车辆满足时间窗约束就是车辆到达客户节点的时间必须在客户节点的时间窗的范围内,即在客户节点的服务时间内,也就是约束公式8和公式9。

下面进行举例说明,具体地:如果有节点1,节点2,节点3,节点4,节点5,节点6,节点7,节点8,节点9,节点10这10个客户节点,那么解的形式就可能是0,1,2,3,0,4,5,6,0,7,8,9,0,10,0。这代表分4辆小车输送货物,第一辆小车路径0-1-2-3-0,第二辆小车路径0-4-5-6-0,第三辆小车路径0-7-8-9-0,第四辆小车路径0-10-0。判断是否满足载重,就是判断每辆小车是否超过其额定载重qe,如第一辆载重就是节点1货物需求量q1+节点2货物需求量q2+节点3的货物需求量q3,判断其是否超过小车的额定载重qe,小车的额定载重是固定的。

判断是否满足时间窗约束,以第一辆小车为例,在其走到节点1时,判断到达时间是否在节点1的服务时间窗的范围内。

步骤7:判断蚂蚁r是否回到节点0,若没有回到节点0,则将节点i加入到禁忌表tabu中,并转至步骤8;否则,直接转至步骤8;

具体地,判断蚂蚁r是否回到节点0,即为判断节点存储表tau中最后一个节点是否为节点0。

步骤8:判断r是否大于蚂蚁数r,若r>r,转到步骤9;否则,令r=r+1并转至步骤5;

具体地,r小于蚂蚁数r时,则表明存在蚂蚁为进行上述遍历。

步骤9:根据每个蚂蚁的节点存储表tau,计算每个蚂蚁所走的路径长度,并将r个蚂蚁的路径按距离排列在集合solution中,找出所有蚂蚁中行走距离最短的那只蚂蚁,将行走距离最短蚂蚁所行走的路径作为当前迭代过程中的最优解now_bestcost,若当前最优解now_bestcost小于全局最优解best_cost,将全局最优解best_cost更新为当前最优解now_bestcost;

具体地,经过上述步骤后,此时所有蚂蚁都已经周游所有客户节点。每只蚂蚁的节点存储表tau即为每只蚂蚁所行走的所有节点的集合,计算各蚂蚁所走路径的长度,就是依次计算节点存储表tau中的节点间的欧式距离并累加,然后按路径长短排列在集合solution中。找出所有蚂蚁中行走距离最短的那只蚂蚁,也就是约束公式1,将其行走的路径作为当前迭代过程中的最优解now_bestcost,如果当前最优解now_bestcost小于全局最优解best_cost,将全局最优解best_cost更新为当前迭代过程中的当前最优解now_bestcost。一般地,全局最优解best_cost在初始状态下为无穷大。

接下来是利用遗传算法优化蚁群算法所求的路径集,遗传算法主要分为选择、交叉和遗传三个操作,即分别为步骤10、步骤11和步骤12。

步骤10、将当前迭代过程中的最优解now_bestcost复制w个,作为遗传算法中的部分初始种群,通过轮盘赌的方法每次从步骤9中所得的所有剩下的蚂蚁路径中选择两个行走路径进行比较,将路径长度较短的路线保留到初始种群中,直至种群数达到r个,将数量为r的初始种群中的所有解中全部去除配送中心0,得到r条客户节点的排列,每条这样的排列被称作染色体,以得到遗传算法的父代染色体;

具体地,遗传算法中选择就是按照设定的原则或方法,即选择种群中优秀的个体作为父代来繁衍子代的过程。将当前迭代过程中的最优解now_bestcost复制w个,w可以为r/5,或是其他所需不大于r的数量,具体可以根据需要进行选择,作为遗传算法中的部分初始种群(这里的初始种群就是将要被应用于遗传算法的带时间窗的车辆路径问题的若干解);然后通过轮盘赌的方法每次从步骤9中所得的所有剩下的蚂蚁路径中选择两个个体进行比较,将路径长度较短的路线保留到初始种群中,直至种群数达到r个。将数量为r的初始种群中的所有解中全部去除配送中心0,得到r条客户节点的排列,每条这样的排列被称作染色体,初始染色体的集合称之为遗传算法的父代染色体。

具体实施时,初始种群中的每一个解都相当于某一个蚂蚁的行驶路径,如节点0,节点1,节点2,节点3,节点0,节点4,节点5,节点6,节点0,节点7,节点8,节点9,节点0,去掉上述解中的配送中心编号,只保留客户节点的编号,并且客户节点编号的序列保持不变即为可行解对应的染色体结构,则上述解转换而来的染色体结构为:123456789,这样就可以在保证同一限定条件下,编码能够保证所有染色体的长度都是一样的,方便后续的交叉变异操作。

步骤11、产生一个随机数rand1,0<rand1<1,当随机数rand1大于设定的交叉概率pc时,执行交叉步骤,否则,随机复制一个父代染色体作为子代染色体,重复执行上述操作,直至得到r个子代染色体;

具体地,所述交叉操作即是从步骤10所得的父代染色体中随机选择两个染色体,首先在这两个染色体中随机选择两个点i,j,其中0≤i≤j≤n,即染色体长度为n。然后将亲代(从父代染色体中选择的两个染色体就是亲代1和亲代2)p1从i到j的基因填入子代相同的位置(染色体中的一个值代表一个基因)。接着将亲代p2的基因不重复地依次填入子代中;交换两个亲代染色体就可得到另一个子代染色体,如图2所示。

步骤12、产生一个随机数rand2,0<rand2<1,当随机数rand2小于变异概率pm,执行变异操作,否则,随机复制一个父代染色体作为子代染色体,重复执行变异操作,直至再次得到r个子代染色体;

具体地,变异操作时,首先随机选择两个父代染色体,在这两个父代染色体中随机确定两个基因位,然后把这两个基因位之间的染色体基因进行反序排列,即得到子代个体的染色体结构。

本发明实施例中,在遗传算法中,通过增加变异算子来模拟自然界中基因突变这一环节,变异算子的作用虽然小于交叉算子,但也是遗传算法所必须的,它能够有效地增强遗传算法的局部搜索能力,避免算法优化得到的解陷入局部最优,发生过早收敛现象。遗传算法中常用的变异算子有反转变异、2-opt变异等多种形式。),本发明实施例中,选用的变异算子是反转变异方式。

步骤13、对r个子代染色体进行解码,并计算各子代个体染色体解码后的路径长度;

具体地,解码时按照步骤2中的约束条件,依次将同时符合车辆载重约束和客户点时间窗约束的客户分配给配送车辆。以下面的染色体结构为例:(节点5,节点10,节点6,节点9,节点3,节点8,节点7,节点2,节点4,节点1)结合步骤2型中的约束,对其进行染色体解码:首先将客户5分配给车辆1,更新车辆1的时间和载重,再将其后的节点10分配给车辆1,检验载重约束和时间窗约束,如果载重和时间窗约束中有一个及以上不满足,则形成子路径(0,5,0),即车辆1只为客户点5配送货物;若都符合要求,则将客户10也车辆1配送,再依次检验后面的客户,只要车辆超载或是不满足时间窗约束,则启动下一辆车,依次检验下去,直到染色体结构中所有的客户点都被分配完。上述子代染色体解码出来的可行解为:(0,5,10,6,0,9,3,8,0,7,2,4,1,0)即共需要三辆车完成配送,其路径分别为(0,5,10,6,0),(0,9,3,8,0)和(0,7,2,4,10)。

步骤14:更新集合solution中路径较长的解,更新节点存储表tau,更新当前最优解now_bestcost、全局最优解best_cost以及信息素集qr;

具体地,运行到此步骤时本次迭代过程中的蚁群算法和遗传算法都已运行完毕,比较蚁群算法中每只蚂蚁行走的路径长度和各子代个体染色体解码后的路径长度,用子代个体染色体解码后路径长度较短的解替代集合solution中蚂蚁行走的路径长度较长的解,同时替换相应的节点存储表tau。如果遗传算法所得的最短路径长度小于当前迭代过程中的最优解now_bestcost,更新算法运行过程中的最优解best_cost;按照下式更新各节点间的信息素强度,即为更新信息素集qr。

上述公式的含义是:更新后客户节点i与客户节点j之间的信息素强度=原有信息素挥发后所剩的信息素强度+每只蚂蚁在这段距离内新产生的信息素强度+每次派出的最强蚂蚁的总路程的信息素强度更新。其中

其中:τij(t+1)为更新后节点i和j之间的信息素强度;τij(t)为更新前节点i和节点j之间的信息素强度;delta为惩罚值,能够奖励超过全局最优解的蚂蚁;ρ为信息素挥发系数;δτij(t)为路径节点i到节点j上的信息素增加量,即所有蚂蚁在该段路径上释放的信息素之和,为蚂蚁r在客户节点i到客户节点j之间所释放的信息素;r为蚁群的数量;qm为信息素释放总量;lr为蚂蚁r所走过路径(从节点i到节点j)的总长度。具体实施时,信息素释放总量qm、蚂蚁r所走的总长度lr均可以计算得到,从而可以计算得到每一只蚂蚁的δτij(t)是所有蚂蚁的相加。

在经典蚁群算法中,信息素挥发系数是一个恒定不变的值,信息素挥发系数跟蚁群算法的全局搜索能力和算法的收敛速度有着紧密的联系;由于信息素挥发系数ρ的缘由,从来没有被搜寻的路径上的信息素会慢慢减为0,当信息素挥发系数ρ较大时,全局搜寻能力和随机搜索性能也会受到影响,容易陷入局部最优值;通过减小信息素挥发系数ρ能够增强算法的全局搜索能力和随机搜索性能,但同时会使得算法的收敛速度降低。

针对固定信息素挥发系数ρ值不变产生的问题,本发明信息素挥发系数ρ能够根据算法的进程自动地调整信息素挥发系数,意在通过自适应调整信息素挥发系数ρ来解决算法存在的全局性较差问题。由分析结果可知,ρ取值在0.3~0.8时效果比较好,设信息素挥发系数ρ在算法刚开始执行的时候初值为ρ=0.8,随着迭代的进行ρ按照下式调节:

其中,:ρmin为信息素挥发系数ρ的最小值,x,y为系数。一般地,ρmin=0.2;y可取25,x可取=1。

步骤15、清空每只蚂蚁的禁忌表tabu和节点存储表tau,清空集合solution,清空now_bestcost以及清空allow集合;

具体地,清空每只蚂蚁的禁忌表tabu和节点存储表tau,清空集合solution,清空now_bestcost以及清空allow集合,从而能便于进行后续的迭代步骤。

步骤16、判断迭代参数nf是否超过设置的最大迭代次数nfmax,若迭代参数nf大于最大迭代次数ncmax,则输出最优路径和最优路径长度;否则,nf=nf+1,跳到步骤4。

具体地,由上述可知,利用nf与最大迭代次数nfmax的关系,能对整个方法的过程进行控制。在迭代参数nf大于最大迭代次数ncmax,则整个方法结束,并输出最优路径和最优路径长度,所述最优路径即为步骤14中的全局最优解best_cost以及对应的路径长度。

综上,本发明在蚁群算法中引入车辆容量因素和时间窗因素改进蚂蚁状态转移概率,并且改进信息素挥发因子,使其能够随着计算进程自动调整,同时改进信息素更新策略,奖励超过全局最优解的精英蚂蚁。最后使用遗传算法中的选择、交叉、变异算子对蚁群算法得到的较优解进行局部优化,达到加快算法收敛速度,提高解的质量,能够明显解决传统优化算法进行路径规划时收敛速度慢、易陷入局部最优等缺点,能提高对实际问题的求解效率,减少迭代过程的盲目性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1