💥1 概述
鹈鹕體型大,有一個長嘴,喉嚨裡有一個大袋子,用來捕捉和吞食獵物。這種鳥喜歡群體和社交生活,成群生活在幾百隻鹈鹕中[25]。鹈鹕的外形如下:它們的體重約為2.75至15千克,高度約為1.06至1.83米,翼展約為0.5至3米[26]。鹈鹕的食物主要是魚,很少是青蛙、海龜和甲殼類動物;如果它很餓,它甚至會吃海鮮[27]。鹈鹕經常一起打獵。鹈鹕在确定獵物的位置後,從10–20米的高度俯沖獵物。當然,有些物種也會在較低的高度俯瞰獵物。然後,它們在水面上展開翅膀,迫使魚進入淺水區,這樣它們就能很容易地捕捉到魚。在捕魚時,大量的水進入鹈鹕的喙,在吞下魚之前,它會向前移動頭部,以去除多餘的水分[28]
鹈鹕在狩獵時的行為和政策是一個聰明的過程,使這些鳥成為熟練的獵人。拟議POA設計的主要靈感來源于上述政策的模組化。
📚2 運作結果
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
%% UPDATE location of food
X_FOOD=[];
k=randperm(SearchAgents,1);
X_FOOD=X(k,:);
F_FOOD=fit(k);
%%
for i=1:SearchAgents
%% PHASE 1: Moving towards prey (exploration phase)
I=round(1+rand(1,1));
if fit(i)> F_FOOD
X_new=X(i,:)+ rand(1,1).*(X_FOOD-I.* X(i,:)); %Eq(4)
else
X_new=X(i,:)+ rand(1,1).*(X(i,:)-1.*X_FOOD); %Eq(4)
end
X_new= max(X_new,lowerbound);X_new = min(X_new,upperbound);
% Updating X_i using (5)
f_new = fitness(X_new);
if f_new <= fit (i)
X(i,:) = X_new;
fit (i)=f_new;
end
%% END PHASE 1: Moving towards prey (exploration phase)
%% PHASE 2: Winging on the water surface (exploitation phase)
X_new=X(i,:)+0.2*(1-t/Max_iterations).*(2*rand(1,dimension)-1).*X(i,:);% Eq(6)
X_new= max(X_new,lowerbound);X_new = min(X_new,upperbound);
% Updating X_i using (7)
f_new = fitness(X_new);
if f_new <= fit (i)
X(i,:) = X_new;
fit (i)=f_new;
end
%% END PHASE 2: Winging on the water surface (exploitation phase)
end best_so_far(t)=fbest;
average(t) = mean (fit);
end
Best_score=fbest;
Best_pos=Xbest;
POA_curve=best_so_far;
end