人工旅鼠算法(Artificial lemming algorithm,ALA)是发表在中科院二区期刊“ARTIFICIAL INTELLIGENCE REVIEW”(IF:11.7)的2025年智能优化算法
01.引言
随着信息技术与工程科学的快速发展,现代优化问题呈现出高维、非线性和强约束等复杂特征。传统的元启发式算法(如粒子群优化、遗传算法等)在处理此类问题时,常因早熟收敛、局部搜索能力不足或全局探索效率低而面临严峻挑战。尤其在动态环境、多模态或非凸问题中,算法如何有效平衡“探索”与“利用”这一核心矛盾,成为提升优化性能的关键瓶颈。现有研究虽通过参数自适应、混合策略等方式部分缓解了这一问题,但在动态调整搜索行为、避免局部停滞以及适应复杂搜索空间方面仍存在显著改进空间。为此,亟需从自然界的生物行为中汲取灵感,设计更具鲁棒性和自适应能力的优化框架。
受旅鼠(Lemmings)群体行为的启发,提出一种新型仿生优化算法——旅鼠优化算法(ALA)。旅鼠在迁徙、挖洞、觅食和逃避捕食者等自然行为中,展现出独特的群体协作与自适应机制:长距离迁徙驱动种群广泛探索新区域,挖洞行为帮助个体在局部挖掘潜在资源,觅食策略提升局部资源利用率,而逃避捕食者则通过随机扰动增强群体对威胁的响应能力。这些行为特征与优化问题中“探索-利用”的动态平衡需求高度契合。基于此,ALA算法通过数学建模将旅鼠行为转化为四种协同搜索算子,并引入能量递减机制动态调控算子的选择概率,从而在迭代过程中逐步从全局粗粒度搜索过渡到局部精细化优化。实验表明,ALA在CEC2017/CEC2022基准函数测试中显著优于主流对比算法,其收敛速度、精度和稳定性均表现出优越性。此外,算法在光伏参数辨识、PID控制器调谐等工程优化任务中的成功应用,进一步验证了其解决实际复杂问题的潜力。ALA的提出不仅为仿生优化领域提供了新的研究视角,也为工业智能化与复杂系统设计提供了可靠的工具支撑。
02.优化算法的流程
人工旅鼠算法(Artificial lemming algorithm,ALA)源于旅鼠。它们的主要习性包括长途迁徙、挖洞、觅食和躲避天敌。旅鼠及其独特的行为可以在自然界中观察到。 每种行为的详细说明如下:
第一种行为,即长途迁移,通常发生在人口过剩导致食物短缺时。这种迁徙并不是刻意寻找新的栖息地,而是自然的种群波动。当旅鼠数量激增时,一些旅鼠开始迁移到新的领地,以寻找更多的资源和空间。
第二种行为,挖洞,是旅鼠生存和繁殖的关键策略。旅鼠是出色的挖掘者,它们使用强壮的前肢和锋利的爪子在地下挖掘复杂的隧道和洞穴系统。这些隧道系统为旅鼠提供了安全的栖息地,帮助它们避开捕食者和极端天气条件。此外,这种行为使旅鼠能够在安全的地下环境中储存食物并繁殖后代。
第三种行为是觅食。作为食草动物,旅鼠主要以草、种子、浆果和植物根为食。它们在地表或地下觅食,利用敏锐的嗅觉和听觉来寻找食物。在冬天,旅鼠会在雪地里挖隧道寻找食物。此外,旅鼠还储存食物以备不时之需。旅鼠的觅食行为使它们能够适应各种环境,并在自然生态系统中发挥至关重要的作用。通过觅食,旅鼠获得了生存和繁殖所需的营养和能量。
第四种行为是躲避天敌。旅鼠拥有敏锐的感官,使它们能够及时发现接近的捕食者。一旦发现危险,旅鼠会立即发出警告并提醒它们的同伴躲藏或逃跑以避难。旅鼠还使用地下隧道和筑巢系统作为庇护所。当旅鼠在地面上活动并遇到捕食者时,它们会迅速躲在地下洞穴中。这种地下习性为旅鼠提供了一种天然的防御机制。此外,旅鼠的物理结构适合快速移动,四肢短而宽,爪子宽阔,使它们能够非常敏捷地在地面上奔跑。当被捕食者追赶时,旅鼠会利用这种奔跑能力逃离危险区域。
1.初始化
ALA 是一种基于群体的算法,需要在进入迭代过程之前初始化所有搜索代理的位置。所有初始候选解的集合是一个矩阵,由给定问题的上限和下限之间的 N(群体大小)行和 Dim(维度数)列组成,如方程 所示。每次迭代中的最佳位置被视为最优解或几乎是迄今为止获得的最优解。决策变量通过方程计算每个维度。
2.行为建模与迭代更新
(1)长距离迁移(探索)
模拟种群扩散,结合布朗运动与随机方向调整,公式:
通过布朗运动(BM)和随机向量R增强全局搜索能力。
(2)挖洞(勘探)
基于当前最优解与随机个体扰动更新位置,公式:
引入周期性扰动(L)避免局部停滞。
(3) 觅食(剥削)
螺旋式局部搜索,公式:
螺旋半径由最优解与当前位置的距离动态调整。
(4)躲避天敌(剥削)
在最后阶段,建模侧重于旅鼠在遇到危险时的避开和保护行为。洞穴是旅鼠的避难所。一旦发现敌人,旅鼠就会利用它们非凡的奔跑能力逃回洞穴。同时,旅鼠还会做出欺骗性的动作来逃避捕食者的追捕。
结合Levy飞行增强局部逃逸能力,公式:
3.能量调控机制
在 ALA 中,这四种搜索策略与旅鼠本身的能级密切相关。在初始阶段,旅鼠经常参与勘探过程以寻找有前途的区域,而在搜索的后期阶段,它们倾向于实施局部开发以获得卓越的全局最优解决方案。为了在勘探和开采之间保持稳健的平衡,我们设计了一个能量因子,使其在迭代过程中逐渐减少。当旅鼠有足够的能量时,它们会选择性地迁移或挖洞;否则,它们会觅食并躲避捕食者。能量因子的计算公式如下:
当 E(t)>1 时执行探索行为(迁移或挖洞),否则执行利用行为(觅食或逃避)。
4.终止与输出
达到最大迭代次数后,输出全局最优解。
ALA通过生物行为模拟与动态能量调控,实现了探索与利用的高效平衡,在复杂优化问题中展现出优异的收敛速度、精度和鲁棒性。
算法伪代码:
算法流程图:
03.论文中算法对比图
04.本代码效果图
05.部分代码
function [Score,Position,Convergence_curve]=ALA(N,Max_iter,lb,ub,dim,fobj)
tic
X=initialization(N,dim,ub,lb);% Initialize population
Position=zeros(1,dim); % Best position
Score=inf; %Best score (initially infinite)
fitness=zeros(1,size(X,1));% Fitness of each individual
Convergence_curve=[];% Store convergence information
vec_flag=[1,-1]; % Directional flag
%% Record the initial optimal solution and fitness
for i=1:size(X,1)
fitness(1,i)=fobj(X(i,:));
if fitness(1,i)<Score
Position=X(i,:); Score=fitness(1,i);
end
end
Iter=1; %Iteration number
%% Main optimization loop
while Iter<=Max_iter
RB=randn(N,dim); % Brownian motion
F=vec_flag(floor(2*rand()+1)); % Random directional flag
theta=2*atan(1-Iter/Max_iter); % Time-varying parameter
for i=1:N
E=2*log(1/rand)*theta;
if E>1
if rand<0.3
r1 = 2 * rand(1,dim) - 1;
Xnew(i,:)= Position+F.*RB(i,:).*(r1.*(Position-X(i,:))+(1-r1).*(X(i,:)-X(randi(N),:)));
else
r2 = rand ()* (1 + sin(0.5 * Iter));
Xnew(i,:)= X(i,:)+ F.* r2*(Position-X(randi(N),:));
end
else
if rand<0.5
radius = sqrt(sum((Position-X(i, :)).^2));
r3=rand();
spiral=radius*(sin(2*pi*r3)+cos(2*pi*r3));
Xnew(i,:) =Position + F.* X(i,:).*spiral*rand;
else
G=2*(sign(rand-0.5))*(1-Iter/Max_iter);
Xnew(i,:) = Position + F.* G*Levy(dim).* (Position - X(i,:)) ;
end
end
end
%% Boundary check and evaluation
for i=1:size(X,1)
Flag4ub=Xnew(i,:)>ub;
Flag4lb=Xnew(i,:)<lb;
Xnew(i,:)=(Xnew(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb; % Boundary correction
newPopfit=fobj(Xnew(i,:)); % Evaluate new solution
if newPopfit<fitness(i)
X(i,:)=Xnew(i,:);
fitness(1,i)=newPopfit;
end
if fitness(1,i)<Score
Position=X(i,:);
Score=fitness(1,i);
end
end
%% Record convergence curve
Convergence_curve(Iter)=Score;
Iter=Iter+1;
end
end
function o=Levy(d)
beta=1.5;
sigma=(gamma(1+beta)*sin(pi*beta/2)/(gamma((1+beta)/2)*beta*2^((beta-1)/2)))^(1/beta);
u=randn(1,d)*sigma;v=randn(1,d);step=u./abs(v).^(1/beta);
o=step;
end
✅作者简介:信号处理方向在校博士研究生,目前专研于MATLAB算法及科学绘图等,熟知各种信号分解算法、神经网络时序、回归和分类预测算法、数据拟合算法以及滤波算法。提供一个可以相互学习相互进步的平台
🚩技术信仰:知行合一,让每一行代码都成为解决问题的利器
🔍后台私信备注个人需求(比如ALA-BP)定制以下ALA算法优化模型(看到秒回):
1.回归/时序/分类预测类:BP、RF、XGBoost、RBF、LSSVM、SVM、ELM、DELM、ESN、RELM等等均可,优化算法优化BP为例,可达到以下效果:
2.分解类:EEMD、VMD、REMD、CEEMDAN、ICEEMDAN、SVMD等分解模型均可,优化算法优化VMD/ICEEMDAN为例,可达到以下效果:
(2)基于改进天鹰优化算法(IAO)优化ICEEMDAN参数
3.去噪算法算法类:VMD/CEEMDAN/ICEEMDAN/SVMD+小波阈值/SVD去噪,可在去噪算法前加智能优化算法优化参数以VMD-WT/SVD为例,可达到以下效果: