首页 > 行业资讯 > 【无人机三维路径规划】基于帝国企鹅算法实现无人机三维路径规划附matlab代码

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

时间:2023-03-07 来源: 浏览:

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

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于合集 #无人机matlab源码 65个

1 简介

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

 

 

 

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 仿真结果

4 参考文献

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

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

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

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