基于海市蜃楼算法(Fata Morgana Algorithm ,FATA)的多无人机协同三维路径规划(提供MATLAB代码)

一、海市蜃楼算法

海市蜃楼算法(Fata Morgana Algorithm ,FATA)是2024年提出一种新型的群体智能优化算法,它的设计灵感来源于自然现象中的海市蜃楼形成过程。FATA算法通过模仿光线在不均匀介质中的传播方式,提出了两种核心策略------海市蜃楼光过滤原则(MLF)和光传播策略(LPS)------来优化搜索过程,增强算法的全局搜索能力和局部开发能力。

1.FATA算法的主要特点:

  1. 基于物理现象的建模

    FATA算法模拟了光线在不同密度介质中的传播和反射过程,将这一自然现象转化为优化策略,以此来指导算法中的种群搜索和个体更新。

  2. 海市蜃楼光过滤原则(MLF)

    MLF策略是FATA算法中用于种群搜索的策略。它结合了定积分原理来评估种群中个体的质量,并通过计算种群适应度函数的积分值来指导种群的更新,以此来筛选出有助于形成"海市蜃楼"(即优化解)的"光线"个体。

  3. 光传播策略(LPS)

    LPS策略是FATA算法中用于个体搜索的策略,它包括折射、反射和全内反射三种策略。这些策略共同指导个体在搜索空间中的移动,以探索新的潜在解,并增强算法的局部搜索能力。

  4. 平衡全局搜索与局部搜索

    FATA算法通过MLF和LPS策略的有机结合,平衡了全局搜索和局部搜索的能力。这种平衡有助于算法在保持广泛探索的同时,也能深入开发有前景的搜索区域。

  5. 自适应搜索

    算法中的MLF和LPS策略可以根据搜索过程中的实时信息自适应地调整搜索方向和步长,这有助于算法在复杂的搜索空间中灵活应对,并有效避免陷入局部最优解。

  6. 适用于复杂优化问题

    FATA算法不仅适用于连续优化问题,还能够处理多模态、高维和不可微分的复杂优化问题。这使得FATA算法在工程优化、机器学习和其他领域中具有广泛的应用潜力。

2.算法步骤


FATA算法的步骤可以概括为:

  1. 初始化:设置算法参数,包括种群大小、维度、最大迭代次数等,并随机初始化种群。
  2. 适应度评估:计算种群中每个个体的适应度。
  3. MLF策略:根据确定积分原理,评估种群的整体质量,并选择形成海市蜃楼的个体。
  4. LPS策略
    • 光折射策略:模拟光在不同密度介质中的折射过程,更新个体位置。
    • 光的全内反射策略:模拟光在介质中的全内反射过程,使种群向相反方向探索。
  5. 更新种群:根据MLF和LPS策略的结果,更新种群中的个体。
  6. 迭代:重复步骤2-5,直到达到最大迭代次数或满足其他停止条件。
  7. 输出最优解:返回找到的最优解或最优解集合。

参考文献:

[1]Ailiang Qi, Dong Zhao, Ali Asghar Heidari, Lei Liu, Yi Chen, Huiling Chen, FATA: An Efficient Optimization Method Based on Geophysics, Neurocomputing - 2024, DOI: https://doi.org/10.1016/j.neucom.2024.128289.

二、无人机(UAV)三维路径规划

单个无人机三维路径规划数学模型参考如下文献:

Phung M D , Ha Q P . Safety-enhanced UAV Path Planning with Spherical Vector-based Particle Swarm Optimization[J]. arXiv e-prints, 2021.

每个无人机的目标函数由路径长度成本,安全性与可行性成本、飞行高度成本和路径平滑成本共同组成:

2.1路径长度成本

路径长度成本由相邻两个节点之间的欧氏距离和构成,其计算公式如下:

2.2路径安全性与可行性成本

路径安全性与可行性成本通过下式计算:

2.3路径飞行高度成本

飞行高度成本通过如下公式计算所得:

2.4路径平滑成本

投影向量通过如下公式计算:

转弯角度的计算公式为:

爬坡角度的计算公式为:

平滑成本的计算公式为:

2.5总成本(目标函数)

总成本由最优路径成本,安全性与可行性成本、飞行高度成本和路径平滑成本的线性加权所得。其中,b为加权系数。

三、实验结果

在三维无人机路径规划中,无人机的路径由起点,终点以及起始点间的点共同连接而成。因此,自变量为无人机起始点间的各点坐标,每个无人机的目标函数为总成本(公式9)。本文研究3个无人机协同路径规划,总的目标函数为3个无人机的总成本之和。

bash 复制代码
Xmin=[Xmin0,Xmin1,Xmin2];
Xmax=[Xmax0,Xmax1,Xmax2];
dim=dim0+dim1+dim2;
fobj=@(x)GetFun(x,fobj0,fobj1,fobj2);%总的目标函数
pop=50;
maxgen=1500;

[fMin ,bestX,Convergence_curve]=eco(pop,maxgen,Xmin,Xmax,dim,fobj);%Trajectories,fitness_history, population_history
% save bestX bestX
BestPosition1 = SphericalToCart(bestX(1:dim/3),model);% 第一个无人机得到的路径坐标位置
BestPosition2 = SphericalToCart(bestX(1+dim/3:2*dim/3),model1);% 第二个无人机得到的路径坐标位置
BestPosition3 = SphericalToCart(bestX(1+2*dim/3:end),model2);% 第三个无人机得到的路径坐标位置

gca1=figure(1);
gca2=figure(2);
gca3=figure(3);
PlotSolution(BestPosition1,model,gca1,gca2,gca3);% 画第一个无人机
PlotSolution1(BestPosition2,model1,gca1,gca2,gca3);% 画第二个无人机
PlotSolution2(BestPosition3,model2,gca1,gca2,gca3);% 画第三个无人机

figure
plot(Convergence_curve,'LineWidth',2)
xlabel('Iteration');
ylabel('Best Cost');
grid on;


相关推荐
南巷逸清风22 分钟前
LeetCode 101.对称二叉树
c++·python·算法·leetcode
纪怽ぅ36 分钟前
浅谈——深度学习和马尔可夫决策过程
人工智能·python·深度学习·算法·机器学习
七月巫山晴36 分钟前
QChart中柱形图的简单使用并实现【Qt】
开发语言·数据结构·c++·qt·算法·排序算法
韭菜盖饭42 分钟前
LeetCode每日一题685---冗余连接 II
算法·leetcode·职场和发展
计算机学姐1 小时前
基于协同过滤算法的旅游网站推荐系统
vue.js·mysql·算法·mybatis·springboot·旅游·1024程序员节
一个不喜欢and不会代码的码农1 小时前
力扣1381:设计一个支持增量操作的栈
数据结构·算法·leetcode
如意.7591 小时前
【C++】——高效构建与优化二叉搜索树
算法
繁依Fanyi1 小时前
ArrayList和linkedList的区别
java·开发语言·算法
@小码农1 小时前
2024 CCF CSP-J/S 2024 第二轮认证 真题试卷
算法
今天秃头了吗??2 小时前
贪心算法入门(一)
java·数据结构·算法·贪心算法