当前位置 : 主页 > 编程语言 > python >

【无人机三维路径规划】基于帝国企鹅算法实现无人机三维路径规划附matlab代码

来源:互联网 收集:自由互联 发布时间:2022-06-15
1 简介 随着小型无人机技术的发展,无人机的应用范围已经从军事逐步向商用和民用扩展。在民用领域,无人机一般作为辅助工具处理城市问题,建筑物是阻碍无人机飞行的主要因素。所以

1 简介

随着小型无人机技术的发展,无人机的应用范围已经从军事逐步向商用和民用扩展。在民用领域,无人机一般作为辅助工具处理城市问题,建筑物是阻碍无人机飞行的主要因素。所以需要在一定约束条件下,找出无人机飞行的最优路径。传统的路径规划问题大多针对二维环境进行研究,并且已经相对成熟,而最近三维路径规划成为新的研究重点。当环境由二维拓展到三维后,会带来很多问题,三维环境拥有更广的搜索空间和危险性。蚁群算法具有优秀的搜索能力,对多优化问题有良好的性能,是智能算法应用于路径规划的热门方向。本文根据无人机路径规划的现状,提出了一种基于帝国企鹅算法的三维路径规划方法。

【无人机三维路径规划】基于帝国企鹅算法实现无人机三维路径规划附matlab代码_蚁群算法

 【无人机三维路径规划】基于帝国企鹅算法实现无人机三维路径规划附matlab代码_蚁群算法_02

 【无人机三维路径规划】基于帝国企鹅算法实现无人机三维路径规划附matlab代码_路径规划_03

 【无人机三维路径规划】基于帝国企鹅算法实现无人机三维路径规划附matlab代码_蚁群算法_04

​2 部分代码

if minY<y_c
y_c=tempY(no);
x_c=tempX(no,:);
end
if rand>(no-dim*2)/(numAgent-dim*2)*(maxIteration-iter)/maxIteration
gap=max(gapMin,gap-dec); %EQ.2-15
end
else
R1=rand(numAgent,dim);
R2=rand(numAgent,dim);
R3=rand(numAgent,dim);
Rn=rand(numAgent,dim);
indexR1=ceil(rand(numAgent,dim)*numAgent);
indexR2=ceil(rand(numAgent,dim)*numAgent);
std0=exp(-20*iter/maxIteration)*(v_ub-v_lb)/2;
std1=std(x_m);
% In order to use matrix operations, all individuals of the population are updated.
% Although more individuals were updated, the running time of the algorithm dropped tremendously.
% This is because MATLAB is extremely good at matrix operations.
% If you want to rewrite this code in another language, we suggest you refer to AFO1.
% AFO2 is optimized for MATLAB and may not be suitable for your language.
for j=1:dim
x_m1(:,j)=x_m(indexR1(:,j),j);
x_m2(:,j)=x_m(indexR2(:,j),j);
y_m1(:,j)=y_m(indexR1(:,j));
y_m2(:,j)=y_m(indexR2(:,j));
AI(:,j)=R1(:,j).*sign(y_m1(:,j)-y_m2(:,j)).*(x_m1(:,j)-x_m2(:,j));
if std1(j)<=std0(j)
position=find(AI(:,j)==0);
AI(position,j)=Rn(position,j)*(v_ub(j)-v_lb(j))/2;
position=find(AI(:,j)~=0);
AI(position,j)=R2(:,j).*sign(y_m1(:,j)-y_m2(:,j)).*sign(x_m1(:,j)-x_m2(:,j))*(v_ub(j)-v_lb(j))/2;
end
end
for i=1:numAgent
p =tanh(abs(y(i)-y_c)); %EQ.2-30
if rand<p*(maxIteration-iter)/maxIteration
% EQ 2-28
At(i,:)=w2*At(i,:)+w4*R1(i,:).*(x_c-x(i,:))+w5*R2(i,:).*(x_m(i,:)-x(i,:));
x(i,:)=x(i,:)+At(i,:); %EQ 2-29
x(i,x(i,:)<lb)=lb(x(i,:)<lb);
x(i,x(i,:)>ub)=ub(x(i,:)>ub);
tempY(i,:)=y(i);
y(i)=fobj(x(i,:));
if tempY(i,:)<y(i)
for j=1:dim
r1=indexR1(i,j);
r2=indexR2(i,j);
v(i,j)=R3(i,j).*(x_m(r1,j)-x_m(r2,j))*-sign(y_m(r1)-y_m(r2));
if std1(j)<=std0(j)
if v(i,j)==0
v(i,j)=randn*(v_ub(j)-v_lb(j))/2;
else
v(i,j)=rand.*sign(x_m(r1,j)-x_m(r2,j))*-sign(y_m(r1)-y_m(r2))*(v_ub(j)-v_lb(j))/2;
end
end
end
end
else
x(i,:)=x_c+AI(i,:);
At(i,:)=AI(i,:);
x(i,x(i,:)<lb)=lb(x(i,:)<lb);
x(i,x(i,:)>ub)=ub(x(i,:)>ub);
y(i)=fobj(x(i,:));
end
if y(i)<y_m(i)
y_m(i)=y(i);
x_m(i,:)=x(i,:);
if y_m(i)<y_c
y_c=y_m(i);
x_c=x_m(i,:);
At_c=At(i,:);
end
end
end
end
% EQ.2-31
if abs(y_c-recording.bestFit(iter))/abs(recording.bestFit(iter))<=pe
count=count+1;
else
count=0;
end
%% ¸üмǼ
recording.bestFit(1+iter)=y_c;
recording.meanFit(1+iter)=mean(y_m);
% recording.std(1+iter)=mean(std(x_m));
% recording.DC(1+iter)=norm(x_m-repmat(x_c,numAgent,1));
% recording.x1(1+iter,:)=x(1,:);
iter=iter+1;
%%
if count>L
for i=1:numAgent
x(i,:)=(ub-lb)*rand+lb;
y(i)=fobj(x(i,:));
if y(i)<y_m(i)
y_m(i)=y(i);
x_m(i,:)=x(i,:);
if y_m(i)<y_c
y_c=y_m(i);
x_c=x_m(i,:);
At_c=At(i,:);
end
end
end
count=0;
recording.bestFit(1+iter)=y_c;
recording.meanFit(1+iter)=mean(y_m);
iter=iter+1;
end
end
bestY=y_c;
bestX=x_c;
end
%%

3 仿真结果

【无人机三维路径规划】基于帝国企鹅算法实现无人机三维路径规划附matlab代码_蚁群算法_05

【无人机三维路径规划】基于帝国企鹅算法实现无人机三维路径规划附matlab代码_无人机_06

【无人机三维路径规划】基于帝国企鹅算法实现无人机三维路径规划附matlab代码_无人机_07

【无人机三维路径规划】基于帝国企鹅算法实现无人机三维路径规划附matlab代码_无人机_08

4 参考文献

[1]于涛. 基于改进蚁群算法的三维无人机路径规划的研究与实现[D]. 重庆大学.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【无人机三维路径规划】基于帝国企鹅算法实现无人机三维路径规划附matlab代码_蚁群算法_09


【本文由:阿里云代理 http://www.56aliyun.com欢迎留下您的宝贵建议】
网友评论