一、海市蜃楼算法
海市蜃楼算法(Fata Morgana Algorithm ,FATA)是2024年提出一种新型的群体智能优化算法,它的设计灵感来源于自然现象中的海市蜃楼形成过程。FATA算法通过模仿光线在不均匀介质中的传播方式,提出了两种核心策略——海市蜃楼光过滤原则(MLF)和光传播策略(LPS)——来优化搜索过程,增强算法的全局搜索能力和局部开发能力。
1.FATA算法的主要特点:
-
基于物理现象的建模:
FATA算法模拟了光线在不同密度介质中的传播和反射过程,将这一自然现象转化为优化策略,以此来指导算法中的种群搜索和个体更新。 -
海市蜃楼光过滤原则(MLF):
MLF策略是FATA算法中用于种群搜索的策略。它结合了定积分原理来评估种群中个体的质量,并通过计算种群适应度函数的积分值来指导种群的更新,以此来筛选出有助于形成“海市蜃楼”(即优化解)的“光线”个体。
-
光传播策略(LPS):
LPS策略是FATA算法中用于个体搜索的策略,它包括折射、反射和全内反射三种策略。这些策略共同指导个体在搜索空间中的移动,以探索新的潜在解,并增强算法的局部搜索能力。
-
平衡全局搜索与局部搜索:
FATA算法通过MLF和LPS策略的有机结合,平衡了全局搜索和局部搜索的能力。这种平衡有助于算法在保持广泛探索的同时,也能深入开发有前景的搜索区域。 -
自适应搜索:
算法中的MLF和LPS策略可以根据搜索过程中的实时信息自适应地调整搜索方向和步长,这有助于算法在复杂的搜索空间中灵活应对,并有效避免陷入局部最优解。 -
适用于复杂优化问题:
FATA算法不仅适用于连续优化问题,还能够处理多模态、高维和不可微分的复杂优化问题。这使得FATA算法在工程优化、机器学习和其他领域中具有广泛的应用潜力。
2.算法步骤
FATA算法的步骤可以概括为:
- 初始化:设置算法参数,包括种群大小、维度、最大迭代次数等,并随机初始化种群。
- 适应度评估:计算种群中每个个体的适应度。
- MLF策略:根据确定积分原理,评估种群的整体质量,并选择形成海市蜃楼的个体。
- LPS策略:
- 光折射策略:模拟光在不同密度介质中的折射过程,更新个体位置。
- 光的全内反射策略:模拟光在介质中的全内反射过程,使种群向相反方向探索。
- 更新种群:根据MLF和LPS策略的结果,更新种群中的个体。
- 迭代:重复步骤2-5,直到达到最大迭代次数或满足其他停止条件。
- 输出最优解:返回找到的最优解或最优解集合。
参考文献:
[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个无人机的总成本之和。
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;