提出了一种新的 BPSO 改进算法 —— 免疫多向二进制粒子群优化算法 (IMBPSO) ,算法中引入了免疫算法的克隆选择算子和免疫系统的免疫记忆特性,保证了算法寻优的快速性以及群体的多样性。此外,通过修改速度更新公式,把粒子群的搜索方向从单向变为多向,从而克服了 BPSO 算法中易陷入局部最优,进化后期收敛速度慢和精度不高等缺点。通过几个标准函数进行测试与评价,证明了 IMBPSO 算法具有良好的寻优性能。<br/ > A novel algorithm of BPSO is presented, which is named immune multi-direction binary particle swarm op- timization algorithm (IMBPSO). Operators including immune memory and clone selection of immune algorithm are introduced into BPSO in order to ensure the algorithm to find the best solution quickly and the diversity of colony. Fur- thermore, by modifying the formula of renewal of speed, the particle is translated from single direction into multi-di- rection. So it overcomes the disadvantages of BPSO algorithm, including falling into local best easily, low convergence speed as well as low quality in evolution evening. By testing and estimating with some standard functions, IMBPSO algorithm’s ability in finding the best solution is proved .
粒子群优化算法(Particle Swarm Optimization, PSO)是由Eberhart博士和Kennedy博士在1995年提出的一种新型全局优化进化算法[
为解决离散问题,Kennedy和Eberhart等人[
1998年Yuhuishi[
对于任何一个粒子i都包含如下3个向量:
向量记录了粒子在搜索空间第t次叠代时的位置;
向量包含了粒子在不受干扰的情况下位置的改变,即粒子第t次叠代时的飞行速度;
向量记录了粒子所找到的当前最优解的位置,即个体极值(记为Pbest)。
除了个体极值外,还有一个全体极值,即粒子群到目前为止找到的最优解,称为全局极值(记为Gbest),表示为:。在第t + 1次叠代时,粒子i按照下面规则更新位置和速度:
(1)
(2)
式中,ω为惯性权重,c1,c2为学习因子,randl和rand2为两个均匀分布在(0,l)之间的随机数;粒子个数I = 1,2, …, N;搜索空间的维数k = 1,2, …, n,t为迭代次数。
粒子通过不断学习更新,最终飞至解空间中最优解所在的位置,整个搜索过程结束,最后输出的Gbest就是算法找到的全局最优解。迭代终止条件根据具体问题一般选为最大迭代次数或粒子群迄今为止搜索到的最优位置满足预定最小适应阈值。
基本的PSO算法定义于连续的函数空间,为了解决工程实际中的组合优化问题,相对地,离散二进制优化算法具有很多优势,首先对于纯组合优化问题的表达形式要求优化算法离散的,其次二进制算法可以表达浮点数,因此也同样适用于连续空间的问题求解。BPSO算法中,每个粒子的位置使用二进制编码,粒子的速度定义为粒子位置改变的概率。
在BPSO中,将每一维xik和pbestik限制为1或者0,而速度vik不作这种限制。用速度来更新位置时,如果vik高一些,粒子的位置xik更有可能选1,vik低一点则xik选0,阈值在[0,1]之间,而有这种特点的函数就是模糊函数Sigmoid函数[
(3)
BPSO的速度的计算公式与SPSO相同,如式(1)。粒子位置更新公式为:
其中,rand()为服从均匀分布的随机数。这样xik被限制在集合中。
抗体多样性和免疫记忆是免疫系统的重要特性,在进化过程中,高亲和力低浓度的抗体受到促进,而低亲和力高浓度的抗体受到抑制,以此来保证抗体的多样性。免疫记忆是免疫系统将与入侵抗原反应部分的抗体作为记忆细胞保留下来。对于同类抗原的再次入侵,相应的记忆细胞被激活而产生大量的抗体。克隆选择是在给定的选择率,,在抗体群中选择部分抗体的确定性映射,克隆选择仅选择群体中亲和力较高的抗体参与繁殖及突变,而亲和力低的抗体仍存在于免疫系统中,并逐渐被驱除。
根据高浓度低亲和力的微粒(抗体)受到抑制,低浓度高亲和力的微粒(抗体)受到促进这一免疫原理,用基于浓度的选择概率来保证群体的多样性[
(5)
(6)
其中,满足,M为随机产生的新粒子(抗体),N为群体规模。
免疫算法的引入主要是为了保证粒子群中的粒子的多样性,因此粒子群中的初始化粒子不是随机产生,而是由免疫算法产生的抗体作为初始化粒子。满足约束条件的最优解即是抗原;候选解即是抗体,抗体和抗原之间的亲和力反映了候选解和最优解的接近程度,也即反映候选解对约束条件和目标函数的满足程度;抗体和抗体之间的亲和力反映了不同候选解之间的异同,也即反映了抗体的多样性。在进化算法中,保持抗体的多样性可以防止算法陷入局部最优解。依据抗体和抗原之间的亲和力来选择有效抗体能更好地体现“优胜劣汰”的原则,特别是当待选抗体相差不大时,“优胜劣汰”的效果更明显,搜索效率会更高[
BPSO算法中每个粒子仅根据自身的个体极值和全局极值这两个信息量来更新自己的速度和位置,并没有考虑其他粒子的信息,粒子群在解空间的搜索是单向的,因而精度不高。把粒子群的搜索方向从单向变为多向是提高速度的一种有效方法。为此,将速度更新公式(1)式修改成(7)式:
(7)
与BPSO算法相比,IMBPSO算法中的粒子根据最优的m个个体极值、全局极值和其他的一些粒子的信息来修正每个粒子下一次迭代的行动策略更新自己的速度和位置,从而考虑了更多粒子在迭代寻优过程中包含的信息,整个粒子群在解空间的搜索是多方向性的,搜索过程更均匀,能有效提高算法的精度和全局收敛能力[
如图1。
IMBPSO算法的实现步骤:
Step1:初始化粒子群的位置和速度;
Step2:计算每个粒子的适应度值;
Step3:对于每个粒子,将其适应值与所经历过的最好位置的适应度值进行比较,若较好。则将其作为当前的粒子最好位置;
Step4:对每个粒子,将其适应值与全局所经历的最好位置的适应度值进行比较。若较好。则将其作为当前的全局最好位置;
Step5:根据式(4)和(7)更新粒子的速度和位置;
Step6:产生记忆粒子(抗体)。将每一次迭代的Gbest
图1. IMBPSO算法的实现流程
作为记忆粒子放入记忆库中;
Step7:当Gbest连续进化若干代未有变化,如果达到终止条件,则结束;如果未达到终止条件,则停止进化,并按如下的方法更新粒子。否则转Step2;
Step8:更新粒子(抗体)。新粒子(抗体)由以下三种方式来分别产生:
a) 随机产生M个新粒子(抗体)。
b) 从记忆库中根据基于粒子(抗体)浓度的概率选择公式(5)和(6),选出个粒子(抗体)。
c) 克隆选择。对当前的更新代按选择率选择个较低适应度值(较高亲和力)的粒子(抗体)。其中满足(round()函数为就近取整数)。
形成新一代粒子(抗体)群。然后,返回Step2。
为测试免疫多向微粒群算法(IMBPSO)的性能,选择了四个著名的benchmark测试函数对IMBPSO和BPSO算法进行对比测试。四个测试函数如下:
F1:Sphere函数,它在时达到最小值0。
F2:Ackley函数,在时达到最小值0。
F3:Rastrigin函数,有很多正弦凸起的局部极小点。在处取到全局最小值0。
F4:Rosenbrock函数。是一个经典的优化函数,
表1. IMBPSO与BPSO的测试结果
在处取到全局最小值0。
测试条件:IBM笔记本T1400 1.83 GHz,512 M内存,Windows XP Processional, Matlab7.01下编程运行。
实验中种群规模为40,维数为10,F1和F2的最大进化代数是1000代,F3和F4的最大进化代数是5000代,F1和F2的误差设置为,F3和F4的误差为,各函数的取变量范围的上限。学习因子C1 = C2 = 2.0,惯性权重从0.9到0.4线性减少。克隆选择率,记忆粒子选择率为0.7。每组参数均重复实验10次,并给出相应参数下50次实验的收敛率、最好解、平均最优解、平均收敛代数。结果如表1所示。
从上面的实验结果可以看出,IMBPSO比BPSO有着更好的搜索性能。对于较易收敛的F1和F2,IMBPSO在与BPSO有着相同的收敛率和相近的平均最优解的情况下,收敛速度明显要好于BPSO。而对于较难收敛的F3和F4,IMPSO不管从收敛率还是收敛速度和平均最优解上都明显优于BPSO。
BPSO由于群体的多样性在进化后期变差,而导致收敛后期速度变慢,易陷于局部最优和收敛的精度降低。IMBPSO算法借鉴免疫学习中较好的多样性,将每一进化代的Gbest作为记忆细胞保存下来,并按基于浓度的选择概率来更替部分微粒,使进化群体保持了很好的多样性,有效地避免了算法陷于局部最优。同时对更替当前代中适应值较好的微粒进行克隆选择操作,从而加快了算法的收敛速度。测试结果也显示,MPSO算法具有精度高、收敛速度快的优点,为解决最优问题提供了一条新的途径。
[
[
[
[
[
[
[