鹈鹕优化算法(Pelican Optimization Algorithm)
1、POA灵感
2、详细分析POA
3、POA流程图和伪代码
4、结果图
5、部分代码
1、POA灵感
鹈鹕的食物主要是鱼,很少吃青蛙、海龟和甲壳类动物;如果它很饿,它甚至会吃海鲜[27]。鹈鹕经常合作狩猎。鹈鹕在确定猎物的位置后,从10-20米的高度俯冲向猎物。当然,有些物种也会下降到海拔较低的地方捕食。然后他们在水面上展开翅膀,迫使鱼去浅水区,这样他们就可以很容易地抓住他们的鱼。在捕鱼时,大量的水进入鹈鹕的喙部,在吞咽鱼之前头部向前移动以排出多余的水。鹈鹕在狩猎时的行为和策略是一个智能的过程,使这些鸟成为熟练的猎人。
2、详细分析POA
在基于种群的算法中,每个种群成员代表一个候选解。每个种群成员根据其在搜索空间中的位置提出优化问题变量的值。最初,根据问题的下界和上界,对种群成员进行随机初始化。
第一阶段:向猎物移动(探索阶段)
在第一阶段,鹈鹕确定猎物的位置,然后向这个确定的区域移动。对这种鹈鹕策略进行建模,可以对搜索空间进行扫描,并使所提出的POA在发现搜索空间的不同区域时具有探索能力。
POA的重点在于猎物的位置是在搜索空间中随机生成的。这增加了POA在精确搜索问题解决空间时的探索能力。上述概念和鹈鹕向猎物移动的策略在数学上模拟如式(4)所示。
在建议的POA中,如果目标函数的值在该位置得到改善,则接受鹈鹕的新位置。在这种类型的更新中,它被称为有效更新,算法被防止移动到非最优区域。这个过程用公式(5)建模
第二阶段:水面展翅(开发阶段)
在第二阶段,鹈鹕到达水面后,它们在水面上展开翅膀,将鱼向上移动,然后将猎物收集到喉咙袋中。这种策略导致更多的鱼在攻击区域被鹈鹕捕获。
对鹈鹕的这种行为进行建模,可以使所提出的POA收敛到狩猎区域的更好点。该过程提高了局部搜索能力的POA能力。从数学的角度来看,算法必须检查鹈鹕位置附近的点,以收敛到更好的解。公式(6)对鹈鹕在捕猎过程中的这种行为进行了数学模拟
在这一阶段,还使用有效更新来接受或拒绝新的鹈鹕位置,其模型如式(7)所示。
在基于第一阶段和第二阶段更新了所有种群成员之后,基于种群的新状态和目标函数的值,将更新到目前为止的最佳候选解。算法进入下一次迭代,重复根据式(4)-(7)提出的POA的不同步骤,直到完成执行。最后,将算法迭代得到的最佳候选解作为给定问题的准最优解。
3、POA流程图和伪代码
下面是POA的流程图和伪代码:
4、结果图
结果图
5、部分代码
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)
参考文献:Trojovský, Pavel, and Mohammad Dehghani. "Pelican optimization algorithm: A novel nature-inspired algorithm for engineering applications." Sensors 22.3 (2022): 855.