掌桥专利:专业的专利平台
掌桥专利
首页

基于改进蚁群算法的最短路径规划方法

文献发布时间:2023-06-19 13:26:15


基于改进蚁群算法的最短路径规划方法

技术领域

本发明涉及路径规划技术领域,具体涉及一种基于改进蚁群算法的最短路 径规划方法。

背景技术

旅行商问题(TSP)是数学领域中一类著名的组合优化问题。它可以表述为: 假设有N个城市,首先给定N中任意两个城市之间的距离。此时一个旅行商 人需要依次穿过这N个城市,商人所走形成一条经过各城市的回环路径,此 路径需满足N个城市中每个城市只能拜访一次,而且在访问后需要回到原来 出发的城市,求商人经过的最短路径。TSP是一个典型的组合优化问题,且是 一个NP完全难题。其描述用图论的意义来看,更像是一个哈密顿环问题。

TSP问题的实质可以抽象为:在一个带权重的完全无向图中,找到一个权 值总和最小的哈密顿回路。TSP问题翻译为数学语言为:在N个城市的完全 无向图G(N,A)中,N={1,2,...,n},A={(i.j)|i,j∈N},其中每个城市之间的距离矩阵 为(dij)n*n,城市之间的距离

TSP问题描述起来十分简单,但解决起来却非常地困难。我们可以很容易 想到类似穷举法的思路来解决TSP问题:假设城市N=21,从随机N0城市出 发,最后回到城市N0。显然,从N0出来后,可以随机选择前往剩余的20个 城市中的一个,在此便已经产生了20种选择,同理,再前往下一个城市会有 19种选择......直到遍历21个城市结束,可选路线数就是:20![14,15]。当然这 只是当N=21的情况,如果N=100(需要迭代9.3326215443944*10^157),那 将超出我们现有计算机的计算能力!而TSP要解决的实际应用问题,一般城 市规模都会在几十上百甚至更多的城市。

如果转换为计算机预言,当城市数N=n+1,那的可选路线数就是n!,那 时间复杂度就是O(n!),同理可得,此算法的时间复杂度是非多项式的,所以 遍历N个城市所需成本是相当大的。有关解决TSP问题,其关键不在于寻找 任意两城市间的最短路径,而在于整体最短的那一条路径最短,也就是说寻找 整个n1n2n3...nini+1...nnn1的遍历方式。

蚁群算法最早来源于自然界中蚂蚁觅食的生物学模拟,主要用来求解最短 路径问题。科学家们在观察蚂蚁觅食行为时发现,虽然自然界中的蚂蚁没有优 秀的视觉系统,然而它们总是可以找到蚁穴到食物源(或食物源到蚁穴)的最 短路径,并能在原环境改变或有障碍物时,仍自适应地搜索出新的最短路径。 根据这一发现,意大利学者M.Dorigo等人在20世纪90年代提出了蚁群算法。

单个蚂蚁行为简单且智能很低,可他们是怎么找到最短路径的呢?经过深 入观察分析,研究者认为,蚂蚁种群能在蚁穴到食物源的路径上会通过互相合 作寻找最短路径,是源于一种特殊的分泌物—信息素。蚂蚁携带并在随机行动 的路径上释放信息素,当其它蚂蚁经过时,就可以通过留下的信息素的残留浓 度高低来决定前进的方向。路径上信息素残留的浓度越高,就越会吸引后来的 蚂蚁经过,以此来形成一种正反馈的过程。另外,信息素会随时间挥发消失, 而在一定时间内,路径上信息素浓度最大的路径便是食物到蚁穴的最短路径。 经典的蚁群算法就是根据蚂蚁种群的觅食寻优原理衍生出来的。

根据信息素更新策略的不同,蚁群算法分为以下三种算法模型:蚁周模型、 蚁量模型和蚁密模型,三种模型的区别是:蚁周模型中,只有在n个城市全部 遍历结束后才会更新每条路上的信息素,其采用的是蚁群的整体信息;而蚁量 模型和蚁密模型是在蚂蚁每访问一个城市,就持续更新其路径上的信息素信 息,它们采用的是蚂蚁的局部信息。由上诉分析易知,在TSP问题的求解中, 蚁周模型的整体信息素更新方式具有更好的性能,因此求解TSP问题一般使 用蚁周模型。

但是,传统蚁群算法存在收敛速度慢、容易造成算法早熟陷入局部最优且 难以脱离局部最优解的缺点,因此,需要一种基于改进蚁群算法的最短路径规 划方法,以克服上述问题的发生。

发明内容

有鉴于此,本发明提供一种基于改进蚁群算法的最短路径规划方法,保证 最优TSP路径在被更优的TSP路径超越之前不会被遗忘,增大了更优TSP路 径发现者的话语权,使算法更有效;对传统的蚁群算法的信息素记录规则和蚂 蚁们的α,β参数进行了优化,降低了迭代停滞发生的概率,有效减小了算法陷 入早熟的概率,有效提高了算法的求解能力。

