zl程序教程

您现在的位置是:首页 >  后端

当前栏目

基于觅食生境选择的改进粒子群算法-附代码

算法代码 基于 选择 改进 粒子
2023-09-14 09:06:12 时间

基于觅食生境选择的改进粒子群算法


摘要:在标准粒子群算法的基础上,引入基于莱维飞行的觅食生境选择策略,提出了改进的基于觅食生境选择的粒子群算法(feeding habitat selection particle swarm optimization,FHSPSO)。改进的算法中,粒子搜索策略包括粒子无干扰觅食和受到惊扰飞至新的觅食位置两个阶段。

1.粒子群优化算法

基础粒子群算法的具体原理参考网络资料

2. 改进粒子群算法

粒子搜索策略包括两个阶段。
第一阶段, 粒子无干扰受食阶段。
该阶段的搜索策略与标准粒子群算法基本相 同, 粒子的特征用速度、位置、适应度值表示。适 应度值由被优化的函数确定, 第 i i i 个粒子的速度和 位置在每次迭代中按照式 (1)、(2) 进行更新 [ 6 ] { }^{[6]} [6]
V i d k + 1 = w v i d k + c 1 r 1 ( P i d k − X i d k ) + c 2 r 2 ( P g d k − X i d k )  (1)  X i d k + 1 = X i d k + V i d k  (2)  w = e − θ 1 k cos ⁡ ( lg ⁡ ( k ) )  (3)  \begin{array}{cc} V_{i d}^{k+1}=w v_{i d}^k+c_1 r_1\left(P_{i d}^k-X_{i d}^k\right)+c_2 r_2\left(P_{g d}^k-X_{i d}^k\right) & \text { (1) } \\ X_{i d}^{k+1}=X_{i d}^k+V_{i d}^k & \text { (2) } \\ w=e^{-\theta_1 k} \cos (\lg (k))& \text { (3) } \end{array} Vidk+1=wvidk+c1r1(PidkXidk)+c2r2(PgdkXidk)Xidk+1=Xidk+Vidkw=eθ1kcos(lg(k)) (1)  (2)  (3) 
式中: w w w 为惯性权重; d ∈ [ 1 , D ] , D d \in[1, D], D d[1,D],D 为维数; k k k 为 迭代次数; c 1 c_1 c1 c 2 c_2 c2 为学习因子; r 1 r_1 r1 r 2 r_2 r2 [ 0 , 1 ] [0,1] [0,1] 间的 随机数; P i d P_{i d} Pid 为粒子迄今的个体极值; P g d P_{g d} Pgd 为粒子群 迄今的群体极值, θ 1 \theta_1 θ1 是系数。

第二阶段, 粒子群受到惊扰飞至新的位置。
粒子群在受到外界因素惊扰后, 会产生整体逃 逸行为, 并在逃逸路线上发现新的食物源, 搜索方 程如式 (4) 所示 [ 7 ] { }^{[7]} [7]
x i t + 1 = { x i t [ 1 + e − θ 2 k cos ⁡ ( lg ⁡ ( k ) ) s ] ,  rand  < p x i t [ 1 + e − θ 3 k cos ⁡ ( k ) s ] ,  else  (4) x_i^{t+1}= \begin{cases}x_i^t\left[1+e^{-\theta_2 k} \cos (\lg (k)) s\right], & \text { rand }<p \\ x_i^t\left[1+e^{-\theta_3 k} \cos (k) s\right], & \text { else }\end{cases} \tag{4} xit+1={xit[1+eθ2kcos(lg(k))s],xit[1+eθ3kcos(k)s], rand <p else (4)
式中: p p p 是路线选择参数; θ 1 、 θ 2 \theta_1 、 \theta_2 θ1θ2 是系数; s s s 值由 式 ( 5 ) ∼ ( 9 ) [ 8 ] (5) \sim(9){ }^{[8]} (5)(9)[8] 确定。
s = μ ∣ v ∣ 1 / β (5) s=\frac{\mu}{|v|^{1 / \beta}}\tag{5} s=v1/βμ(5)
其中: μ 、 v \mu 、 v μv 为正态分布, 定义
μ ∼ N ( 0 , σ μ 2 )  (6)  v ∼ N ( 0 , σ v 2 )  (7)  σ μ = { Γ ( 1 + β ) sin ⁡ ( π β / 2 ) Γ [ ( 1 + β ) / 2 ] 2 ( β − 1 ) / 2 β } , β = 1.5  (8)  σ v = 1  (9)  \begin{gathered} \mu \sim N\left(0, \quad \sigma_\mu^2\right) & \text { (6) } \\ v \sim N\left(0, \quad \sigma_v^2\right) & \text { (7) } \\ \sigma_\mu=\left\{\frac{\Gamma(1+\beta) \sin (\pi \beta / 2)}{\Gamma[(1+\beta) / 2] 2^{(\beta-1) / 2} \beta}\right\}, \beta=1.5 & \text { (8) } \\ \sigma_v=1& \text { (9) } \end{gathered} μN(0,σμ2)vN(0,σv2)σμ={Γ[(1+β)/2]2(β1)/2βΓ(1+β)sin(πβ/2)},β=1.5σv=1 (6)  (7)  (8)  (9) 
FHSPSO 算法流程如下:
初始化种群
for 迭代次数<最大迭代次数
if 粒子正常受食时间小于限制值

for 种群中的所有粒子
按公式(1)、(2)产生新解
end for
else
for 种群中的所有成员
按公式 (4) 产生新解
end for
end if
选择目标函数值最好的个体,
与先前最好解进行比较判断是否更新 end for
输出最好解

3.实验结果

请添加图片描述

4.参考文献

[1]陈子廓,史宪睿.基于觅食生境选择的改进粒子群算法[J].辽宁工业大学学报(自然科学版),2022,42(01):19-21.DOI:10.15916/j.issn1674-3261.2022.01.004.

5.Matlab代码

6.Python代码