飞道的博客

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

869人阅读  评论(0)

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=2rand(0,1)PDPD(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=1NSF+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(XeliteSFiXoldSi+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(12Itre)(5)
其中A,e控制控制攻击力度的变换,使A线性变换到0.当AP>0.5时用上式更新沙丁鱼全部位置。当AP<0.5时。更新沙丁部分位置。

部分位置的范围定义如下:
α = N S ∗ A P (6) \alpha = N_S*AP\tag{6} α=NSAP(6)

β = d i ∗ A P (7) \beta = d_i*AP \tag{7} β=diAP(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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场