【路径规划】基于粒子优化蚁算法求解二维最短路径

路径规划】基于粒⼦优化蚁算法求解⼆维最短路径
1 简介
耐高温盘根
路径规划技术是⽬前众多应⽤技术领域的研究热点,具有重要的科研价值和⼴阔的应⽤前景。路径规划技术的核⼼内容就是规划算法。⽬前求解路径规划问题的⽅法主要有A*算法、粒⼦算法、遗传算法、蚁算法等智能算法。粒⼦和蚁算法分别是模拟鸟和蚁觅⾷⾏为的仿⽣算法。将两种算法⽤于路径规划领域,是近年来国内外学者研究的热点并取得了显著的成果。证明了其良好的应⽤性能。粒⼦优化算法是⼀种新的随机搜索算法,具有很强的全局搜索能⼒,快速简洁但是易陷⼊局部最优;⽽蚁算法具有并⾏性、正反馈性、求解精度⾼、收敛速度慢等特点。针对上述问题,具体改进策略如下:(1)针对复杂环境下移动机器⼈全局路径规划问题,提出了⼀种的增强蚁优化算法。该算法通过改进信息素初始化和状态转移概率,避免了路径死锁;采⽤确定性与随机性相结合的路径点搜索策略改善了迂回曲折现象;利⽤路径平滑操作,增强了路径的连续性;引⼊局部信息素扩散机制,提⾼了算法的全局优化能⼒。仿真结果表明:当环境中障碍物分布密集或存在⼤量的凹形区域时,新算法能有效地规划出较为理想的安全路径,规划时间可满⾜实际应⽤要求。(2)根据粒⼦算法快速、简洁的优点得到蚁算法初始信息素分布,然后利⽤蚁算法所具有的优点,如正反馈性、并⾏性、求解精度⾼等,规划出全局最优路径。利⽤matlab实验仿真平台,利⽤该仿真平台对粒⼦蚁融合算法进⾏仿真测试,并对其进⾏性能分析。仿真实验分析表明,粒⼦蚁融合算法在时间性能⽅⾯优于增强蚁算法,在解的质
量上优于粒⼦算法,表明了改进策略的有效性和实⽤性。
1.1 粒⼦算法
粒⼦优化算法(Particle Swarm Optimization,PSO)是⼀种模拟⾃然界中⽣物觅 ⾷⾏为相互合作机制从⽽到问题最优解的体智算法。该算法具有原理简单、易实现、 控制参数较少等优点,从⽽在不同领域都得到了⼴泛应⽤。PSO 算法通过体中各粒 ⼦间的相互合作及竞争,实现对区域内最优解的寻,其基本思想是在解空间中随机选 择⼀粒⼦并将它们随机分布⾄解空间,每个粒⼦的运动速度和⽅向决定粒⼦的下⼀位 置,粒⼦本⾝⽬前到的历史最优解和整个体到的历史最优解影响着每个粒⼦下⼀ 次的运动速度和⽅向,每个粒⼦都看作是⽬标函数的⼀个可⾏解,将粒⼦的位置值带⼊ 适应度函数计算并评价解的好坏,最终得到全局最优解。
1.2 蚁算法
蚁算法(Ant Colony Optimization, ACO)是⼀种模拟蚂蚁种搜索⾷物的⾏为⽽提 出的智能体算法[37]。蚂蚁在缺失视觉功能的情况下,可以从蚁⽳出发并到与⾷物源 之间的最短路径,即使在路程中突然遇到障碍物,也能重新规划并到最优路径。仿⽣ 学家经过⼤量细致的观察研究发现,信息素(Pheromone)是蚂蚁个体之间进⾏信息交 换的媒介,蚂蚁通过信息素与体中的其他个体进⾏信息交流,最终形成⼀种体智能 ⾏为。并⾮所有蚂蚁都依据信息素选取路径搜索⾷物,也有部分蚂蚁会选
择其他道路,于此同时分泌信息素。信息素浓度表明了路径的远近,浓度越⼤,说明距离越近。随着 时间的推移,信息素浓度慢慢降低并逐渐挥发消失。蚂蚁会选择信息素浓度更⾼,也就 是更短的路径。经过⼀段时间,⼤多数蚂蚁都会选择最短的路径进⾏⾷物源搜索。
2 部分代码
clc
clear
close all
E=0.000001;
maxnum=30;%最⼤迭代次数
narvs=3;%⽬标函数的⾃变量个数particlesize=20;%粒⼦规模
c1=1.2;%每个粒⼦的个体学习因⼦,加速度常数c2=1.6;%每个粒⼦的社会学习因⼦,加速度常数w=0.8;%惯性因⼦
vmax1=0.5;%粒⼦的最⼤飞翔速度
vamx2=-0.5;
v=rand(particlesize,narvs);%粒⼦飞翔速度
x=zeros(particlesize,3);
x(:,1)=1+rand(1);
x(:,2)=7+rand(1);%粒⼦所在位置
x(:,3)=0.2+0.1*rand(1);
%定义适应度函数
% ROUT=zeros(particlesize,100);
for i=1:particlesize远距离遥控器
[TT(i),ROUT{i},f(i)]=ACO(x(i,1),x(i,2),x(i,3)); end
personalbest_x=x;
personalbest_faval=f;
% personalbest_faval=TT;
[globalbest_faval(1),i]=min(personalbest_faval);
globalbest_x=personalbest_x(i,:);
globalbest_route=ROUT{i};
ff(1)=globalbest_faval(1);
k=2;
while (k<=maxnum)
tic
for i=1:particlesize
[TT(i),ROUT{i},f(i)]=ACO(x(i,1),x(i,2),x(i,3));
if f(i)<personalbest_faval(i)
personalbest_faval(i)=f(i);
%            personalbest_faval(i)=TT(i);
personalbest_x(i,:)=x(i,:);
end
end
if min(personalbest_faval) < globalbest_faval(k-1)
[globalbest_faval(k),i]=min(personalbest_faval);
globalbest_x(k,:)=personalbest_x(i,:);
globalbest_route=ROUT{i};
else
globalbest_faval(k)=globalbest_faval(k-1);
globalbest_x(k,:)=personalbest_x(i,:);
%        globalbest_route=ROUT{i};跆拳道护具
end
for i=1:particlesize
v(i,:)=w*v(i,:)+c1*rand*(personalbest_x(i,:)-x(i,:))...
+c2*rand*(globalbest_x(k,:)-x(i,:));
for j=1:narvs
if v(i,j)>vmax1
v(i,j)=vmax1;
elseif v(i,j)<-vmax1
v(i,j)=-vmax1;
end
end
x(i,:)=x(i,:)+v(i,:);
end
ff(k)=globalbest_faval(k);
if globalbest_faval(k)<E
break
end
k=k+1
end
route=globalbest_route;
[minkl,p]=min(globalbest_faval);
xbest=globalbest_x(p,:);
LENROUT=length(route);钢架桥
disp(['Alpha 表征信息素重要程度的参数=',num2str(xbest(1))]); disp(['Beta 表征启发式因⼦重要程度的参数=',num2str(xbest(2))]); disp(['Rho 信息素蒸发系数=',num2str(xbest(3))]);
disp(sprintf('Shortroad is: %s',num2str(route)));
disp(sprintf('Mininum is: %d',minkl));
figure(2)
% set(gcf,'color','white');
plot(1:length(ff),ff)
title('粒⼦蚁算法收敛曲线变化趋势')
xlabel('迭代次数');
ylabel('适应度值');
first_address = [
100,10
150,10
170,30
180,20
200,10
家用电器销售200,100
200,150
190,180
180,200
160,200
170,180
140,180
135,200
130,180
100,200
125,100
200,300
10,300
10,200
10,180
10,100
10,10
50,30
100,10
];%first_address表⽰测试数据中的节点坐标
SumOfCity = size(first_address,1);%节点个数,实际返回⾏数,即为节点个数
length_address =0.*ones(SumOfCity,SumOfCity);%length_address表⽰两两节点间的距离,初始设定10000,可以设定⽆穷⼤,表⽰不相连%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%
length_address(1,2)=194.0;%表⽰节点1和节点2的COST值
length_address(2,3)=64.9;%
length_address(3,4)=20.0;%
length_address(4,5)=18.6;
length_address(2,5)=72.4;
length_address(5,6)=123.4;
length_address(6,7)=35.5;
length_address(7,8)=32.4;
length_address(8,9)=45.0;
length_address(9,10)=51.4;
length_address(10,13)=271.2;
length_address(13,15)=100.0;
length_address(15,19)=189.5;
length_address(8,11)=293.9;
length_address(11,12)=100.0;
length_address(12,14)=4.1;
length_address(14,20)=192.9;
length_address(14,15)=86.8;
length_address(10,12)=87.0;
length_address(6,16)=600.0;
length_address(16,21)=279.3;
length_address(7,17)=92.0;
length_address(17,18)=464.9;
length_address(18,19)=46.0;
length_address(19,20)=44.6;
length_address(20,21)=67.5;
length_address(21,22)=230.3;
length_address(22,23)=102.9;
length_address(23,24)=126.9;
length_address(22,24)=262.5;
for  n=1:size(first_address)
for m=1:size(first_address)
if length_address(n,m)~=0
length_address(m,n)=length_address(n,m);  %对称矩阵
end
end
end
MM=size(length_address,1);
% 画出节点分布图形
figure;
grid on;
hold on;
% title (strcat('井下机车最短运输路径',date))
%title( sprintf('井下机车最短运输路径 Event occured at %s',datestr (date ,15)));
for i=1:MM-1
plot(first_address(i,1),first_address(i,2),'co','MarkerSize',20);
str=num2str(i);
text(first_address(i,1)-5,first_address(i,2)+5,str,'Color','red','FontSize',12);
end
% m=length(route);
for i=1:LENROUT
plot(first_address(route(i),1),first_address(route(i),2),'MarkerSize',20,'MarkerEdgeColor','g','MarkerFaceColor',[0.2,0.5,0.5]) ;
hold on;
end
for i=1:MM
for j=1:MM
if(length_address(i,j)~=0)
line([first_address(i,1),first_address(j,1)],[first_address(i,2),first_address(j,2)],'Color','b','LineWidth',3);%划线
text((first_address(i,1)+first_address(j,1))/2,(first_address(i,2)+first_address(j,2))/2,num2str(length_address(i,j)));%标注线段距离
end
end
end
%% 最短路径
for p=1:LENROUT-1
if(route(p+1)~=24)
line([first_address(route(p),1),first_address(route(p+1),1)],[first_address(route(p),2),first_address(route(p+1),2)],'Color','r','LineWidth',3);%划线      text((first_address(route(p),1)+first_address(route(p+1),1))/2,
(first_address(route(p),2)+first_address(route(p+1),2))/2,num2str(length_address(route(p),route(p+1))));%标注线段距离
else
line([first_address(route(p),1),first_address(1,1)],[first_address(route(p),2),first_address(1,2)],'Color','r','LineWidth',3);%划线
text((first_address(route(p),1)+first_address(1,1))/2,
(first_address(route(p),2)+first_address(1,2))/2,num2str(length_address(route(p),route(p+1))));%标注线段距离
end
end
axis([0 250 0 400])
% 图形显⽰最优及平均函数值变化趋势玻璃门夹
% figure(2);
% plot( minPL);
% title('迭代优化过程');
% xlabel('迭代次数');
% ylabel('Cost');
% hold on;
3 仿真结果

本文发布于:2024-09-22 22:37:03,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/310979.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   路径   信息   规划   蚂蚁   具有
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议