本文提出了一種新穎的基于群體智能的元啟發式優化算法——壯麗細尾鷯優化算法(SFOA),SFOA從精湛的神仙鶯的生活習性中汲取靈感。融合了精湛的神仙鶯群體中幼鳥的發育、繁殖后鳥類喂養幼鳥的行為以及它們躲避捕食者的策略。通過模擬幼鳥生長、繁殖和攝食階段對應的精湛的三種自然行為以及躲避天敵,建立了數學模型。該算法結合了壯麗細尾鷯鶯群體中幼鳥的發育,繁殖后喂養幼鳥的行為,以及它們躲避捕食者的策略,于2025年2月最新發表在JCR 1區,中科院3區 SCI計算機類期刊 Cluster Computing。
3.2 初始化
所提出的 SFOA 方法是一種基于種群的技術,它通過模擬評估時間的變化來模擬其在空間中的搜索能力,以有效地解決現實環境中的優化問題。每個 SFOA 成員將根據搜索空間中問題文章確定問題決策變量的值。每個 SFOA 成員是問題的候選解決方案,并使用向量進行數學建模。向量的每個元素對應于決策變量,所有 SFOA 成員共同構成整個算法 (公式 (1))。同時,每個 SFOA 成員將在算法開始時使用公式 (2) 初始化為初始位置。
X = ( u b ? l b ) × r a n d ( 0 , 1 ) + l b X = (ub - lb) \times rand(0, 1) + lb X=(ub?lb)×rand(0,1)+lb
其中 X 是 SFOA 全局矩陣, X i X_i Xi? 是第 i 個 SFOA 成員(候選解), x i , d x_{i,d} xi,d? 是搜索空間中 SFOA 的 D 維(決策變量),N 是全局成員的數量,rand 是區間 [0,1] 中的隨機數,ub 和 lb 分別表示決策變量的上界和下界。
3.3 SFOA 的數學模型
在所提出的 SFOA 方法的設計中,問題求解空間中種群成員的位置基于壯麗細尾鷯鶯幼鳥和成鳥之間自然行為的模擬進行更新。在這個自然過程中,幼鳥首先進入生長階段,然后使用喂食代碼孵化幼鳥至成熟,或使用其防御機制來嚇跑捕食者。因此,在評估中,SFOA 種群成員的位置將在三個階段進行更新:(i) 基于幼鳥生長的廣泛探索,(ii) 基于喂食代碼繁殖的探索,以及 (iii) 基于模擬捕食者防御行為的探索。
3.3.1 幼鳥生長階段
在 SFOA 的生長階段中,種群成員的位置根據需要大量經驗的幼鳥生長動態模擬進行更新。由于種群中幼鳥的數量很大,這對種群的生存不利,因此通過不斷學習大量經驗并不斷更新幼鳥快速生長時的位置來模擬 SFOA 成員在問題求解空間中的位置。學習經驗是一系列過程運動,模擬導致 SFOA 成員位置的廣泛變化,從而增加全局搜索算法的探索能力。SFOA 將通過公式 (3) 確定每個成員的位置,以獲得更好的目標函數。
X n e w i , j = X i , j t + ( l b + ( u b ? l b ) × r a n d ) , r > 0.5 X_{new_{i,j}} = X_{i,j}^t + (lb + (ub - lb) \times rand), \quad r > 0.5 Xnewi,j??=Xi,jt?+(lb+(ub?lb)×rand),r>0.5
其中 X n e w i , j X_{new_{i,j}} Xnewi,j?? 表示種群更新后 j 維中壯麗細尾鷯鶯的位置, X i , j X_{i,j} Xi,j? 表示迭代后 j 維中壯麗細尾鷯鶯的位置,rand 是 [0,1] 之間的隨機數。
3.3.2 繁殖和喂養階段
在第二階段中,種群成員的位置通過模擬繁殖和喂養期間壯麗細尾鷯鶯的教學機制進行更新。當風險閾值較低時,雌鳥將進入繁殖階段,并使用獨特的父性測試孵化卵以防止外來物種入侵。危險閾值的計算方法如公式 (5) 所示。
s = r 1 ? 20 + r 2 ? 20 s = r_1 * 20 + r_2 * 20 s=r1??20+r2??20
其中, r 1 r_1 r1? 和 r 2 r_2 r2? 都是正態分布的隨機數。
由于 SFOA 的合作繁殖特性,卵全年由多只鳥孵化以實現識別教學。在這個周期 (m) 中,每個 SFOA 都不是靜止的,而是輪流進行喂養和教學。模擬這種現象導致 SFOA 成員位置的微小變化,增加了算法對局部搜索的探索能力。同時,定義一個因子 p 表示成熟度,教學周期越接近成熟,每個 SFOA 成員的活動范圍越大。基于教學繁殖期間位置變化的建模,每個 SFOA 成員的新位置通過公式 (5) 計算。然后,如果這個新位置提高了目標函數的值,則替換相應的成員。
X n e w i , j = X G + ( X b X i , j t ) × p , r < 0.5 and s < 20 X_{new_{i,j}} = X_G + (X_b X_{i,j}^t) \times p, \quad r < 0.5 \quad \text{and} \quad s < 20 Xnewi,j??=XG?+(Xb?Xi,jt?)×p,r<0.5ands<20
X G = X b × C X_G = X_b \times C XG?=Xb?×C
其中 X b X_b Xb? 表示當前最優位置,C 是值為 0.8 的常數。
p = sin ? ( ( u b ? l b ) × 2 + ( u b ? l b ) × m ) p = \sin((ub - lb) \times 2 + (ub - lb) \times m) p=sin((ub?lb)×2+(ub?lb)×m)
m = ( F E s M a x F E s ) × 2 m = \left( \frac{FEs}{MaxFEs} \right) \times 2 m=(MaxFEsFEs?)×2
其中,FEs 表示當前評估次數,MaxFEs 表示評估的最大次數。
3.3.3 避免自然敵人階段
在 SFOA 的捕食者回避階段中,種群成員的位置根據壯麗細尾鷯鶯對捕食者攻擊的防御機制進行更新。當壯麗細尾鷯鶯被捕食者發現時,它會快速奔跑,不斷拍打翅膀以擾亂捕食者的視線。同時,會發出警告聲以提醒其他 SFOA 成員。在這種情況下,被捕食者盯上的 SFOA 成員會迅速逃脫,導致成員位置發生輕微變化。其他成員則會在空中盤旋以避免捕食者,導致位置發生較大變化。SFOA 成員的這兩種不同表現力增強了算法在問題求解空間中的搜索范圍,并提高了利用局部搜索的能力,它們的運動模式由數學公式 (9) 描述。
X n e w i , j = X b + X i , j × l × k , r < 0.5 and s > 20 X_{new_{i,j}} = X_b + X_{i,j} \times l \times k, \quad r < 0.5 \quad \text{and} \quad s > 20 Xnewi,j??=Xb?+Xi,j?×l×k,r<0.5ands>20
其中l是萊維飛行隨機步長,控制算法跳轉到局部最優 k 是自適應飛行平衡因子,公式如公式 (10) 所示,該公式調節了鳥群與l的飛行距離。同時, X b X_b Xb? 被添加以控制鳥群的運動方向,防止鳥群移動到不良位置,導致評估次數增加。
k = 0.2 × sin ? ( π 2 ? w ) k = 0.2 \times \sin \left( \frac{\pi}{2} - w \right) k=0.2×sin(2π??w)
w = π 2 × F E s M a x F E s w = \frac{\pi}{2} \times \frac{FEs}{MaxFEs} w=2π?×MaxFEsFEs?
其中 w 是呼叫頻率值,在躲避自然敵人的飛行過程中起到早期預警的作用。
3.4 SFOA 的實現
種群的初始化:定義了種群 N、維度 D、最大評估次數 FEs、上界 ub 和下界 lb。可以通過公式 (2) 獲得搜索空間中種群 X 的初始化。
幼鳥生長階段:在生長階段,幼鳥將繼續改變位置以學習大量經驗以實現快速生長。因此,基于幼鳥生長建立模型使 SFOA 能夠在有限的問題求解空間內進行廣泛的探索。SFOA 位置變化將通過公式 (3) 計算。
繁殖和喂養階段:當環境更安全時,SFOA 在繁殖期間進行教育,當幾只成員輪流照顧卵直到它們孵化。這種行為導致 SFOA 在巢附近小范圍內移動,并且每個 SFOA 成員都有機會外出尋找食物和照顧孩子。基于此,模型可以建立以使 SFOA 在一定局部范圍內進行深入探索。繁殖和喂養階段的計算公式如公式 (5) 所示。
避免自然敵人階段:面對危險時,SFOA 會抖動羽毛以迷惑捕食者并提醒其他 SFOA 成員。基于 SFOA 避免自然敵人的特性建立模型,極大地增加了 SFOA 在空間探索中的隨機性。SFOA 的計算公式如公式 (9) 所示。
X n e w i , j = { X i , j t + ( l b + ( u b ? l b ) × r a n d ) , r > 0.5 X b × C + ( X b ? X i , j t ) × p , r < 0.5 and? s > 20 X b + X i , j × l × k , r < 0.5 and? s < 20 X_{new_{i,j}} = \begin{cases} X_{i,j}^t + (lb + (ub - lb) \times rand), & r > 0.5 \\ X_b \times C + (X_b - X_{i,j}^t) \times p, & r < 0.5 \text{ and } s > 20 \\ X_b + X_{i,j} \times l \times k, & r < 0.5 \text{ and } s < 20 \end{cases} Xnewi,j??=? ? ??Xi,jt?+(lb+(ub?lb)×rand),Xb?×C+(Xb??Xi,jt?)×p,Xb?+Xi,j?×l×k,?r>0.5r<0.5?and?s>20r<0.5?and?s<20?
在本文中,提出了一種新的群體智能優化算法 SFOA,并建立了基于壯麗細尾鷯鶯的生長、繁殖、喂養和捕食者回避行為的數學模型(圖 3)。與其他群體智能算法相比,SFOA 引用了壯麗細尾鷯鶯獨特的教學技術和合作繁殖特征,這可以表明該算法具有一定的新穎性。在下一節中,我們將比較 SFOA 性能。
function[best_fitness,best_position,curve]=SFOA(N,MaxFEs,lb,ub,dim,fobj)curve=zeros(1,MaxFEs);X=initialization(N,dim,ub,lb);Xnew=zeros(N,dim);best_fitness = inf;best_position = zeros(1,dim);fitness=zeros(1,N);FEs=1;LB=ones(1,dim).*(lb); % Lower limit for variablesUB=ones(1,dim).*(ub); % Upper limit for variablesfor i=1:Nfitness(i)=fobj(X(i,:));if fitness(i)<best_fitnessbest_fitness=fitness(i);best_position=X(i,:);endFEs=FEs+1;curve(FEs)=best_fitness;endwhile(FEs<=MaxFEs)C=0.8;r1=rand;r2=rand;w=(pi/2)*(FEs/MaxFEs);k=0.2*sin(pi/2-w);l=0.5*levy(N,dim,1.5);y=randi(N);c1=rand;T=0.5;m=FEs/MaxFEs*2;p = sin(UB-LB)*2+(UB-LB)*m;Xb=best_position;XG=best_position*C;for i=1:Nif T<c1Xnew(i,:)=X(i,:)+(LB+(UB-LB).*rand(1,dim));elses=r1*20+r2*20;if s>20Xnew(i,:)=Xb+X(i,:).*l(y,:)*k;elseXnew(i,:)=XG+(Xb-X(i,:)).*(p);endendendX=Xnew;for i=1:NXnew(i,:) = max( Xnew(i,:),lb);Xnew(i,:) = min( Xnew(i,:),ub);fitness(i)=fobj(Xnew(i,:));if fitness(i)<best_fitnessbest_fitness=fitness(i);best_position=Xnew(i,:);endFEs=FEs+1;curve(FEs)=best_fitness;if FEs>=MaxFEsbreak;endendif FEs>=MaxFEsbreak;end end
endfunction [z] = levy(n,m,beta)num = gamma(1+beta)*sin(pi*beta/2); % used for Numerator den = gamma((1+beta)/2)*beta*2^((beta-1)/2); % used for Denominatorsigma_u = (num/den)^(1/beta);% Standard deviationu = random('Normal',0,sigma_u,n,m); v = random('Normal',0,1,n,m);z =u./(abs(v).^(1/beta));end