角蜥蜴优化算法(Horned lizard optimizer algorithm,HLOA)是一种新型群智能优化算法,该算法在数学上模拟了角蜥蜴隐密,皮肤变黑或变亮,血液喷射和移动-逃跑等生物行为,在隐蔽行为中,蜥蜴通过变成半透明来改变自己的颜色,以避免被捕食者发现。该算法具有进化能力强、搜索速度快、寻优能力强的特点。该成果于2024年发表在知名SCI期刊JCR1区Artificial Intelligence Review上。
HLOA算法灵感来自于有角蜥蜴爬行动物如何隐藏和保护自己免受捕食者的攻击。
角蜥蜴可以使皮肤变亮或变暗,这取决于它是否需要减少或增加其太阳能热增益。皮肤变暗或变亮策略通过包括影响这些皮肤颜色变化的刺激激素黑素细胞速率(MHS)来建模。此外,移动规避策略也被数学描述。角蜥蜴的射血防御机制,被描述为一个抛射运动。这些策略平衡了解决方案空间上局部和全局搜索的开发和探索机制。
1、算法原理
策略1:隐藏行为
隐化是指生物体通过模仿环境的特征,如颜色和纹理,甚至变成半透明,使捕食者或猎物难以发现或识别它们,从而与周围环境融为一体的过程。在Lab系统中,L表示光度,a和b*为色坐标,公式如下:
在LCh系统中,L表示亮度,C表示色彩强度,h*表示色相角(一种角度测量)。直角坐标到极坐标的变换如式所示:
C *和h值分别对应色度(或饱和度)和色调。h为色相角,取值范围为0°~ 360°。逆公式如下:
设有序对(a∗p, b∗q)和(a∗r, b∗s)是任意两种颜色,且p≠q≠r≠s。因此,任意两种新颜色,例如colorVar1和colorVar2,都可以通过如下的算术运算得到,如下式所示:
这些颜色可以用一个方程表示,如下所示:
用反比形式表示为:
色相满足HP≠hq≠hr≠hs,色度c1≠c2。最后对c1和c2进行因式分解,如下式所示。
下面是包含色坐标算术运算的方程:
Мах
式中为第代在解搜索空间中的新搜索代理位置(角蜥),为第代的最佳搜索代理;、、、是1到搜索agent最大数之间生成的整数随机数,;,,,分别为选择的第、、、个搜索代理;Max_iter表示最大迭代次数(代)。
策略2:皮肤变黑或变亮
角蜥蜴的皮肤可以变浅或变暗,这取决于它是否需要减少或增加太阳热增益,角蜥皮肤的颜色变亮由下式表示:
皮肤变黑策略的公式如下:
其中Light1和Light2是Lightening1(0值)和Lightening2(0.4046661值)之间生成的随机数。类似地,Dark1和Dark2是在Darkening1(0.5440510值)和Darkening2(1值)之间生成的随机数。
此外,对于两个方程,和→分别是找到的最好和最差的搜索代理。R1、r2、r3、r4是1到搜索agent最大数之间生成的整数随机数,R1≠r2≠r3≠r4;,,,是选择的第r1, r2, r3, r4个搜索代理。
策略3:喷血
蜥蜴通过从眼睛里喷射血液来抵御敌人,喷血防御机制可以表示为抛射运动。

在水平方向上,血液的喷射描述了均匀的线运动,因此其运动方程将由下式给出:
在垂直方向上,血液的喷射描述了均匀加速的直线运动,如下所示:
血液喷射矢量方程、位置和速度由方程表示。分别由下式所示:
最后,轨迹可以表示如下:
Мах
其中xi(t + 1)是新的搜索代理位置(角蜥蜴)在第t+1代的解搜索空间中,xbest(t)是找到的最佳搜索代理,当前搜索代理是xi(t),Max_iter表示迭代的最大次数,t是当前迭代,g是重力加速度。
策略4:移动以逃避
在这种策略中,角蜥蜴在环境中随机快速移动以逃避捕食者。在这个过程中,xbest(t)会在解搜索空间中产生位移(全局运动)。
其中xi(t+1)是第t+1代的解搜索空间中的新搜索代理位置(有角蜥蜴),xbest(t)是第t代的最佳搜索代理,walk是在-1和1之间生成的随机数,nk是从标准柯西分布生成的随机数,平均值和nk分别设置为0和1。xi(t)是第t代中当前的第i个搜索代理。
策略5:促黑素细胞激素比率
角蜥蜴可以使皮肤变亮或变暗,这取决于它是否需要减少或增加其太阳能热增益。在角蜥蜴皮肤上观察到的颜色的快速变化可以归因于温度对黑素细胞刺激激素(MSH)的影响。角蜥蜴的黑色素细胞比率值定义为以下等式:
2、结果展示





3、MATLAB核心代码
%% 淘个代码 %%
% 微信公众号搜索:淘个代码,获取更多代码
% 角蜥蜴优化算法(HLOA)
function [vMin,theBestVct,Convergence_curve]=HLOA(SearchAgents_no,Max_iter,lb,ub,dim,fobj)
Positions=initialization(SearchAgents_no,dim,ub,lb);
for i=1:size(Positions,1)
Fitness(i)=fobj(Positions(i,:)); % get fitness
end
[vMin minIdx]= min(Fitness); % the min fitness value vMin and the position minIdx
theBestVct= Positions(minIdx,:); % the best vector
[vMax maxIdx]= max(Fitness); % the max fitness value vMax and the position maxIdx
Convergence_curve=zeros(1,Max_iter);
Convergence_curve(1)= vMin;
alphaMelanophore= alpha_melanophore(Fitness,vMin,vMax);
t=0;% Loop counter
% Main
for t=1:Max_iter
for r=1:SearchAgents_no
if( 0.5 < rand) % se mimetiza
v(r,:)= mimicry(theBestVct, Positions, Max_iter, SearchAgents_no, t);
else
if(mod(t,2))
v(r,:)= shootBloodstream(theBestVct, Positions(r,:), Max_iter,t);
else
v(r,:)= randomWalk(theBestVct,Positions(r,:));
end
end
Positions(maxIdx,:)= Skin_darkening_or_lightening(theBestVct, Positions, SearchAgents_no);
if (alphaMelanophore(r) <= 0.3)
v(r,:)= remplaceSearchAgent(theBestVct, Positions,SearchAgents_no);
end
%
% Return back the search agents that go beyond the boundaries of the search space
v(r,:)=checkBoundaries(v(r,:), lb, ub);
% Evaluate new solutions
Fnew= fobj(v(r,:));
% Update if the solution improves
if Fnew <= Fitness(r);
Positions(r,:)= v(r,:);
Fitness(r)= Fnew;
end
if Fnew <= vMin
theBestVct= v(r,:);
vMin= Fnew;
end
end
%update max and alpha-melanophore
[vMax maxIdx]= max(Fitness);
alphaMelanophore = alpha_melanophore(Fitness,vMin,vMax);
Convergence_curve(t)= vMin;
end
%***********************************[End HLOA Algorithm]
参考文献
Peraza-Vázquez H, Peña-Delgado A, Merino-Treviño M, et al. A novel metaheuristic inspired by horned lizard defense tactics[J]. Artificial Intelligence Review, 2024, 57(3): 59.
完整代码获取方式:后台回复关键字:
TGDM866