基于紧凑度和调度处理的粒子群优化算法-附代码

基于紧凑度和调度处理的粒子群优化算法


摘要:针对标准粒子群优化算法存在收敛速度慢和难以跳出局部最优等问题,提出了一种基于紧凑度和调度处理的粒子群优化算法。给出了粒子紧凑度和调度处理的概念和方法,通过动态评价粒子群中各粒子间的紧凑程度,从而确定调度的粒子,进而对其进行调度处理,避免粒子陷入局部最优。

1.粒子群优化算法

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

2. 改进粒子群算法

2.1 紧凑度

定理 1 如果粒子群算法陷人早熟收敛或者达到 全局收敛,则群体适应度方差 σ 2 \sigma^2 σ2 等于 0 。
证明 令 φ 1 = c 1 r 1 , φ 2 = c 2 r 2 \varphi_1=c_1 r_1, \varphi_2=c_2 r_2 φ1=c1r1,φ2=c2r2, 综合式 (1)、(2)得:
X i ( t + 2 ) = ( 1 + w − φ 1 − φ 2 ) X i ( t + 1 ) − w X i ( t ) + φ 1 P i ( t + 1 ) + φ 2 P k ( t + 1 ) (5) \begin{aligned} X_i(t+2)=&\left(1+w-\varphi_1-\varphi_2\right) X_i(t+1)-\\ & w X_i(t)+\varphi_1 P_i(t+1)+\varphi_2 P_k(t+1) \end{aligned} \tag{5} Xi(t+2)=(1+wφ1φ2)Xi(t+1)wXi(t)+φ1Pi(t+1)+φ2Pk(t+1)(5)
文献[18]通过严格的理论推导得出:在个体最优 值、全局最优值位置不变且不考虑随机量的情况下, 当满足 1 − w > 0 1-w>0 1w>0 2 w + 2 − φ 1 − φ 2 > 0 2 w+2-\varphi_1-\varphi_2>0 2w+2φ1φ2>0 时, 单个粒子的 位置将趋向 φ 1 P i + φ 2 P b φ 1 + φ 2 \frac{\varphi_1 P_i+\varphi_2 P_b}{\varphi_1+\varphi_2} φ1+φ2φ1Pi+φ2Pb; 即当 { 1 − w > 0 2 w + 2 − φ 1 − φ 2 > 0 \left\{\begin{array}{l}1-w>0 \\ 2 w+2-\varphi_1-\varphi_2>0\end{array}\right. { 1w>02w+2φ1φ2>0 时,
lim ⁡ t → ∞ X ( t ) = φ 1 P i + φ 2 P g φ 1 + φ 2 (6) \lim _{t \rightarrow \infty} X(t)=\frac{\varphi_1 P_i+\varphi_2 P_g}{\varphi_1+\varphi_2} \tag{6} tlimX(t)=φ1+φ2φ1Pi+φ2Pg(6)
其中, P i P_i Pi 为个体最优值位置; P E P_E PE 为全局最优值的位置。

如果粒子群算法出现早熟收敛或者达到全局收 玫, 则个体最优值、全局最优值不再发生变化; 此时 需考虑当算法出现早熟收敛或者全局收敛时, 随机 量 φ 1 、 φ 2 \varphi_1 、 \varphi_2 φ1φ2 对粒子的影响, 由于 φ 1 = c 1 r 1 , φ 2 = c 2 r 2 , r 1 \varphi_1=c_1 r_1, \varphi_2=c_2 r_2, r_1 φ1=c1r1,φ2=c2r2,r1 r 2 r_2 r2 服从均匀分布, 为了简化处理, 利用其期望值进行 观察, 即:
E ( φ 1 ) = E ( c 1 r 1 ) = c 1 ∫ 0 1 x 1 − 0   d x = c 1 2 ( 7 ) E ( φ 2 ) = E ( c 2 r 2 ) = c 2 ∫ 0 1 x 1 − 0   d x = c 2 2 ( 8 ) \begin{aligned} &E\left(\varphi_1\right)=E\left(c_1 r_1\right)=c_1 \int_0^1 \frac{x}{1-0} \mathrm{~d} x=\frac{c_1}{2} &(7)\\ &E\left(\varphi_2\right)=E\left(c_2 r_2\right)=c_2 \int_0^1 \frac{x}{1-0} \mathrm{~d} x=\frac{c_2}{2} &(8) \end{aligned} E(φ1)=E(c1r1)=c10110x dx=2c1E(φ2)=E(c2r2)=c20110x dx=2c2(7)(8)
由 (7) 、(8)两式可知, φ 1 、 φ 2 \varphi_1 、 \varphi_2 φ1φ2 的期望值 E ( φ 1 ) E\left(\varphi_1\right) E(φ1) E ( φ 2 ) E\left(\varphi_2\right) E(φ2) 均为常数, 可不考虑其影响, 因此当粒子群算法 陷人早熟收敛或达到全局收敛时, 式 (6)成立。粒子 群在多数实际寻优过程中, 无论是找到了最优解或 是陷人某个局部最优解还是算法停滞, 在算法的整 个过程中 P ε ( t ) P_{\varepsilon}(t) Pε(t) 的变化将会逐步减小, 最终趋于停止, P i ( t ) P_i(t) Pi(t) 将逐步趋向 P ε ( t ) P_{\varepsilon}(t) Pε(t) 。因此, 当搜索时间无限时, 所 有粒子的位置将逐步靠近并停止于 φ 1 P i + φ 2 P 8 φ 1 + φ 2 = P k \frac{\varphi_1 P_i+\varphi_2 P_8}{\varphi_1+\varphi_2}=P_k φ1+φ2φ1Pi+φ2P8=Pk处。当粒子群出现早熟收敛或全局收敛时, 存在 f ( X i ) = f\left(X_i\right)= f(Xi)= f ( P g ) , f a v g ( X ) = 1 m ∑ i = 1 m f ( X i ) = f ( P g ) f\left(P_{\mathrm{g}}\right), f_{\mathrm{avg}}(X)=\frac{1}{m} \sum_{i=1}^m f\left(X_i\right)=f\left(P_g\right) f(Pg),favg(X)=m1i=1mf(Xi)=f(Pg), 即 σ 2 = ∑ i = 1 m ( f ( X i ) − \sigma^2=\sum_{i=1}^m\left(f\left(X_i\right)-\right. σ2=i=1m(f(Xi) f arg ⁡ ( X ) ) 2 = 0 \left.f_{\arg }(X)\right)^2=0 farg(X))2=0, 定理 1 得证。
由定理 1 可知, 当粒子群出现早熟或全局收敛 时, 群体的适应度方差等于 0 , 此时种群的全局探索 能力较弱, 为了避免种群陷人局部最优, 本文提出了 紧凑度的概念, 即当两粒子间的适应度差值在一个 门限值范围内时, 就认定此时两粒子处于紧凑状 态。虽然处于紧凑状态的粒子能够加强局部搜索能 力, 但却降低了粒子群的全局探索能力, 使种群更容 易出现早熟收敛。因此, 本文根据经验值设定具体 的紧凑度阈值, 当相邻两粒子间的适应度差值小于 此阈值时, 就可认定两粒子已达到了紧凑状态, 否 则, 两粒子末达到紧凑状态。

2.2 粒子调度处理的方法

对粒子进行调度处理的主要目标是为了在提高 算法寻优精度的同时,加快算法的收敛速度。为了 提高算法的寻优精度, 本文利用式 (9)、(10)对粒子 的历史最优位置 P i P_i Pi 、当前位置 X i X_i Xi 进行处理, 从而改 变粒子的运动轨迹, 扩大粒子群的搜索范围 ; 由于有 全局最优位置 P g P_g Pg 的参与和调度系数 c 3 c_3 c3 的控制, 调度 粒子能够在 P g P_{\mathrm{g}} Pg 周围进行搜索, 提高算法的寻优精度, 同时使得粒子搜索到优于已有 P g P_{\mathrm{g}} Pg 的概率大大提高, 加快算法的收敛速度。
p i d = c 3 p g d + r 3 ( p g d − x k d ) ( 9 ) x i d = p g d + r 4 ( p g d − p h d ) ( 10 ) \begin{aligned} &p_{i d}=c_3 p_{g d}+r_3\left(p_{g d}-x_{k d}\right) &(9)\\ &x_{i d}=p_{g d}+r_4\left(p_{g d}-p_{h d}\right) &(10) \end{aligned} pid=c3pgd+r3(pgdxkd)xid=pgd+r4(pgdphd)(9)(10)
其中, r 3 , r 4 ∈ [ 0 , 1 ] , k , h ∈ { 1 , 2 , ⋯   , m } , d ∈ { 1 , 2 , ⋯   , D } r_3, r_4 \in[0,1], k, h \in\{1,2, \cdots, m\}, d \in\{1,2, \cdots, D\} r3,r4[0,1],k,h{ 1,2,,m},d{ 1,2,,D}, 且 k 、 h k 、 h kh 均为随机值, 这些参数的随机性保证了算法具 有很强的探索能力; c 3 c_3 c3 为调度系数, 用于控制调度粒 子对 P g P_g Pg 的跟随程度, 在提高算法寻优精度的同时尽 量避免陷人局部最优。
控制种群位置多样性是提高算法全局探索能力 的重要手段之一, 因此 PCS-PSO算法在处理调度粒 子时, 通过以一定的小概率 p 1 p_1 p1 随机改变粒子的当前 位置而不受 P g P_{\mathrm{g}} Pg 的限制, 提高算法的全局探索能力。 此时虽然会在一定程度上减慢整个种群的收敛速 度, 但通过小概率 p 1 p_1 p1 的控制, 可以有效地协调收敛速度与全局探索力度, 使种群在快速搜索全局最优值 的同时, 能够扩大搜索范围, 增强算法的全局探索能 力。具体做法如式 (11)所示:
x i d = N + r 5 ( M − N ) ,  rand  < p 1 (11) x_{i d}=N+r_5(M-N), \text { rand }<p_1 \tag{11} xid=N+r5(MN), rand <p1(11)
改进算法步骤如下:

步骤1 随机初始化粒子群中各粒子的速度和位置:
v i d = N + v_{i d}=N+ vid=N+ rand × ( M − N ) \times(M-N) ×(MN)
x i d = N + rand ⁡ × ( M − N ) x_{i d}=N+\operatorname{rand} \times(M-N) xid=N+rand×(MN)
步乑 2 更新粒子群中所有粒子的速度和位置:
v i d k + 1 = w v i d k + c 1 r 1 ( p i d − x i d k ) + c 2 r 2 ( p g d − x i d k ) v_{i d}^{k+1}=w v_{i d}^k+c_1 r_1\left(p_{i d}-x_{i d}^k\right)+c_2 r_2\left(p_{g d}-x_{i d}^k\right) vidk+1=wvidk+c1r1(pidxidk)+c2r2(pgdxidk)
x i d k + 1 = x i d k + v i d k + 1 x_{i d}^{k+1}=x_{i d}^k+v_{i d}^{k+1} xidk+1=xidk+vidk+1
步骤 3 将粒子按当前适应度值的大小排序。
步骤 4 若相邻两粒子处于紧凑状态, 则对前一 粒子进行如下调度处理:
若产生的随机数 rand < p 1 <p_1 <p1 x i d = N + r 5 ( M − N ) x_{i d}=N+r_5(M-N) xid=N+r5(MN);
否则 p i d = c 3 p g d + r 3 ( p g d − x k d ) , x i d = p g d + r 4 ( p g d − p h d ) ∘ p_{i d}=c_3 p_{g d}+r_3\left(p_{g d}-x_{k d}\right), x_{i d}=p_{g d}+r_4\left(p_{g d}-p_{h d}\right) \circ pid=c3pgd+r3(pgdxkd),xid=pgd+r4(pgdphd)
步骤 5 若粒子的当前适应度值优于目前的全局 最优值, 则更新粒子群 P g P_{\mathrm{g}} Pg
步骤 6 判断是否满足结束条件, 若不满足, 跳转 至步骤 2 ; 否则, 算法结束。

3.实验结果

请添加图片描述

4.参考文献

[1]周丹, 葛洪伟, 苏树智,等. 基于紧凑度和调度处理的粒子群优化算法[J]. 计算机科学与探索, 2016, 10(005):742-750.

5.Matlab代码

6.Python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/127162251
今日推荐