zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【无人机】基于蚂蚁优化算法的无人机任务调度路径规划研究(Matlab代码实现)

MATLAB规划算法代码 实现 基于 优化 研究
2023-09-14 09:05:24 时间

 👨‍🎓个人主页:研学社的博客  

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

目前 航迹规划算法主要分为 2 传统经典算法和现代智能算法. 前者主要包括动态规划法、最速下降法和最优控制法;后者主要包括A*算法、标准蚂蚁算法和 PSO算法等.通过对规划空间进行立方体网格划分,将空间划分为大小相等、 彼此相邻的立方体 搜寻方式为从起始点开始, 搜寻下一个相邻节点 搜索前进, 直至搜寻到目标节点 最终形成连接起始节点和目标节点的航迹, 采用建立在网格图上的代价模型及优化算法求解最优航迹.

📚2 运行结果

 

 

 部分代码:

while (j<=30)
        for i=1:4
            if i==1 %UAV1只负责“侦察”任务
                if table(1,(j-1))~=25
                    table1=table(1,:);
                    table1=[table1;table(3:4,:)];
                    tabu1=table1(:); %UAV1的禁忌表出来了 %25如果也在tabu1里的话,那么
            allow_index1=~ismember(city_index,tabu1);  %【走过的变成0,能走的为1】【若tabu=(1 4)则allow_index=(0 1 1 0 1 1 1...)】【注意:allow_index与city_index同维】
            allow1=city_index(allow_index1);  %把还能走的序号摘出来了(待访问的城市集合)
            P1=allow1;
            %计算城市的转移概率
            if numel(allow1)~=0
              for k=1:max(size(allow1))-1
               P1(k)=(tau(table(1,(j-1)),allow1(k))^alpha)*(eta(table(1,(j-1)),allow1(k))^beta)*10000+7.1192e-004;
              end
            P1(max(size(allow1)))=7.1192e-005;
            P1=P1/sum(P1);
            [d1,ind1]=sort(P1,2,'descend');%从大到小排序是d1,对应的原序号是ind1
            target1=allow1(ind1(1));
            %轮盘赌法选择下一个城市
            %pc1=cumsum(P1);  % (p1 p1+p2 p1+p2+p3 p1+p2+p3+p4 ....)【p1<->allow(1)  p2<->allow(2) ...】
            %target_index1=find(pc1>=rand); 
            %target1=allow1(target_index1(1));  %这次返回的是allow数组中城市的真正序号
            table(1,j)=target1;  %把选好这个点放到路径表里面
            rr=D(25,table(1,1));
            time(table(1,1))=rr;
            if j>2
            for c=2:(j-1)
                rr=rr+D(table(1,c-1),table(1,c));
            end 
            end
            rrr=rr+D(table(1,j-1),target1);%rrr就是UAV1到该点时走过的航程
            time(target1)=rrr;
            else
                table(1,j)=25;
            end
                end
                 if table(1,(j-1))==25
                    table(1,j)=25;
                 end
            end          
            if i==2 %UAV2只负责“打击”任务
                if (table(2,(j-1))~=25)
                table(2,1)=table(1,1); %设定它第一次打击的是UAV1侦察过的目标
                ta2=table(1:(4*(j-1)+1)); %当前元素之前所有的元素
                tabu21=[];
                tabu22=[];
                tabu2=[];
                for y=1:24
                    if sum(ta2==y)==2

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]高志凯. 基于智能优化算法的无人机资源调度研究[D].南京邮电大学,2021.DOI:10.27251/d.cnki.gnjdc.2021.000049.

[2]胡中华,赵敏,姚敏,李可现,吴蕊.一种改进蚂蚁算法的无人机多目标三维航迹规划[J].沈阳工业大学学报,2011,33(05):570-575.

🌈4 Matlab代码实现