ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

【协同任务】基于matlab蚁群算法多无人机攻击调度【含Matlab源码 034期】

【协同任务】基于matlab蚁群算法多无人机攻击调度【含Matlab源码 034期】 欢迎来到海神之光博客之家✅博主简介热爱科研的Matlab仿真开发者修心和技术同步精进个人主页海神之光代码获取方式海神之光Matlab王者学习之路—代码获取方式⛳️座右铭行百里者半于九十。更多Matlab路径规划仿真内容点击①Matlab路径规划进阶版②付费专栏Matlab路径规划初级版⛳️关注CSDN海神之光更多资源等你来⛄一、多无人机协同作业简介0 引言多架无人机组成无人机集群可以协同完成任务是未来无人机的发展方向。组成无人机集群的多架无人机通过机间链路互相通信实现协作可以迅速准确地执行路径规划、协同侦察、协同感知和协同攻击等复杂任务。为实现无人机集群协作的诱人前景国内外都积极开展了相关研究工作。美国方面美国国防预先研究计划局(DARPA)于2015年推出“小精灵”项目计划研制具备自组织和智能协同能力的无人机蜂群系统。美国防部战略能力办公室(SCO)2014年启动了“无人机蜂群”项目旨在通过有人机空射“灰山鹑”微型无人机蜂群执行低空态势感知和干扰任务。美国海军研究局(ONR)于2015年公布了“低成本无人机蜂群”(LOCUST)项目研发可快速连续发射的无人机蜂群无人机之间利用近距离射频网络共享态势信息协同执行掩护、攻击或防御任务。2017年在 DARPA 会议中心举办“进攻性集群战术”(OFFSET)项目的提案人活动目标是发展基于游戏的开放架构为城市作战的无人集群系统生成、评估和集成集群战术。欧洲方面2016 年欧洲防务局启动了“欧洲蜂群”项目开展了无人机蜂群的自主决策、协同飞行等关键技术研究。2016年英国国防部发起无人机蜂群竞赛参赛的多个团队控制无人机蜂群实现了通信中继、协同干扰、目标跟踪定位和区域测绘等任务。2017 年俄罗斯无线电电子技术集团对外发表研究计划称在战斗机上装载多架蜂群无人机可实现协同侦察和攻击的新型作战样式。国内也相继展开相关研究。最近中国电科(CETC)电子科学研究院发布了陆军协同无人机“蜂群”视频引起广泛关注。面对这一重要课题本文研究总结了无人机协同应用的发展趋势对其当前研究进展和发展方向进行了探讨并提出无人机集群任务协作的发展趋势是多智能体协同。1 无人机协同应用发展趋势对现有研究工作的分析如图1所示无人机协同应用大体上可以分为3个阶段分别是分布式协同群体智能协同和未来的多智能体协同。图1 无人机协同技术的发展趋势无人机集群协同发展的第1个阶段是简单分布式协同。在该阶段协同任务根据执行条件预先在简单连接和组合的集群成员之间经过计算处理后分配执行。集群基本没有能力根据环境与目标的变化动态调整任务分配各无人机分担的任务通常是确定的。鉴于预分配方式的局限性受生物集群活动的启发群体智能被应用于无人机集群使无人机集群协同发展到第2个阶段——群体智能协同。在该阶段中各个无人机节点被赋予初级智能能够进行简单的认知和决策通过集群个体之间更为紧密的耦合可以根据执行中的反馈调整优化方式或者优化目标使整个无人机集群系统有能力构成自组织、高稳定的分布式系统。群体智能协同阶段当前正处于研究和应用迅速发展时期。随着节点计算能力的进一步提升和人工智能技术的飞速发展无人机协同即将进入发展的第3个阶段——多智能体协同。在多智能体协同发展阶段集群中的各个无人机都将是一个独立的综合智能体具有多维度认知计算和高级智能处理能力从而实现更高效的自主学习和决策并在此基础上完成更复杂、更艰巨的任务。2 分布式协同从无人机集群出现开始就被用于解决协同路径规划、协同感知和协同任务规划等分布式协作任务。早期的无人机分布式协同任务通常都是提前进行充分的计算和分配无人机节点按照既定算法或者方案予以执行。根据计算结果分布式协同无人机群可组织执行配置好的任务如图2所示。图2 分布式协同阶段的任务执行方式2.1 协同路径规划协同路径规划中要求在给定目标或者搜索目标后无人机节点根据当前的任务状态来确定飞行路径。针对协同搜索和跟踪任务的路线规划无人机集群可采用最大化目标功能来检测最重要的目标并在关键时刻对其进行跟踪从而获得最有价值的信息。而协同搜索的路径规划可以分成无人机工作区间划分和全区域覆盖搜索路径规划2个子问题将多机协同搜索转化为子区域上的单机搜索对目标区域快速进行划分并生成飞行路线。基于改进遗传算法的多无人机协同侦察航迹规划算法可用于解决面向复杂战场环境中高效侦察多种类型目标过程中的路径规划问题并能够有效地提高航迹规划精度和效率。2.2 协同感知协同感知是多无人机集群共同探测感知某一目标区域状态的任务形式。在这类任务中最常见的是协同频谱感知。针对协同频谱感知任务特点采用最佳融合准则的分布式协同任务执行方案可以优化检测性能使协作频谱感知总错误率达到最小并能降低协作感知时间节省感知过程开销。2.3 协同任务规划协同任务规划要求集群系统能够根据目标任务和执行情况对任务进行系统分配。例如针对协同打击任务通过建立无人机毁伤代价指标函数、航程代价指标函数和价值收益指标函数可以实现多无人机协同打击任务的分配[5];而通过建立多目标优化模型并采用遗传算法能有效提高任务的完成效率。针对协同搜救任务使用一种新的基于通信保持的拍卖方法的自适应反馈调节遗传算法能够改善传统遗传算法存在易陷入局部最优的弱点。通过以上3种类型协同任务的相关研究工作可以看出无人机集群的分布式协同方式虽然充分考虑了“分布式”特点能够根据任务目标和集群特征设置有效的目标函数和优化方法去寻求最优或者较优的结果但是其任务执行环境和求解目标需要在任务执行之前进行优化计算然后分配执行不能适应实际中动态的任务目标和环境变化缺乏“智能性”的感知和适应性行为。随着人们对“蜂群”“鸟群”等生物群体智能研究的深入群体智能协同被进一步引入到无人机的协同中。3 群体智能协同“鸟群”“蚁群”等生物群体虽然其中的个体智能有限但是群体却展现出高度的自组织性这一特点与无人机集群自主协同的需求相符因而群体智能在无人机协同应用领域也得到了广泛研究使无人机集群协同具有了初步的智能性。具备群体智能的无人机集群系统在任务拆解和执行过程中引入了群体反馈和适变能力可执行较复杂的动态任务其过程如图3所示。图3 群体智能协同阶段的任务执行方式3.1 协同路径规划山区路径规划任务受到地形特征的强烈影响难以预先确定性分配执行简单的分布式协同无法胜任。例如为了执行山区应急物资运输的路径规划任务一种考虑路径安全度的改进蚁群算法可快速收敛并生成更短路径。蚁群算法也被用于无人机协同飞抵空战场的航迹规划任务中;一种基于改进混沌蚁群算法更能克服传统蚁群智能算法中易出现局部极值、收敛效率低的缺陷提升算法的全局寻优能力和搜索效率。针对协同攻击移动目标场景的航迹规划另一种改进的蚁群算法建立了结合任务分配的无人机群协同航迹规划模型可以快速地对地面多个移动目标规划出有效的航迹。3.2 协同感知在协同感知任务中群体智能也得到应用。针对无人机集群通信场景和需求出现了考虑结合认知无线电技术指导下的智能通信思想和汇聚有限智慧的群体智能理论方法构建了群体智能协同通信模型和智能协同感知模型。3.3 协同任务规划协同作战是协同任务规划中的典型场景结合群体智能优化算法的优势基于粒子群-整数编码狼群算法的集群组网任务分配算法适合解决此类协同问题;由于无人机集群协同决策困难还可以结合狼群算法的认知与协作能力实现在复杂环境下迅速对目标进行跟踪和包围。这种协同任务是第一类简单协同所不能胜任的。虽然无人机集群和群体智能的结合可以充分发挥无人机集群优势增强分布式协同智能性可在任务执行过程中与环境和任务执行中间过程产生一定交互和反馈使之具备一定的自适应能力但是这种智能仍然是非常有限的其本质仍然是基于特定计算模式和反馈模式下的分布式优化算法。4 多智能体协同随着人工智能技术和节点自身算力的不断增强未来无人机集群中的个体将具备更强的智能性能够独立对环境和任务进行感知和评估实现多个智能体之间的交互和协同从而具备多智能体协同能力。近年来人工智能领域研究取得了突破性进展。其中深度强化学习在诸多领域得到了成功应用。无线通信网络基于多智能体深度强化学习的资源分配技术也得到了深入研究。多智能体深度强化学习模型早已被用于解决车联网中频谱资源分配问题,这种应用已经与无人机集群系统颇为接近。例如一种基于多智能体深度强化学习的分布式动态功率分配方案。基于多智能体深度强化学习的策略还可被用于二者的结合——用无人机辅助车辆网络进行多维资源管理。虽然基于强化学习的多智能体通信网络资源分配问题已经得到了广泛研究但是由于网络特性的不同传统的针对其他通信网络的研究成果不能直接用于无人机集群网络。因而基于强化学习的多智能体自主协同应用逐渐成为未来无人机多智能体自主协同的一个研究热点。针对无人机群的通信网络资源动态分配问题而提出的多智能体深度强化学习方案也陆续出现,例如一种基于多智能体深度强化学习的分布式干扰协调策略被用于受到干扰的无人机网络中的文件下载业务。智能体在适用于无人机网络特点的独立强化学习中其行为策略通常只能根据它们对全局环境的局部个体观察来制定。针对这种局限性联合采用2种不同规模的智能体可解决智能体之间的通信问题。无人机集群协同经常会处理动态高维离散和连续动作状态空间的优化求解问题近来出现的演员-评论家算法是深度强化学习的一个新兴方向结合了基于值函数和基于策略函数的深度强化学习两大分支的优势非常适用于无人机集群的智能协同。利用演员-评论家算法在无线信道和可再生能源再生率都是随机变化且环境动态变化条件下可寻求资源分配最佳策略,如用于解决车联网中复杂动态环境下的资源分配问题。应用设备到设备(D2D)网络的异构蜂窝网络环境下基于演员-评论家算法的策略可用于智能化节能模式选择和资源分配。随着节点智能算力的不断增强无人机集群中的每架无人机可以作为一个具有深度强化学习能力的智能体而整个集群可通过合作构成多智能体。相邻无人机之间通过通信网络进行信息交换与分发。如图4所示每架无人机都与局部环境相互作用根据从周围环境或者同伴无人机得到的信息针对承载的任务需求通过深度强化学习智能地产生动作策略进行自身资源与行为的分配与调整进而与环境和同伴互动并获得个体奖励。图4 基于多智能体的无人机集群每架无人机的深度强化学习智能体由2个深度神经网络构成包括演员网络和评论家网络如图5所示。图5 基于演员评论家算法的无人机智能体演员网络负责输出动作评论家网络负责评价演员的动作以获得相互促进的效果。与传统的深度强化学习方法相比演员-评论家算法同时吸取了基于值函数方法和基于策略函数方法的优点从价值和策略两方面来训练提升智能体训练的更快效果也更好。通过训练和学习期望智能体的评论家网络可以获得最佳效用评估函数智能体从周围环境中观察得到状态信息St ,例如干扰状态、相邻无人机等。演员网络拟合动作策略函数π(St;ωπ),根据状态信息St,动作策略函数输出当前时隙的动作at,也就是资源分配结果并应用到环境中得到个体的即时奖励rt。奖励由奖励函数计算得到负责反馈一个即时的、合理的、具有指导意义的奖励值从而激励智能体向目标更新策略。评论家网络拟合效用评估函数Q(St,at,ω),负责预测和评估在当前状态St采用动作at所能得到的状态动作价值即长期性回报Rt为式中γ是折扣因子γ表示了当前对于未来收益的重视程度取值在01之间取值0则表示智能体忽视未来收益只看重当前的收益rt,取值1则表示智能体将未来每个时刻的收益都视为与当前时刻收益一样的重要性。获得最大的长期性回报是智能体的最终目的这个目标可以根据任务的性质被定义为不同的评判标准。评论家网络的最佳效用评估函数对应的演员网络动作策略即为最佳动作策略π*。动作策略函数的参数通过策略梯度的方法进行更新效用评估函数的参数采用最小化损失函数进行更新式中yt为优势函数用来衡量计算执行动作后的实际效用评估值。通过更新智能体的演员网络的动作策略输出的动作越来越好而评论家网络的效用评估也会越来越准确。基于多智能体的无人机群的每架无人机都会朝着收益最大的方向执行动作从而实现集群的收益最大化。⛄二、蚁群算法简介1 蚁群算法(ant colony algorithm,ACA)起源和发展历程Marco Dorigo等人在研究新型算法的过程中发现蚁群在寻找食物时通过分泌一种称为信息素的生物激素交流觅食信息从而能快速的找到目标于是在1991年在其博士论文中首次系统地提出一种基于蚂蚁种群的新型智能优化算法“蚂蚁系统Ant system,简称AS”后来提出者及许多研究者对该算法作了各种改进将其应用于更为广泛的领域如图着色问题、二次分配问题、工件排序问题、车辆路径问题、车间作业调度问题、网络路由问题、大规模集成电路设计等。近些年来M.Dorigo等人把蚂蚁算法进一步发展成一种通用的优化技术“蚁群优化Ant Colony Optimization,简称ACO”并将所有符合ACO框架的算法称为“蚁群优化算法ACO algorithm”。具体来说各个蚂蚁在没有事先告知食物在什么地方的前提下开始寻找食物。当一只找到食物以后它会向环境释放一种挥发性分泌物pheromone (称为信息素,该物质随着时间的推移会逐渐挥发消失信息素浓度的大小表征路径的远近)信息素能够让其他蚂蚁感知从而起到一个引导的作用。通常多个路径上均有信息素时蚂蚁会优先选择信息素浓度高的路径从而使浓度高的路径信息素浓度更高形成一个正反馈。有些蚂蚁并没有像其它蚂蚁一样总重复同样的路他们会另辟蹊径如果另开辟的道路比原来的其他道路更短那么渐渐地更多的蚂蚁被吸引到这条较短的路上来。最后经过一段时间运行可能会出现一条最短的路径被大多数蚂蚁重复着。最终信息素浓度最高的路径即是最终被蚂蚁选中的最优路径。与其他算法相比蚁群算法是一种比较年轻的算法具有分布式计算、无中心控制、个体之间异步间接通信等特点并且易于与其他优化算法相结合经过不少仁人志士的不断探索到今天已经发展出了各式各样的改进蚁群算法不过蚁群算法的原理仍是主干。2 蚁群算法的求解原理基于上述对蚁群觅食行为的描述该算法主要对觅食行为进行以下几个方面模拟1模拟的图场景中包含了两种信息素一种表示家一种表示食物的地点并且这两种信息素都在以一定的速率进行挥发。2每个蚂蚁只能感知它周围的小部分地方的信息。蚂蚁在寻找食物的时候如果在感知范围内就可以直接过去如果不在感知范围内就要朝着信息素多的地方走蚂蚁可以有一个小概率不往信息素多的地方走而另辟蹊径这个小概率事件很重要代表了一种找路的创新对于找到更优的解很重要。3蚂蚁回窝的规则与找食物的规则相同。4蚂蚁在移动时候首先会根据信息素的指引如果没有信息素的指引会按照自己的移动方向惯性走下去但也有一定的机率改变方向蚂蚁还可以记住已经走过的路避免重复走一个地方。5蚂蚁在找到食物时留下的信息素最多然后距离食物越远的地方留下的信息素越少。找到窝的信息素留下的量的规则跟食物相同。蚁群算法有以下几个特点:正反馈算法、并发性算法、较强的鲁棒性、概率型全局搜索、不依赖严格的数学性质、搜索时间长易出现停止现象。蚂蚁转移概率公式公式中是蚂蚁k从城市i转移到j的概率αβ分别为信息素和启发式因子的相对重要程度为边ij上的信息素量为启发式因子为蚂蚁k下步允许选择的城市。上述公式即为蚂蚁系统中的信息素更新公式是边i,j)上的信息素量ρ是信息素蒸发系数0ρ1;为第k只蚂蚁在本次迭代中留在边i,j上的信息素量Q为一正常系数为第k只蚂蚁在本次周游中的路径长度。在蚂蚁系统中信息素更新公式为3 蚁群算法的求解步骤1初始化参数在计算之初需要对相关参数进行初始化如蚁群规模蚂蚁数量m、信息素重要程度因子α、启发函数重要程度因子β、信息素会发银子ρ、信息素释放总量Q、最大迭代次数iter_max、迭代次数初值iter1。2构建解空间将各个蚂蚁随机地置于不同的出发点对每个蚂蚁kk1,2,3…m按照2-1计算其下一个待访问城市直到所有蚂蚁访问完所有城市。3更新信息苏计算每个蚂蚁经过路径长度Lk(k1,2,…m记录当前迭代次数中的最优解最短路径。同时根据式2-2和2-3对各个城市连接路径上信息素浓度进行更新。4 判断是否终止若iteriter_max则令iteriter1,清空蚂蚁经过路径的记录表并返回步骤2否则终止计算输出最优解。5判断是否终止若iteriter_max则令iteriter1,清空蚂蚁经过路径的记录表并返回步骤2否则终止计算输出最优解。3. 判断是否终止若iteriter_max则令iteriter1,清空蚂蚁经过路径的记录表并返回步骤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个点事originsave t.mat tload t.matvalue[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个目标的价值valuevalue/100;timezeros(1,25); %侦察UAV时间数组里面放的是飞机走的航程除以速度便是时间设速度为‘1’attacktimezeros(1,25); %打击UAV时间数组%把侦察过的任务对应无人机走过的航程存到该任务的一个矩阵里当做时间然后打击任务如果选定某任务check一下时间是否合格合格的话可以打击并存入禁忌表不合格的话选次概率的%注目的是把所有目标执行完所有任务所以每次迭代最后所有无人机收获的总价值都一样都是所有目标的价值之和所以本程序考虑优先执行价值大的目标防止无人机飞很久、打很久后攻打效率变低%的情况出现%%计算城市间相互距离nsize(t,1);Dzeros(n,n);for i1:nfor j1:nif i~jD(i,j)sqrt(sum((t(i,:)-t(j,:)).^2));elseD(i,j)1e-2;endendend%%初始化参数m10; %蚂蚁个数alpha1; %信息素重要程度因子beta1; %启发函数重要程度因子gama2;rho0.3; %信息素挥发因子Q1.0; %总量eta1./D; %启发函数tauones(n,n)7.1192e-005;%信息素矩阵iter1; %迭代次数初始值iter_max80; %迭代次数最大值length_bestzeros(iter_max,1);%每次迭代最佳路径长度(应该是一次比一次小)length_avezeros(iter_max,1); %每次迭代路径平均长度%%迭代寻找最佳路径while iteriter_maxwhtacell(8,1);lieendzeros(8,1);for zu1:8city_index1:25; %城市来标号table[];startzeros(4,1);temprandperm(24);for i1:4start(i)temp(i);endtable(:,1)start;j2;while (j30)for i1:4if i1 %UAV1只负责“侦察”任务if table(1,(j-1))~25table1table(1,:);table1[table1;table(3:4,:)];tabu1table1(; %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同维】allow1city_index(allow_index1); %把还能走的序号摘出来了待访问的城市集合P1allow1;%计算城市的转移概率if numel(allow1)~0for k1:max(size(allow1))-1P1(k)(tau(table(1,(j-1)),allow1(k))alpha)*(eta(table(1,(j-1)),allow1(k))beta)100007.1192e-004;endP1(max(size(allow1)))7.1192e-005;P1P1/sum(P1);[d1,ind1]sort(P1,2,‘descend’);%从大到小排序是d1,对应的原序号是ind1target1allow1(ind1(1));%轮盘赌法选择下一个城市%pc1cumsum(P1); % p1 p1p2 p1p2p3 p1p2p3p4 …【p1-allow(1) p2-allow(2) …】%target_index1find(pc1rand);%target1allow1(target_index1(1)); %这次返回的是allow数组中城市的真正序号table(1,j)target1; %把选好这个点放到路径表里面rrD(25,table(1,1));time(table(1,1))rr;if j2for c2:(j-1)rrrrD(table(1,c-1),table(1,c));endendrrrrrD(table(1,j-1),target1);%rrr就是UAV1到该点时走过的航程time(target1)rrr;elsetable(1,j)25;endendif table(1,(j-1))25table(1,j)25;endendif i2 %UAV2只负责“打击”任务if (table(2,(j-1))~25)table(2,1)table(1,1); %设定它第一次打击的是UAV1侦察过的目标ta2table(1:(4(j-1)1)); %当前元素之前所有的元素tabu21[];tabu22[];tabu2[];for y1:24if sum(ta2y)2tabu21[tabu21;y];endend %出现过两次的放在tabu21里tabu22setdiff(1:24,ta2); %一次都没出现的放在tabu22里tabu2[tabu21’,tabu22]; %tabu2出来了allow_index2~ismember(city_index,tabu2); %【走过的变成0能走的为1】【若tabu(1 4)则allow_index(0 1 1 0 1 1 1…)】【注意allow_index与city_index同维】allow2city_index(allow_index2); %把还能走的序号摘出来了待访问的城市集合P2allow2;%计算城市的转移概率for k1:(length(allow2)-1)P2(k)tau(table(2,(j-1)),allow2(k))*eta(table(2,(j-1)),allow2(k))*value(allow2(k))10000;endP2(max(size(allow2)))7.1192e-005;P2P2/sum(P2);[d2,ind2]sort(P2,2,‘descend’);%从大到小排序是d1,对应的原序号是ind1target2allow2(ind2(1)); %target2d1(1);%轮盘赌法选择下一个城市%pc2cumsum(P2); % p1 p1p2 p1p2p3 p1p2p3p4 …【p1-allow(1) p2-allow(2) …】%target_index2find(pc2rand); %选中那个概率较大的选中的点返回的是allow数组中的序号%target2allow2(target_index2(1)); %这次返回的是allow数组中城市的真正序号%table(2,j)target2; %把选好这个点放到路径表里面ooD(25,table(2,1));attacktime(table(2,1))oo;if j2for c2:(j-1)ooooD(table(2,c-1),table(2,c));endendoooooD(table(2,j-1),target2);%ooo就是UAV2到该点时走过的航程if numel(d2)5u2;while (oootime(target2)20 u6)target2allow2(ind2(u));oooooD(table(2,(j-1)),target2);uu1;endendtable(2,j)target2;attacktime(target2)ooo;endif table(2,(j-1))25table(2,j)25;endendif i3 %UAV3是“察打”任务if table(3,(j-1))~25ta3table(1:(4(j-1)2));tabu3[];tabu3c[];for y1:24if sum(ta3y)2tabu3[tabu3;y];endend %出现两次的放在tabu3里for y1:24if sum(ta3y)1tabu3c[tabu3c;y];endend %tabu3c是待打的任务已侦查完的任务allow_index3~ismember(city_index,tabu3); %【走过的变成0能走的为1】【若tabu(1 4)则allow_index(0 1 1 0 1 1 1…)】【注意allow_index与city_index同维】allow3city_index(allow_index3); %把还能走的序号摘出来了待访问的城市集合P3allow3;%计算城市的转移概率for k1:(length(allow3)-1)%if ismember(allow3(k),tabu3c)1htable(3,(j-1))P3(k)(tau(table(3,j-1),allow3(k))alpha)*(eta(table(3,(j-1)),allow3(k))beta)*value(allow3(k))*100007.1192e-005;%这是要打的需要价值%else%P3(k)(tau(table(3,(j-1)),allow3(k))alpha)*(eta(table(3,(j-1)),allow3(k))beta)1007.1192e-005;%这些是待侦察的没有价值%endendP3(max(size(allow3)))7.1192e-009;P3P3/sum(P3);[d3,ind3]sort(P3,2,‘descend’);%从大到小排序是d1,对应的原序号是ind1target3allow3(ind3(1));%轮盘赌法选择下一个城市%pc3cumsum(P3); % p1 p1p2 p1p2p3 p1p2p3p4 …【p1-allow(1) p2-allow(2) …】%target_index3find(pc3rand); %选中那个概率较大的选中的点返回的是allow数组中的序号%target3allow3(target_index3(1)); %这次返回的是allow数组中城市的真正序号%table(3,j)target3; %把选好这个点放到路径表里面wwD(25,table(3,1));time(table(3,1))ww;if j2for c2:(j-1)wwwwD(table(3,c-1),table(3,c));endendwwwwwD(table(3,j-1),target3);%www就是UAV3到该点时走过的航程if ismember(target3,tabu3c)0 %侦察任务time(target3)www;table(3,j)target3;else %打击任务attacktime(target3)www;if numel(d3)5u2;while (wwwtime(target3)20 u6)target3allow3(ind3(u));wwwwwD(table(3,(j-1)),target3);uu1;endendattacktime(target3)www;table(3,j)target3;%wwwtime(target3)10 说明此打击任务合理endendif table(3,(j-1))25table(3,j)25;endendif i4 %UAV4是“察打”任务if table(4,(j-1))~25ta4table(1:(4(j-1)3));tabu4[];tabu4c[];for y1:24if sum(ta4y)2tabu4[tabu4;y];endend %出现两次的放在tabu4里、、可以把已经侦察过的放在tabu4c中即出现过一次的如果选到的是在tabu4’中的说明是要打击的然后算一下它的航程再和侦察路径比较for y1:24if sum(ta4y)1tabu4c[tabu4c;y];endendallow_index4~ismember(city_index,tabu4); %【走过的变成0能走的为1】【若tabu(1 4)则allow_index(0 1 1 0 1 1 1…)】【注意allow_index与city_index同维】allow4city_index(allow_index4); %把还能走的序号摘出来了待访问的城市集合P4allow4;%计算城市的转移概率for k1:(max(size(allow4))-1)%if ismember(allow4(k),tabu4c)1sxxtable(4,(j-1))P4(k)(tau(table(4,(j-1)),allow4(k))alpha)*(eta(table(4,(j-1)),allow4(k))beta)*value(allow4(k))*100007.1192e-005;%else%P4(k)(tau(table(4,(j-1)),allow4(k))alpha)*(eta(table(4,(j-1)),allow4(k))beta)*1007.1192e-005;%endendP4(max(size(allow4)))7.1192e-009;P4P4/sum(P4);[d4,ind4]sort(P4,2,‘descend’);%从大到小排序是d1,对应的原序号是ind1target4allow4(ind4(1));%轮盘赌法选择下一个城市%pc4cumsum(P4); % p1 p1p2 p1p2p3 p1p2p3p4 …【p1-allow(1) p2-allow(2) …】%target_index4find(pc4rand); %选中那个概率较大的选中的点返回的是allow数组中的序号%target4allow4(target_index4(1)); %这次返回的是allow数组中城市的真正序号%table(4,j)target4; %把选好这个点放到路径表里面qqD(25,table(4,1));time(table(4,1))qq;if j2for c2:(j-1)qqqqD(table(4,c-1),table(4,c));endendqqqqqD(table(4,j-1),target4);%www就是UAV3到该点时走过的航程if ismember(target4,tabu4c)0 %侦察任务time(target4)qqq;table(4,j)target4;else %打击任务attacktime(target4)qqq;if numel(d4)5u2;while (qqqtime(target4)20 u6)target4allow4(ind4(u));qqqqqD(table(4,j-1),target4);uu1;endendattacktime(target4)qqq;table(4,j)target4;%wwwtime(target4)10 说明此打击任务合理endendif table(4,(j-1))25table(4,j)25;endendend %一列结束⛄四、运行结果⛄五、matlab版本及参考文献1 matlab版本2014a2 参考文献[1]揭东,汤新民,陈济达,李腾.改进蚁群算法的多无人机冲突解脱技术研究[J].武汉理工大学学报(交通科学与工程版). 2020,44(01)3 备注简介此部分摘自互联网仅供参考若侵权联系删除 仿真咨询1 各类智能优化算法改进及应用生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化2 机器学习和深度学习方面卷积神经网络CNN、LSTM、支持向量机SVM、最小二乘支持向量机LSSVM、极限学习机ELM、核极限学习机KELM、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断3 图像处理方面图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知4 路径规划方面旅行商问题TSP、车辆路径问题VRP、MVRP、CVRP、VRPTW等、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化5 无人机应用方面无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配6 无线传感器定位及布局方面传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化7 信号处理方面信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化8 电力系统方面微电网优化、无功优化、配电网重构、储能配置9 元胞自动机方面交通流 人群疏散 病毒扩散 晶体生长10 雷达方面卡尔曼滤波跟踪、航迹关联、航迹融合
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进