2025最新群智能优化算法:海市蜃楼搜索优化(Mirage Search Optimization, MSO)算法求解23个经典函数测试集,MATLAB

一、海市蜃楼搜索优化算法

海市蜃楼搜索优化(Mirage Search Optimization, MSO)算法是2025年提出的一种基于海市蜃楼物理现象的元启发式优化算法,于2025年2月在线发表在JCR一区、中科院2区SCI期刊《Advances in Engineering Software》上。海市蜃楼是一种常见的物理现象,其形成与气象和地理因素密切相关。太阳使地面温度上升,形成温度梯度,进而导致大气密度产生显著差异,造成大气中折射率的分层。光在大气中被折射,但大脑认为光是沿直线传播的,因此人们看到了物体的虚拟图像。MSO算法正是基于这一物理现象,通过模拟海市蜃楼的形成原理,设计了上蜃景策略和下蜃景策略,分别用于全局探索和局部开发,以实现对复杂优化问题的有效求解。

算法原理

海市蜃楼是一种光学现象,其形成与气象和地理因素密切相关。太阳使地面温度上升,形成温度梯度,进而导致大气密度差异和折射率分层。光在大气中传播时发生折射,而人脑认为光沿直线传播,从而形成虚拟图像。MSO 算法正是基于这一物理现象,通过模拟光的折射和虚拟图像的形成,设计了两种更新策略来优化种群的位置。

算法策略

  1. 上蜃景策略:主要用于全局探索。当入射光在水平基准线的左边,或位于水平基准面法线右侧且满足 β < α < π/2 时,通过特定的公式更新个体位置,扩大搜索范围,避免陷入局部最优。
  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) 区间的随机数。

位置更新模型
  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 为适应度函数。

  2. 下蜃景策略位置更新

    • 如果当前个体不是种群最优个体:
      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 代种群个体位置的均值。

算法步骤

  1. 初始化:与其他群体优化算法一样,MSO采用随机初始化的方式,生成一定数量的候选解(个体),构成初始种群。
  2. 上蜃景策略 :该策略具有全局探索能力,通过模拟海市蜃楼中光线在不同气象条件下的折射路径,使个体能够在全球范围内进行搜索,避免陷入局部最优解。具体来说,根据入射光的位置和角度,分为以下几种情况:
    • 当入射光在水平基准线的左边时,个体的位置更新遵循特定的折射规律。
    • 当入射光位于水平基准面法线右侧且满足β < α < π/2时,个体的位置更新公式会根据折射原理进行推导,以实现全局探索。
  3. 下蜃景策略 :该策略具有局部开发能力,能够对当前解的邻域进行精细搜索,提高解的质量。下蜃景策略主要分为两种情况:
    • 如果当前个体不是种群的最优个体,其位置更新会参考种群中更优个体的信息,向更优区域靠近。
    • 如果当前个体是种群的最优个体,则在较小范围内进行局部扰动,进一步优化自身位置,以期找到更精确的最优解。
  4. 迭代更新:在每次迭代中,根据上蜃景和下蜃景策略更新个体位置后,计算每个个体的适应度值,并更新种群的最优解。重复这一过程,直到满足预设的终止条件(如最大迭代次数或适应度精度要求)。

算法优势

  • 全局与局部搜索平衡:通过上蜃景策略的全局探索和下蜃景策略的局部开发,MSO算法能够在优化过程中兼顾全局搜索和局部搜索,有效避免过早收敛到局部最优解,提高寻找全局最优解的能力。
  • 较强的适应性:适用于多种类型的优化问题,包括无约束优化、带约束优化以及实际工程设计问题等。
  • 高效的优化性能:在多个标准测试函数和实际应用问题上进行了验证,MSO算法均表现出较强的竞争力,能够快速收敛到高质量的解。

参考文献

1Jiahao 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.

二、23个函数介绍

参考文献:

1 Yao X, Liu Y, Lin G M. Evolutionary programming made fasterJ. IEEE transactions on evolutionary computation, 1999, 3(2):82-102.

三、部分代码及结果

dart 复制代码
clear;
clc;
close all;
warning off all;

SearchAgents_no=50;    %Number of search solutions
Max_iteration=500;    %Maximum number of iterations

Func_name='F1'; % Name of the test function

% Load details of the selected benchmark function
[lb,ub,dim,fobj]=Get_F(Func_name); 

tic;
[Best_score,Best_pos,cg_curve]=(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); 
tend=toc;

% figure('Position',[500 500 901 345])
%Draw search space
subplot(1,2,1);
func_plot(Func_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Func_name,'( x_1 , x_2 )'])

%Draw objective space
subplot(1,2,2);
semilogy(cg_curve,'Color','m',LineWidth=2.5)
title(Func_name)

% title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');

axis tight
grid on
box on
legend('')

display(['The running time is:', num2str(tend)]);
display(['The best fitness is:', num2str(Best_score)]);
display(['The best position is: ', num2str(Best_pos)]);



四、完整MATLAB代码见下方名片

相关推荐
未知违规用户11 分钟前
大模型项目:RAG项目实战与FlagEmbedding模型
人工智能·windows·python·深度学习
蓝狐社20 分钟前
宁德时代不是电池厂,是下棋的
人工智能
李燚6 小时前
RAG 流水线设计:Eino 的 Loader → Transformer → Indexer → Retriever(第60篇-E46)
人工智能·深度学习·transformer·agent·rag·aiagent·eino
码农学院7 小时前
Vue3小程序开发实战:服装鞋帽箱包行业库存同步方案
人工智能
To_OC7 小时前
跟 AI 写代码越写越乱?我靠这套「Vibe Coding」思路彻底治好了幻觉屎山
人工智能·agent·vibecoding
IT小盘7 小时前
03-大模型API不只是发送Prompt-流式输出超时重试与异常处理
人工智能·python·prompt
深圳慧闻智造技术有限公司7 小时前
机器人减速机壳体加工精度要求的四大核心维度分析
人工智能·机器人·机器人壳体加工
冬奇Lab7 小时前
AI 评测系列(07):自定义 Benchmark——从业务场景到评测集
人工智能
骏晔科技DreamLNK8 小时前
国产蓝牙模块哪个品牌好?骏晔科技 7 款主流型号横向对比
人工智能·科技
用户938515635078 小时前
从零搭建 AI 日记助手:用 Milvus 向量数据库 + RAG 让机器读懂你的每一天
javascript·人工智能·全栈