智能优化算法:旗鱼优化算法

2019智能优化算法:旗鱼优化算法-附代码

@[toc]
摘要:旗鱼优化器(Sailed fish Optimizer,SFO)是于2019提出的一种新型优化算法,具有寻优能力强,收敛快的优点。

1.算法原理

旗鱼优化器(SFO),它的灵感来自一群捕猎的旗鱼。这一方法由两个方面组成,一是加强对目前为止最佳群体的搜索,二是沙丁鱼种群的多样性搜索空间。

1.1初始化

旗鱼算法初始化包括旗鱼的初始化和沙丁鱼的初始化。其初始化是在给定的搜索空间内随机初始化。其中旗鱼种群用X_{SF}表示,沙丁鱼种群用X_F表示。初始化后,其中旗鱼适应度值最好的种群用X_{eliteSF}表示。沙丁鱼适度值最好的种群用X_{injuredS}表示。

1.2 旗鱼位置更新

旗鱼的位置更新用下式表示:
X_{newSF}^i=X_{eliteSF}^i - \lambda_i*(rand(0,1)*(\frac{ + X_{eliteSF}^i + X_{injuredS}^i}{2}) - X_{oldSF}^i) \tag{1}
其中X_{eliteSF}^i表示在当前迭代次数i时,旗鱼的最佳位置。X_{injuredS}^i表示在当前迭代次数i时,沙丁鱼的最佳位置。其中\lambda_i系数的定义入下:
\lambda_i = 2*rand(0,1)*PD-PD \tag{2}

其中PD代表猎物群的密度用如下表达式表示:
PD = 1 - \frac{N_{SF}}{N_{SF} + N_S}\tag{3}
其中N_{SF},N_S分别代表旗鱼和沙丁鱼的数量。

1.3 沙丁鱼的位置更新

沙丁鱼的位置更新如下式:
X_{newS}^i = r*(X_{eliteSF}^i - X_{oldS}^i + AP) \tag{4}
其中X_{eliteSF}^i表示在当前迭代次数i时,旗鱼的最佳位置。AP代表旗鱼的攻击力度。其计算方式如下:
AP = A*(1-2*Itr*e) \tag{5}
其中A,e控制控制攻击力度的变换,使A线性变换到0.当AP>0.5时用上式更新沙丁鱼全部位置。当AP<0.5时。更新沙丁部分位置。

部分位置的范围定义如下:
\alpha = N_S*AP\tag{6}

\beta = d_i*AP \tag{7}

其中\alpha代表要更新沙丁鱼的数量,\beta表示要更新的维度数量。

1.4 综合考虑旗鱼和沙丁鱼的位置

如果沙丁鱼的位置优于旗鱼的位置,将沙丁鱼的位置付给旗鱼,并且被移除。
X_{SF}^i = X_S^i , if\, f(Si)<f(SF_i) \tag{8}
算法流程如下:

Step1. 初始化种群和参数。

Step2.计算旗鱼和沙丁鱼的适应度值,并且记录最优适应度值和位置。

Step3.更新旗鱼位置。更新沙丁鱼位置。如果攻击力度小于0.5,计算\alpha,\beta的值,并且更新部分位置。否则,全部跟新更新沙丁鱼位置。

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代码

见个人资料

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容