一、海市蜃楼搜索优化算法
海市蜃楼搜索优化(Mirage Search Optimization, MSO)算法是2025年提出的一种基于海市蜃楼物理现象的元启发式优化算法,于2025年2月在线发表在JCR一区、中科院2区SCI期刊《Advances in Engineering Software》上。海市蜃楼是一种常见的物理现象,其形成与气象和地理因素密切相关。太阳使地面温度上升,形成温度梯度,进而导致大气密度产生显著差异,造成大气中折射率的分层。光在大气中被折射,但大脑认为光是沿直线传播的,因此人们看到了物体的虚拟图像。MSO算法正是基于这一物理现象,通过模拟海市蜃楼的形成原理,设计了上蜃景策略和下蜃景策略,分别用于全局探索和局部开发,以实现对复杂优化问题的有效求解。
算法原理
海市蜃楼是一种光学现象,其形成与气象和地理因素密切相关。太阳使地面温度上升,形成温度梯度,进而导致大气密度差异和折射率分层。光在大气中传播时发生折射,而人脑认为光沿直线传播,从而形成虚拟图像。MSO 算法正是基于这一物理现象,通过模拟光的折射和虚拟图像的形成,设计了两种更新策略来优化种群的位置。
算法策略
- 上蜃景策略:主要用于全局探索。当入射光在水平基准线的左边,或位于水平基准面法线右侧且满足 β < α < π/2 时,通过特定的公式更新个体位置,扩大搜索范围,避免陷入局部最优。
- 下蜃景策略:主要用于局部开发。当下蜃景观察到物体的放大虚像时,基于光路折射原理设计局部搜索模式。如果当前个体不是种群最优个体,按一定公式更新位置;如果是种群最优个体,则采用另一种更新方式,以在局部区域内精细搜索,提高解的精度。
算法模型
初始化
和其他群体优化算法一样,MSO 算法采用随机初始化方式。在 D 维搜索空间中,种群大小为 N 的个体位置初始化公式为:
X i , j = X min , j + r a n d ( 0 , 1 ) × ( X max , j − X min , j ) X_{i,j} = X_{\min,j} + rand(0,1) \times (X_{\max,j} - X_{\min,j}) Xi,j=Xmin,j+rand(0,1)×(Xmax,j−Xmin,j)
其中, X i , j X_{i,j} Xi,j 表示第 i 个个体的第 j 维位置, X min , j X_{\min,j} Xmin,j 和 X max , j X_{\max,j} Xmax,j 分别为第 j 维的最小和最大边界,rand(0,1) 为 [0,1) 区间的随机数。
位置更新模型
-
上蜃景策略位置更新:当满足入射光在水平基准面法线的右侧,且 β < α < π/2 时,海市蜃楼初始位置更新公式为:
X i t + 1 = X i t + λ ⋅ f ( X i t ) − f ( X best t ) ∥ X i t − X best t ∥ ⋅ ( X i t − X best t ) X_i^{t+1} = X_i^t + \lambda \cdot \frac{f(X_i^t) - f(X_{\text{best}}^t)}{\|X_i^t - X_{\text{best}}^t\|} \cdot (X_i^t - X_{\text{best}}^t) Xit+1=Xit+λ⋅∥Xit−Xbestt∥f(Xit)−f(Xbestt)⋅(Xit−Xbestt)
其中, X i t X_i^t Xit 为第 t 代第 i 个个体的位置, X best t X_{\text{best}}^t Xbestt 为第 t 代种群最优个体位置, λ \lambda λ 为步长因子,f 为适应度函数。 -
下蜃景策略位置更新:
- 如果当前个体不是种群最优个体:
X i t + 1 = X i t + β ⋅ f ( X i t ) ∥ X i t − X best t ∥ ⋅ ( X best t − X i t ) X_i^{t+1} = X_i^t + \beta \cdot \frac{f(X_i^t)}{\|X_i^t - X_{\text{best}}^t\|} \cdot (X_{\text{best}}^t - X_i^t) Xit+1=Xit+β⋅∥Xit−Xbestt∥f(Xit)⋅(Xbestt−Xit) - 如果当前个体是种群最优个体:
X i t + 1 = X i t + γ ⋅ f ( X i t ) ∥ X i t − X mean t ∥ ⋅ ( X mean t − X i t ) X_i^{t+1} = X_i^t + \gamma \cdot \frac{f(X_i^t)}{\|X_i^t - X_{\text{mean}}^t\|} \cdot (X_{\text{mean}}^t - X_i^t) Xit+1=Xit+γ⋅∥Xit−Xmeant∥f(Xit)⋅(Xmeant−Xit)
其中, β \beta β、 γ \gamma γ 为控制参数, X mean t X_{\text{mean}}^t Xmeant 为第 t 代种群个体位置的均值。
- 如果当前个体不是种群最优个体:
算法步骤
- 初始化:与其他群体优化算法一样,MSO采用随机初始化的方式,生成一定数量的候选解(个体),构成初始种群。
- 上蜃景策略:该策略具有全局探索能力,通过模拟海市蜃楼中光线在不同气象条件下的折射路径,使个体能够在全球范围内进行搜索,避免陷入局部最优解。具体来说,根据入射光的位置和角度,分为以下几种情况:
- 当入射光在水平基准线的左边时,个体的位置更新遵循特定的折射规律。
- 当入射光位于水平基准面法线右侧且满足β < α < π/2时,个体的位置更新公式会根据折射原理进行推导,以实现全局探索。
- 下蜃景策略:该策略具有局部开发能力,能够对当前解的邻域进行精细搜索,提高解的质量。下蜃景策略主要分为两种情况:
- 如果当前个体不是种群的最优个体,其位置更新会参考种群中更优个体的信息,向更优区域靠近。
- 如果当前个体是种群的最优个体,则在较小范围内进行局部扰动,进一步优化自身位置,以期找到更精确的最优解。
- 迭代更新:在每次迭代中,根据上蜃景和下蜃景策略更新个体位置后,计算每个个体的适应度值,并更新种群的最优解。重复这一过程,直到满足预设的终止条件(如最大迭代次数或适应度精度要求)。
算法优势
- 全局与局部搜索平衡:通过上蜃景策略的全局探索和下蜃景策略的局部开发,MSO算法能够在优化过程中兼顾全局搜索和局部搜索,有效避免过早收敛到局部最优解,提高寻找全局最优解的能力。
- 较强的适应性:适用于多种类型的优化问题,包括无约束优化、带约束优化以及实际工程设计问题等。
- 高效的优化性能:在多个标准测试函数和实际应用问题上进行了验证,MSO算法均表现出较强的竞争力,能够快速收敛到高质量的解。
参考文献
[1]Jiahao He, Shijie Zhao, Jiayi Ding, Yiming Wang,Mirage search optimization: Application to path planning and engineering design problems,Advances in Engineering Software, Volume 203, 2025, 103883, https://doi.org/10.1016/j.advengsoft.2025.103883.
二、无人机(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个无人机的总成本之和。
%% 第一个无人机 起始点
start_location = [120;200;100];
end_location = [800;800;150];
ModelUAV(1).model.start=start_location;
ModelUAV(1).model.end=end_location;
%% 第二个无人机 起始点
start_location = [400;100;100];
end_location = [900;600;150];
ModelUAV(2).model.start=start_location;
ModelUAV(2).model.end=end_location;
%% 第三个无人机 起始点
start_location = [200;150;150];
end_location =[850;750;150];
ModelUAV(3).model.start=start_location;
ModelUAV(3).model.end=end_location;
%% 第四个无人机 起始点
start_location = [100;100;150];
end_location = [800;730;150];
ModelUAV(4).model.start=start_location;
ModelUAV(4).model.end=end_location;
%% 第5个无人机 起始点
start_location = [500;100;130];
end_location = [850;650;150];
ModelUAV(5).model.start=start_location;
ModelUAV(5).model.end=end_location;
figure
plot(Convergence_curve,'LineWidth',2)
xlabel('Iteration');
ylabel('Best Cost');
grid on;
5个无人机: