2019智能优化算法:旗鱼优化算法-附代码
@[toc]
摘要:旗鱼优化器(Sailed fish Optimizer,SFO)是于2019提出的一种新型优化算法,具有寻优能力强,收敛快的优点。
1.算法原理
旗鱼优化器(SFO),它的灵感来自一群捕猎的旗鱼。这一方法由两个方面组成,一是加强对目前为止最佳群体的搜索,二是沙丁鱼种群的多样性搜索空间。
1.1初始化
旗鱼算法初始化包括旗鱼的初始化和沙丁鱼的初始化。其初始化是在给定的搜索空间内随机初始化。其中旗鱼种群用表示,沙丁鱼种群用表示。初始化后,其中旗鱼适应度值最好的种群用表示。沙丁鱼适度值最好的种群用表示。
1.2 旗鱼位置更新
旗鱼的位置更新用下式表示:
其中表示在当前迭代次数i时,旗鱼的最佳位置。表示在当前迭代次数i时,沙丁鱼的最佳位置。其中系数的定义入下:
其中PD代表猎物群的密度用如下表达式表示:
其中分别代表旗鱼和沙丁鱼的数量。
1.3 沙丁鱼的位置更新
沙丁鱼的位置更新如下式:
其中表示在当前迭代次数i时,旗鱼的最佳位置。AP代表旗鱼的攻击力度。其计算方式如下:
其中A,e控制控制攻击力度的变换,使A线性变换到0.当AP>0.5时用上式更新沙丁鱼全部位置。当AP<0.5时。更新沙丁部分位置。
部分位置的范围定义如下:
其中代表要更新沙丁鱼的数量,表示要更新的维度数量。
1.4 综合考虑旗鱼和沙丁鱼的位置
如果沙丁鱼的位置优于旗鱼的位置,将沙丁鱼的位置付给旗鱼,并且被移除。
算法流程如下:
Step1. 初始化种群和参数。
Step2.计算旗鱼和沙丁鱼的适应度值,并且记录最优适应度值和位置。
Step3.更新旗鱼位置。更新沙丁鱼位置。如果攻击力度小于0.5,计算的值,并且更新部分位置。否则,全部跟新更新沙丁鱼位置。
Step4 . 沙丁鱼,旗鱼位置替换。
Step5.计算所有适应度值,并更新记录最优适应度值和位置。
Step7.是否满足迭代停止条件,如果满足则输出结果,否则重复Step2 - Step7;
2.算法结果
3.参考文献
[1]S. Shadravan,H.R. Naji,V.K. Bardsiri. The Sailfish Optimizer: A novel nature-inspired metaheuristic algorithm for solving constrained engineering optimization problems[J]. Engineering Applications of Artificial Intelligence,2019,80.
4.Matlab代码
5.Python代码
见个人资料