为解决上述技术问题,本发明提供一种基于改进蚁群算法的最短路径规划 方法,基于MATLAB软件,运用改进的蚁群算法求解具体的TSP问题实现方 式如下:

一、数据初始化;

二、主循环部分;

三、算法的输出。

进一步的,所述数据初始化包括以下步骤:

a、建立随机直角坐标系,导入n个城市的坐标值;

b、计算任意两个城市之间的距离,得到距离矩阵D,从而得到启发信息 初始矩阵Heu_F=1./D;

c、初始化种群参数,设距离启发参数β∈[0,5]非均匀(向5聚集),信息 素启发参数α∈[0,3]对给定的β为均匀分布,信息素挥发因子vol=0.1。设定循 环所用蚂蚁次数为N_ants,N_ants的选取由问题规模n而定,一般取m∈ [0.3n,0.7n];最大迭代次数为N_iter;

d、计算信息素初始值,通过计算各个城市a和b之间的距离Dab,比较 到两城市之间的最短距离Dmin,其中Dmin=min{Dab},则信息素初始值为 Q0=1/(n*Dmin),从而信息素初始矩阵P=Q0*ones(n,n);

e、准备内存表,分别用Tau=zeros(n,n)、Route_best=zeros(n,1)、 Length_best=zeros(N_iter,1)和Length_avg=zeros(N_iter,1)来表示信息素基质、 最佳TSP轨迹、最佳TSP长度和平均TSP长度。

进一步的,所述主循环部分包括以下步骤:

步骤A、N_ants=30只蚂蚁初始位置的确定及禁忌表的更新,优化蚂蚁们 的α,β的参数分布;

步骤B、路径搜索。

进一步的,所述步骤A包括以下内容:

beta=5*rand(N_ants,1).^0.6;

alpha=3-rand(N_ants,1).*min(3,2+beta/3);

开始前,按公式RL=round(rand(M,1)*n+0.5),将m只蚂蚁随机地放在n 个城市上,利用has_visited=Table(i,1:(j-1))记录已访问城市,避免重复访问。

进一步的,所述步骤B包括以下步骤:

f、循环次数Nc=Nc+1;

g、起始的m只蚂蚁分别按照轮盘赌的规则移动到下一个城市,之后更新 禁忌表;

h、获得信息素矩阵tau,并给其加入一个本底值0.01;

i、生成TSP轨迹;

j、分别计算m只蚂蚁走出的m条路径的长度,比较并保存最短路径L的 长度及其遍历顺序;

k、果本轮迭代的第一名表现劣于目前发现的最优TSP路径时,最优TSP 路径的蚂蚁排第一,其它蚂蚁名次顺延;

l、给已知信息素tau赋予排名因子,全局更新信息素矩阵;

m、判断Nc与Ncmax之间的关系,如果Ncmax>Nc,则循环结束,否则, 清空禁忌表并返回到步骤f,算法继续循环执行。

进一步的,所述算法的输出包括以下内容:

输出程序结束时当前最短距离与全局最优路线图;

输出全局最优解随迭代次数变化的示意图。

本发明的上述技术方案至少包括以下有益效果:

1、为避免最优TSP路径被遗忘,在本轮迭代的第一名表现劣于目前发现 的最优TSP路径时,最优TSP路径的那只蚂蚁排第一,其它蚂蚁名次顺延, 按上述规则留下信息素,这样保证了最优TSP路径在被更优的TSP路径超越 之前是不会被遗忘的;

2、引入排名因子除了能择优推广成功经验以外,还有一个好处:增大了 更优TSP路径发现者的话语权;

3、对传统的蚁群算法的信息素记录规则和蚂蚁们的α,β参数进行了优化, 降低了迭代停滞发生的概率,有效减小了算法陷入早熟的概率,有效地提高了 算法的求解能力。

附图说明

图1为本发明的步骤流程图;

图2为从通用TSPLIB库中选取ch130实例的现有蚁群算法的运行结果图;

图3为从通用TSPLIB库中选取ch130实例的改进蚁群算法的运行结果图;

图4为从通用TSPLIB库中选取ch150实例的现有蚁群算法的运行结果图;

图5为从通用TSPLIB库中选取ch150实例的改进蚁群算法的运行结果图;

图6为从通用TSPLIB库中选取eil51实例的现有蚁群算法的运行结果图;

图7为从通用TSPLIB库中选取eil51实例的改进蚁群算法的运行结果图;

图8为从通用TSPLIB库中选取eil76实例的现有蚁群算法的运行结果图;

图9为从通用TSPLIB库中选取eil76实例的改进蚁群算法的运行结果图;

图10为从通用TSPLIB库中选取lin104实例的现有蚁群算法的运行结果 图;

图11为从通用TSPLIB库中选取lin104实例的改进蚁群算法的运行结果 图;

图12为从通用TSPLIB库中选取KaoA2000实例的现有蚁群算法的运行 结果图;

