0
点赞
收藏
分享

微信扫一扫

【路径规划】基于蚁群算法的多无人机攻击调度matlab源码

NicoalsNC 2022-01-07 阅读 121

1 简介

采用蚁群算法对无人机协间多任务分配问题(CMTAP)进行研究.在通用CMTAP模型的基础上,综合考虑包括动态任务时间约束和无人机任务能力的差别多类复杂约束条件,建立扩展的协同多任务分配模型.在多子群蚁群算法的基础上,提出了基于分工机制的蚁群算法对CMTAP进行求解.根据协同多任务分配的特点,设计了基于任务能力评估的问题解构造策略和基于任务代价的状态转移规则,提高了算法的性能.仿真实验结果表明该方法能有效地解决无人机协同多任务分配问题.

蚁群算法是模拟蚁群觅食行为的一种优化算法。在整个觅食过程中蚂蚁散播信息素,蚂蚁通过感知到的信息素多少,来决定所要选择的下一个栅格。

      在初始阶段,由于地面上没有信息素,因此蚁群的行走路径是随机的,蚂蚁在行走的过程中会不断释放信息素,标识自己行走的路径。随着时间的推移,有若干只蚂蚁找到了食物,此时便存在若干条从洞穴到食物的路径。由于蚂蚁的行为轨迹是随机分布的,因此在单位时间内,短路径上的蚂蚁数量比长路径上的蚂蚁密度要大,短路径留下的信息素浓度也越高。这为后面的蚂蚁们提供了有力的方向指引,越来越多的蚂蚁聚集到最短的路径上去。对于单个蚂蚁来说,它并没有要寻找最短路径,只是根据概率选择;对于整个蚁群系统来说,它们却达到了寻找到最优路径的客观上的效果。     假设蚁群中蚂蚁的总数为M,各蚂蚁在栅格环境下移动,并且根据状态转移规则选择下一个栅格,假设在时刻t时,蚂蚁k位于栅格i,那么蚂蚁k选择下一个栅格j的概率为:

                                                       

img

(1)式中:V表示蚂蚁K可以选择下一个栅格的集合;Alpha为信息素浓度启发因子,Alpha越大,表明蚂蚁K越趋向于选择多数蚂蚁走过的路径;Beta表示期望启发因子,反映了能见度信息对蚂蚁选择下一步位置所起作用的大小,Beta值越大,表明蚂蚁K越趋向于选择距离目标点近的栅格,越倾向于往能见度程。表示t时刻路径(i,j)上的信息素浓度;表示t时刻路径(i,j)上的启发信息,其定义为:

     

img

img

      蚁群算法的核心部分在于模拟了蚁群的转移概率选择行为,通过使用信息素和启发式函数值进行转移概率计算。其中蚂蚁状态转移过程中以节点到目标点之间的距离的倒数作为启发信息,不利于障碍物的预先规避。并且在复杂的路径规划环境下,蚁群算法在一个庞大的空间中搜索,在优化初期路径上的信息素浓度较小,正向反馈信息不明显尤其是随机解产生的过程中的“盲目搜索”产生大量的局部交叉路径,降低蚁群算法的运行效率,且容易陷入局部最优,搜索进行到一定程度后,容易出现停滞现象,所有个体发现的解完全一致,不能进行进一步搜索,不利于发现更好的解。

2 部分代码

t=[4 5;16 25.8;10 45;20 55;30 65;35 55;29 31;37 26;47 27;30 31.3;31 17;14 7;35.6 13.8;26.7 22.5;21 39;38 42;5 26;28 53;20 13;10 60;26 31;54 38;7 58;12 36;30 2] %24个点,第25个点事origin
save t.mat t
load t.mat
value=[1 1 1 2 3 2 1 3 3 2 2 2 2 2 1 2 3 3 1 1 2 1 1 1]; %24个目标的价值
value=value/100;
time=zeros(1,25); %侦察UAV时间数组,里面放的是飞机走的航程,除以速度便是时间,设速度为‘1’
attacktime=zeros(1,25); %打击UAV时间数组
%把侦察过的任务对应无人机走过的航程存到该任务的一个矩阵里,当做时间,然后打击任务如果选定某任务,check一下时间是否合格,合格的话,可以打击,并存入禁忌表,不合格的话,选次概率的

%注:目的是把所有目标执行完所有任务,所以每次迭代最后所有无人机收获的总价值都一样,都是所有目标的价值之和;所以本程序考虑优先执行价值大的目标,防止无人机飞很久、打很久后攻打效率变低
%的情况出现

%%计算城市间相互距离
n=size(t,1);
D=zeros(n,n);
for i=1:n
   for j=1:n
       if i~=j
           D(i,j)=sqrt(sum((t(i,:)-t(j,:)).^2));
       else
           D(i,j)=1e-2;
       end
   end
end
%%初始化参数
m=10;         %蚂蚁个数
alpha=1;      %信息素重要程度因子
beta=1;       %启发函数重要程度因子
gama=2;
rho=0.3;      %信息素挥发因子
Q=1.0;          %总量
eta=1./D;     %启发函数
tau=ones(n,n)+7.1192e-005;%信息素矩阵
iter=1;       %迭代次数初始值
iter_max=80;  %迭代次数最大值
length_best=zeros(iter_max,1);%每次迭代最佳路径长度(应该是一次比一次小)
length_ave=zeros(iter_max,1); %每次迭代路径平均长度 
%%迭代寻找最佳路径
while iter<=iter_max
   whta=cell(8,1);
   lieend=zeros(8,1);
   192e-009;
    
           table(4,j)=target4;%www<time(target4)+10 说明此打击任务合理
           end                
               end
               if table(4,(j-1))==25
                   table(4,j)=25;
               end
             end
       end %一列结束

3 仿真结果

img

4 参考文献

[1]苏菲, 陈岩, 沈林成. 基于蚁群算法的无人机协同多任务分配[J]. 航空学报, 2008, 029(B05):184-191.

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

举报

相关推荐

0 条评论