机器学习中的数学——粒子群算法(Particle Swarm Optimization, PSO)(三):改进的粒子群算法

基本粒子群算法存在着很多缺陷,如对环境的变化不敏感,常常会受pbestgbest的影响而陷入非最优区域,算法经常发生早熟收敛等现象,所以很多学者在基本粒子群的基础上,提出了很多类型的改进算法。根据其自身的特点,这些改进算法大致可以分为离散粒子群优化算法、小生境粒子群优化算法、混合粒子群优化算法等类型。

约束优化问题求解

一般来说,约束优化问题由目标函数和约束条件两部分构成,表示为:
min ⁡ f ( x ) s.t. g j ( x ) ≤ 0 ,   j = 1 , 2 , ⋯   , J h k ( x ) = 0 ,   k = 1 , 2 , ⋯   , K \begin{aligned} \min \quad&f(x)\\ \text{s.t.} \quad&g_j(x)\leq0, \ j=1, 2, \cdots, J\\ &h_k(x)=0, \ k=1, 2, \cdots, K \end{aligned} mins.t.f(x)gj(x)0, j=1,2,,Jhk(x)=0, k=1,2,,K

式中, x x x n n n维实向量, f ( x ) f(x) f(x)是目标函数, g ( x ) g(x) g(x) h ( x ) h(x) h(x)为约束条件。将满足所有约束条件的解空间S称为可行域,可行域中的解称为可行解,将可行域中使目标函数取最小值的解称为最优解。对于最大化问题,可转化为最小化问题进行求解。

目前,粒子群算法已被有效应用于约束优化问题求解。例如,可对约束优化问题引入半可行域的概念,提出竞争选择的新规则,井改进基于竞争选择和惩罚函数的进化算法适应度函数,然后结合粒子群算法本身的特点,设计选择算子对半可行域进行操作,从而得到一个利用粒子群算法求解约束优化问题的新的进化算法。粒子群算法还应用于非线性约束优化问题的求解,提出相应的求解非线性约束优化问题的新算法,并通过数值实验验证算法的全局寻优能力。对于约束优化问题,可以先采用惩罚函数法将约束优化问题化为无约束优化问题,或者将约束优化问题转化为最小最大问题,然后对无约束优化问题或最小最大问题,采用粒子群算法进行进化求解。

离散粒子群优化算法

为了将粒子群算法离散化,算法由当前的状态变量决定粒子将被判定为1或0的概率,即有:
P [ x i k + 1 = 1 ] = f ( x i k , v i k , x pbest k , x gbest k ) P[x_i^{k+1}=1]=f(x_i^k, v_i^k, x_{\text{pbest}}^k, x_{\text{gbest}}^k) P[xik+1=1]=f(xik,vik,xpbestk,xgbestk)

离散化函数 f ( ⋅ ) f(\cdot) f()需要在离散二进制空间内使粒子趋向于判决选择为0或者1,即由粒子速度决定一个范围在 [ 0 , 1 ] [0, 1] [0,1]之间的概率选择参数 s s s:若 s s s接近于1,则粒子将更可能被选择为1,而若 s s s接近于0,则粒子更可能被选择为0。其表达式如下式所示:
s = Sigmoid ( v i k ) = 1 1 + e − v i k s=\text{Sigmoid}(v_i^k)=\frac{1}{1+e^{-v_i^k}} s=Sigmoid(vik)=1+evik1

修改后的离散粒子群优化算法与基本粒子群优化算法流程相类似,但粒子速度和位置的更新公式修改为:
v i k + 1 = w v i d k + c 1 r 1 ( x pbest k − x i k ) + c 2 v 2 ( x gbest k − x i k )   v i k + 1 = { 1 , ρ < Sigmoid ( v i k ) 0 , 其它 v_{i}^{k+1}=wv_{id}^k+c_1r_1(x_{\text{pbest}}^k-x_i^k)+c_2v_2(x_{\text{gbest}}^k-x_i^k)\\ \ \\ v_i^{k+1}=\left\{\begin{aligned} 1, \quad&\rho<\text{Sigmoid}(v_i^k)\\ 0, \quad&\text{其它} \end{aligned}\right. vik+1=wvidk+c1r1(xpbestkxik)+c2v2(xgbestkxik) vik+1={ 1,0,ρ<Sigmoid(vik)其它

其中,ρ是[0,1]之间的随机数,算法中其他参数都和基本粒子群优化算法内的参数相同。二进制离散粒子群优化算法采用五个基准测试函数进行搜索运算。算法在每个测试函数上运算20次,取最优一次的算法进化曲线作为算法结果参考。

混合粒子群优化算法

用进化计算中的选择机制来改善粒子群优化算法。通常在解决复杂非线性函数时,基于群体的优化算法在快速寻找最优值方面有一定的优势。基于群体的优化算法可定义如下:
p ′ = m ( f ( p ) ) p'=m(f(p)) p=m(f(p))

上式中, p p p是搜索空间中的一组位置,称为群体; f f f是适应值函数,其返回一组值,从而表明群体中每个成员的优化效果; m m m是群体修改函数,其返回一组新的群体。从父代中直接得到的信息,或者搜索动态过程中隐含的信息,都能够给予子代一定的指导。粒子群算法正是如上式方程形式的基于群体的优化算法。其修改函数是基于昆虫的群体行为,每个个体包含在搜索空间中的当前位置、当前速度、自身搜索到的最好位置。它们通过基本粒子群操作(速度更新公式和位置更新公式)而得到新的群体。进化算法是另一种形式的基于群体的搜索方法,定义如下:
p ′ = μ ( s ( f ( p ) ) ) p'=\mu(s(f(p))) p=μ(s(f(p)))

上式中, μ \mu μ是突变函数,其随机改变群体中的部分个体; s s s是选择函数,用其他群体成员的复制体(称为父代)代替表现差的粒子。这个选择机制使得搜索能够倾向于之前所走过的具有相对优势的位置。选择对群体起着集中的作用,分布有限的资源使得搜索倾向于具有最大效益的已知区域。

Angeline提出了混合群体(Hybird Swarm),其结合了类似于传统进化计算算法中的选择机制。混合群体和粒子群在各方面都很相似,除了它结合了进化计算中的锦标选择算子(Tournament Selection Method)。锦标选择算子可描述如下:

  1. 个个体基于当前未知的适应值与其他个个体的适应值进行比较,如果当前个体的适应值优于某个个体的适应值,则每次授予该个体一分。对每个个体重复这个过程。
  2. 根据前一步计算所得的分数对种群中的个体进行从大到小的排列。
  3. 各级种群中顶部的一半个体,并对它们进行复制,取代种群底部的一半个体,在此过程中最佳个体的适应度并未改变。

此选择过程在粒子修改群体前执行。通过增加这个选择过程,在每一代中,一半的个体将会被移动到当前位置具有相对优势的位置上。移动后的个体将仍然保持它们的个体最优位置。可见混合群体和粒子群体的区别是很小的,区别仅仅在于带选择机制的混合群体比粒子群具有更多的开发能力,即在已具有的信息的基础上继续搜索的能力。

猜你喜欢

转载自blog.csdn.net/hy592070616/article/details/123776140
今日推荐