图13为从通用TSPLIB库中选取KaoA2000实例的改进蚁群算法的运行 结果图;

图14为从通用TSPLIB库中选取pr136实例的现有蚁群算法的运行结果 图;

图15为从通用TSPLIB库中选取pr136实例的改进蚁群算法的运行结果 图;

图16为从通用TSPLIB库中选取pr152实例的现有蚁群算法的运行结果 图;

图17为从通用TSPLIB库中选取pr152实例的改进蚁群算法的运行结果 图;

图18为从通用TSPLIB库中选取rat194实例的现有蚁群算法的运行结果 图;

图19为从通用TSPLIB库中选取rat194实例的改进蚁群算法的运行结果 图;

图20为从通用TSPLIB库中选取st70实例的现有蚁群算法的运行结果图;

图21为从通用TSPLIB库中选取st70实例的改进蚁群算法的运行结果图。

具体实施方式

一种基于改进蚁群算法的最短路径规划方法,基于MATLAB软件,运用 改进的蚁群算法求解具体的TSP问题实现方式如下:

一、数据初始化;

二、主循环部分;

三、算法的输出。

所述数据初始化包括以下步骤:

a、建立随机直角坐标系,导入n个城市的坐标值;

b、计算任意两个城市之间的距离,得到距离矩阵D,从而得到启发信息 初始矩阵Heu_F=1./D;

c、初始化种群参数,设距离启发参数β∈[0,5]非均匀(向5聚集),信息 素启发参数α∈[0,3]对给定的β为均匀分布,信息素挥发因子vol=0.1。设定循 环所用蚂蚁次数为N_ants,N_ants的选取由问题规模n而定,一般取m∈ [0.3n,0.7n];最大迭代次数为N_iter;

d、计算信息素初始值,通过计算各个城市a和b之间的距离Dab,比较 到两城市之间的最短距离Dmin,其中Dmin=min{Dab},则信息素初始值为 Q0=1/(n*Dmin),从而信息素初始矩阵P=Q0*ones(n,n);

e、准备内存表,分别用Tau=zeros(n,n)、Route_best=zeros(n,1)、 Length_best=zeros(N_iter,1)和Length_avg=zeros(N_iter,1)来表示信息素基质、 最佳TSP轨迹、最佳TSP长度和平均TSP长度。

所述主循环部分包括以下步骤:

步骤A、N_ants=30只蚂蚁初始位置的确定及禁忌表的更新,优化蚂蚁们 的α,β的参数分布

beta=5*rand(N_ants,1).^0.6;

alpha=3-rand(N_ants,1).*min(3,2+beta/3);

开始前,按公式RL=round(rand(M,1)*n+0.5),将m只蚂蚁随机地放在n 个城市上,利用has_visited=Table(i,1:(j-1))记录已访问城市,避免重复访问;

步骤B、路径搜索

f、循环次数Nc=Nc+1;

g、起始的m只蚂蚁分别按照轮盘赌的规则移动到下一个城市,之后更新 禁忌表;

h、获得信息素矩阵tau,并给其加入一个本底值0.01;

i、生成TSP轨迹;

j、分别计算m值蚂蚁走出的m条路径的长度,比较并保存最短路径L的 长度及其遍历顺序;

k、如果本轮迭代的第一名表现劣于目前发现的最优TSP路径时,最优 TSP路径的那只蚂蚁排第一,其它蚂蚁名次顺延;

l、给已知信息素tau赋予排名因子,全局更新信息素矩阵;

m、判断Nc与Ncmax之间的关系,如果Ncmax>Nc,则循环结束,否则, 清空禁忌表并返回到步骤f,算法继续循环执行。

所述算法的输出包括以下内容:

输出程序结束时当前最短距离与全局最优路线图;

输出全局最优解随迭代次数变化的示意图。

从通用TSPLIB库中选取ch130、eil51和KroA200等10个实例来证明改 进蚁群算法的有效性。

同时,采用MATLAB编程进行仿真实验。

基本参数设置为:α=1,β=3,vol=0.5,p=0.1,N_ants=30,N_iter=1000。

对于每个实例,程序均运行10次,取10次结果的最优解。

图2-图21分别是传统蚁群算法(现有蚁群算法)和改进蚁群算法的运行 结果图。

对以上ch130、eil51、eil76等十个TSPLIB实例,改进蚁群算法最优解与 传统蚁群算法最优解的仿真实验对比结果如表1。

表1

由表1实验结果的对比可知,对于每个TSP实例,本发明提出的改进蚁 群算法都较传统蚁群算法的结果好很多,改进蚁群算法所求得的最优解有了很 大的提高,而且利用改进蚁群算法所得到的最优解都几乎接近于己知最优解, 证明它有效且优于传统蚁群算法。

以上是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改 进和润饰也应视为本发明的保护范围。

相关技术
  • 基于改进蚁群算法的最短路径规划方法
  • 一种基于改进蚁群算法的叉车路径规划方法及系统
技术分类

06120113677551