2019智能优化算法:旗鱼优化算法-附代码
摘要:旗鱼优化器(Sailed fish Optimizer,SFO)是于2019提出的一种新型优化算法,具有寻优能力强,收敛快的优点。
1.算法原理
旗鱼优化器(SFO),它的灵感来自一群捕猎的旗鱼。这一方法由两个方面组成,一是加强对目前为止最佳群体的搜索,二是沙丁鱼种群的多样性搜索空间。
1.1初始化
旗鱼算法初始化包括旗鱼的初始化和沙丁鱼的初始化。其初始化是在给定的搜索空间内随机初始化。其中旗鱼种群用 X S F X_{SF} XSF表示,沙丁鱼种群用 X F X_F XF表示。初始化后,其中旗鱼适应度值最好的种群用 X e l i t e S F X_{eliteSF} XeliteSF表示。沙丁鱼适度值最好的种群用 X i n j u r e d S X_{injuredS} XinjuredS表示。
1.2 旗鱼位置更新
旗鱼的位置更新用下式表示:
X n e w S F i = X e l i t e S F i − λ i ∗ ( r a n d ( 0 , 1 ) ∗ ( + X e l i t e S F i + X i n j u r e d S i 2 ) − X o l d S F i ) (1) X_{newSF}^i=X_{eliteSF}^i - \lambda_i*(rand(0,1)*(\frac{ + X_{eliteSF}^i + X_{injuredS}^i}{2}) - X_{oldSF}^i) \tag{1} XnewSFi=XeliteSFi−λi∗(rand(0,1)∗(2+XeliteSFi+XinjuredSi)−XoldSFi)(1)
其中 X e l i t e S F i X_{eliteSF}^i XeliteSFi表示在当前迭代次数i时,旗鱼的最佳位置。 X i n j u r e d S i X_{injuredS}^i XinjuredSi表示在当前迭代次数i时,沙丁鱼的最佳位置。其中 λ i \lambda_i λi系数的定义入下:
λ i = 2 ∗ r a n d ( 0 , 1 ) ∗ P D − P D (2) \lambda_i = 2*rand(0,1)*PD-PD \tag{2} λi=2∗rand(0,1)∗PD−PD(2)
其中PD代表猎物群的密度用如下表达式表示:
P D = 1 − N S F N S F + N S (3) PD = 1 - \frac{N_{SF}}{N_{SF} + N_S}\tag{3} PD=1−NSF+NSNSF(3)
其中 N S F , N S N_{SF},N_S NSF,NS分别代表旗鱼和沙丁鱼的数量。
1.3 沙丁鱼的位置更新
沙丁鱼的位置更新如下式:
X n e w S i = r ∗ ( X e l i t e S F i − X o l d S i + A P ) (4) X_{newS}^i = r*(X_{eliteSF}^i - X_{oldS}^i + AP) \tag{4} XnewSi=r∗(XeliteSFi−XoldSi+AP)(4)
其中 X e l i t e S F i X_{eliteSF}^i XeliteSFi表示在当前迭代次数i时,旗鱼的最佳位置。AP代表旗鱼的攻击力度。其计算方式如下:
A P = A ∗ ( 1 − 2 ∗ I t r ∗ e ) (5) AP = A*(1-2*Itr*e) \tag{5} AP=A∗(1−2∗Itr∗e)(5)
其中A,e控制控制攻击力度的变换,使A线性变换到0.当AP>0.5时用上式更新沙丁鱼全部位置。当AP<0.5时。更新沙丁部分位置。
部分位置的范围定义如下:
α = N S ∗ A P (6) \alpha = N_S*AP\tag{6} α=NS∗AP(6)
β = d i ∗ A P (7) \beta = d_i*AP \tag{7} β=di∗AP(7)
其中 α \alpha α代表要更新沙丁鱼的数量, β \beta β表示要更新的维度数量。
1.4 综合考虑旗鱼和沙丁鱼的位置
如果沙丁鱼的位置优于旗鱼的位置,将沙丁鱼的位置付给旗鱼,并且被移除。
X S F i = X S i , i f f ( S i ) < f ( S F i ) (8) X_{SF}^i = X_S^i , if\, f(Si)<f(SF_i) \tag{8} XSFi=XSi,iff(Si)<f(SFi)(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代码
https://mianbaoduo.com/o/bread/aZialZ4=
5.Python代码
https://mianbaoduo.com/o/bread/aZuUkp8=
转载:https://blog.csdn.net/u011835903/article/details/109256699