海象优化算法(WaOA)Matlab
- 关注博主学习更多内容
- 关注v xGZH:多目标优化与学习Lab
参考文献
标题:A new bio-inspired metaheuristic algorithm for solving optimization problems based on 海象behavior
作者:Pavel Trojovský; Mohammad Dehghani
出版年份:2023-05-31\ 影响因子:4.6
期刊:Scientific Reports
📜 摘要
本文介绍了一种新的仿生元启发式算法- - Walrus优化算法( WaOA ),该算法模仿自然界中的Walrus行为。WaOA设计的基本灵感来自于捕食者的取食、迁徙、逃跑和打斗过程。在探索、迁移和利用三个阶段对WaOA的实现步骤进行了数学建模。68个标准测试函数包括单峰、高维多峰、固定维多峰、CEC 2015测试集和CEC 2017测试集,用于评估WaOA在优化应用中的性能。单峰函数的优化结果说明了WaOA的开发能力,多峰函数的优化结果说明了WaOA的探索能力,CEC 2015和CEC 2017测试集的优化结果说明了WaOA在搜索过程中平衡探索和利用的能力较高。将WaOA的性能与十个著名的元启发式算法的结果进行了比较。仿真结果表明,WaOA由于其出色的平衡探索和利用的能力,以及能够为大多数基准函数提供出色的结果,与其他可比算法相比,表现出了显著的竞争优势和卓越的性能。此外,利用WaOA求解CEC 2011测试集中的4个设计工程问题和22个真实世界优化问题,表明了WaOA在真实世界应用中的明显有效性。
🔬 创新
- 海象的自然行为启发了WaOA在迁徙、逃离和与捕食者战斗时的取食设计。
- WaOA分为三个阶段进行数学建模:探索、开发和迁移。
- 在各类单峰、多峰、CEC 2015测试集和CEC 2017测试集的68个标准目标函数上测试了WaOA处理优化问题的效率。
- 将WaOA的性能与十个著名的元启发式算法的性能进行了比较。
- WaOA在实际应用中的成功受到了来自CEC 2011测试集的4个工程设计问题和22个实际优化问题的挑战。
🚩 方法
WaOA是一种基于种群的元启发式算法,其中种群中的搜索者成员是Walruss。在WaOA中,每个海象代表优化问题的一个候选解。因此,每个walrus在搜索空间中的位置决定了问题变量的候选值。因此,每个海象都是一个向量,海象的种群可以用所谓的种群矩阵进行数学建模。在WaOA实施之初,随机初始化Walruss的种群。该WaOA种群矩阵由式(1)确定。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zcBoiVSu-1692694499274)(attachments/ATGLN4IM.png)]
其中 X X X 为Walrus的总体, x i x_i xi 为第i个Walrus (候选解), x i x_i xi , j j j 为第i个Walrus建议的第j个决策变量的值,N为Walrus的个数,m为决策变量的个数。
WaOA的数学建模
第一阶段:投喂策略(探索)。海象的食性多样,取食海参、被囊类、软珊瑚、管状蠕虫、虾和各种软体动物等60多种海洋生物。然而,海象更喜欢底栖双壳类软体动物,特别是蛤蜊,它通过在周围放牧来觅食活力的翻转运动和易感的弧菌58来寻找和检测食物。在这个搜索海底,用其有过程中,最强的狼用最高的狼来引导群体中的其他狼去寻找食物。海象中长牙的长度与候选解的目标函数值的质量相似。因此,对于目标函数具有最佳值的最佳候选解被认为是组内最强的Walrus。海象的这种搜索行为导致了搜索空间的不同扫描区域,提高了WaOA在全局搜索中的探索能力。利用式( 3 )和式( 4 )对海象位置更新过程进行数学建模,基于群体中最重要成员指导下的进给机构进行建模。在此过程中,首先根据( 3 )式生成海象的新位置。如果改进了目标函数的值,则用新的位置代替原来的位置
其中,
x
i
,
j
p
1
x^{p1}_{i,j}
xi,jp1是基于第1阶段生成的第
i
i
i 个Walrus的新位置,
x
i
p
1
x^{p1}_{i}
xip1是它的第
j
j
j维,
F
i
p
1
F^{p1}_{i}
Fip1是它的目标函数值,
r
a
n
d
i
,
j
rand_{i,j}
randi,j是区间[ 0、1 ]上的随机数,SW是被认为是最强Walrus的最佳候选解,
I
i
,
j
I_{i,j}
Ii,j是在1或2之间随机选择的整数.
I
i
,
j
I_{i,j}
Ii,j用于增加算法的探索能力,因此,如果选择等于2,则与1的值相比,它会产生更显著和更广泛的变化,这是这种位移的正常状态。这些条件有助于提高算法跳出局部最优的全局搜索能力,发现问题求解空间中的原始最优区域。
第二阶段:迁移。海象的自然行为之一是由于夏末空气的变暖而迁移到露头或岩质海滩。在WaOA中,这种迁移过程被用来指导搜索空间中的Walruss,以发现搜索空间中的合适区域。使用( 5 )和( 6 )对这种行为机制进行了数学建模。该建模假设每个海象在搜索空间的另一个区域迁移到另一个海象(随机选择)的位置。因此,所提出的新位置首先是基于( 5 )生成的。然后根据( 6 ),如果这个新的位置改进了目标函数的值,那么它就取代了walrus之前的位置。
其中,
X
i
P
2
X^{P2}_{i}
XiP2是第
i
i
i个海象在第2阶段的新生成位置,
x
i
,
j
P
2
x^{P2}_{i,j}
xi,jP2是它的第
j
j
j维,
F
i
P
2
F^{P2}_i
FiP2是它的目标函数值,
X
k
X_k
Xk,
k
∈
1
,
2
,
.
.
,
N
k \in { 1,2,..,N }
k∈1,2,..,N且
k
≠
i
k \ne i
k=i,是选择星球将第
i
i
i个星球向它迁移的位置,
x
k
,
j
x_{k,j}
xk,j是它的第j维,
F
k
F_k
Fk是它的目标函数值。
第三阶段:逃避与反抗捕食者(剥削)。海象经常受到北极熊和虎鲸的袭击。逃避和战斗这些捕食者的策略导致狼群在其所处位置附近的位置发生变化。模拟海象的这种自然行为,提高了WaOA在候选解周围问题求解空间局部搜索中的利用能力。由于这一过程发生在每个海象的位置附近,因此在WaOA设计中假设这一范围的海象位置变化发生在相应的以海象为中心的具有一定半径的邻域内。考虑到在算法的初始迭代中,为了发现搜索空间中的最优区域,优先进行全局搜索,该邻域的半径被认为是可变的,因此在算法的迭代过程中,它首先被设置为最高值,然后变得更小。为此,在WaOA的这一阶段使用了局部的下界/上界,以创建具有算法重复的可变半径。为了模拟这种现象,在WaOA算法中,假设在每个Walrus周围有一个邻域,首先利用( 7 )和( 8 )在这个邻域内随机产生一个新的位置,然后如果改进目标函数的值,根据( 9 ),这个新的位置将取代之前的位置。
式中:
X
i
P
3
X^{P3}_i
XiP3 为第
i
i
i个海象基于第3阶段的新生成位置,
x
i
P
3
x^{P3}_{i}
xiP3为其第
j
j
j 维,
F
i
P
3
F^{P3}_i
FiP3为其目标函数值,
t
t
t为迭代轮廓线,
l
b
j
lb_j
lbj和
u
b
j
ub_j
ubj分别为第j个变量的下界和上界,
l
b
l
o
c
a
l
,
j
t
lb^{t}_{local,j}
lblocal,jt和
u
b
l
o
c
a
l
,
j
t
ub^{t}_{local,j}
ublocal,jt分别为第j个变量允许的局部下界和局部上界,用于模拟候选解邻域内的局部搜索。
算法流程
结果
📌 Discussin & Conclusion & Limitation
本研究基于海象的自然行为,开发了一种新的生物启发元启发式算法- -海象优化算法( Walrus Optimization Algorithm,WaOA )。觅食、逃避、与捕食者作斗争、迁徙是WaOA设计的主要灵感来源。因此,对WaOA理论进行了解释,并将其数学建模分为3个阶段:( i )取食策略,( ii )迁徙,( iii )逃避和对抗捕食者。采用单峰、多峰、CEC 2015测试集、CEC 2017测试集等多种类型的68个标准测试函数,分析WaOA提供解决方案的性能。这些测试函数的信息详见附录和表A1至A5。单峰函数的优化结果表明,WaOA在局部搜索中具有很强的收敛于全局最优的能力。多峰函数的优化结果表明WaOA exp具有较高的寻优能力。
🔬 源代码
function[Best_score,Best_pos,WOA_curve]=WOA(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness)
lowerbound=ones(1,dimension).*(lowerbound); % Lower limit for variables
upperbound=ones(1,dimension).*(upperbound); % Upper limit for variables
%% INITIALIZATION
for i=1:dimension
X(:,i) = lowerbound(i)+rand(SearchAgents,1).*(upperbound(i) - lowerbound(i)); % Initial population
end
for i =1:SearchAgents
L=X(i,:);
fit(i)=fitness(L);
end
%%
for t=1:Max_iterations
%% update the best condidate solution
[best , location]=min(fit);
if t==1
Xbest=X(location,:); % Optimal location
fbest=best; % The optimization objective function
elseif best<fbest
fbest=best;
Xbest=X(location,:);
end
SW=Xbest;% strongest walrus with best value for objective function
%%
for i=1:SearchAgents
%% PHASE 1: FEEDING STRATEGY (EXPLORATION)
I=round(1+rand(1,1));
X\_P1(i,:)=X(i,:)+rand(1,dimension) .\* (SW-I.\*X(i,:));% Eq(3)
X\_P1(i,:) = max(X\_P1(i,:),lowerbound);X\_P1(i,:) = min(X\_P1(i,:),upperbound);
% update position based on Eq (4)
L=X\_P1(i,:);
F\_P1=fitness(L);
if(F\_P1\<fit(i))
X(i,:) = X\_P1(i,:);
fit(i) = F\_P1;
end
%% END PHASE 1: FEEDING STRATEGY (EXPLORATION)
%%
%% PHASE 2: MIGRATION
I=round(1+rand(1,1));
K=randperm(SearchAgents);K(K==i)=\[];%Eq(5)
X\_K=X(K(1),:);%Eq(5)
F\_RAND=fit(K(1));%Eq(5)
if fit(i)> F\_RAND%Eq(5)
X\_P2(i,:)=X(i,:)+rand(1,1) .\* (X\_K-I.\*X(i,:));%Eq(5)
else
X\_P2(i,:)=X(i,:)+rand(1,1) .\* (X(i,:)-X\_K);%Eq(5)
end
% update position based on Eq (6)
X\_P2(i,:) = max(X\_P2(i,:),lowerbound);X\_P2(i,:) = min(X\_P2(i,:),upperbound);
L=X\_P2(i,:);
F\_P2=fitness(L);
if(F\_P2\<fit(i))
X(i,:) = X\_P2(i,:);
fit(i) = F\_P2;
end
%% END PHASE 2: MIGRATION
%%
%% PHASE3: ESCAPING AND FIGHTING AGAINST PREDATORS (EXPLOITATION)
LO\_LOCAL=lowerbound./t;%Eq(8)
HI\_LOCAL=upperbound./t;%Eq(8)
I=round(1+rand(1,1));
X\_P3(i,:)=X(i,:)+LO\_LOCAL+rand(1,1).\*(HI\_LOCAL-LO\_LOCAL);% Eq(7)
X\_P3(i,:) = max(X\_P3(i,:),LO\_LOCAL);X\_P3(i,:) = min(X\_P3(i,:),HI\_LOCAL);
X\_P3(i,:) = max(X\_P3(i,:),lowerbound);X\_P3(i,:) = min(X\_P3(i,:),upperbound);
% update position based on Eq (9)
L=X\_P3(i,:);
F\_P3=fitness(L);
if(F\_P3\<fit(i))
X(i,:) = X\_P3(i,:);
fit(i) = F\_P3;
end
%% END PHASE3: ESCAPING AND FIGHTING AGAINST PREDATORS (EXPLOITATION)
end% i=1:SearchAgents
best_so_far(t)=fbest;
average(t) = mean (fit);
end
Best_score=fbest;
Best_pos=Xbest;
WOA_curve=best_so_far;
end