第一次学习优化算法之遗传算法、粒子群算法

遗传算法

            基本思想:1、根据问题的目标函数构造适值函数(Fitness Function);

                              2、产生一个初始种群(100-1000);

                              3、根据适值函数的好坏,不断选择繁殖;

                              4、若干代后得到适值函数最好的个体即最优解。

              构成要素: 1、种群(Population),种群大小(Pop-size)

                               2、基因表达法——编码方法;

                               3、遗传算子(Genetic Operator)——交叉、变异

                               4、选择策略:一般为正比选择)——选择种群中适应值高的个体,适者生存,优胜劣汰。

                               5、停止准则(Stopping Rule/Criterion)

               算法流程图:

                           

               算法步骤:1、初始种群的产生:随机产生(依赖于选择的编码方法——二进制编码/实数编码);种群大小(依赖于计算机的计算机能力和计算复杂度)。

                                 2、编码方法——二进制编码(用0,1字符串表达)。二进制适用于三种情况:背包问题+实时优化+指派问题。二进制编码缺点:编码长不利于计算;二进制编码优点:便于位值计算,包括的实数范围大。

                                 3、适值函数——根据目标函数设计。用适值函数F(x)标定目标函数f(x)可采用方法:-minf(x)或maxf(x)

                                 4、遗传算法——交叉和变异。

                                 5、选择策略——最常用的是正比选择,选择概率的计算公式:,得到选择概率P后,采用轮转法,计算得到轮转法的元素:,随机产生,当,则选择个体i。

                         图例:

                                         

                                       6、停止准则  ——通常指定最大迭代次数。

   交叉不是所有点都交叉,设定一个交叉概率    ,一般选较大数,比如0.9

                         (一)单切点交叉

                                   随机产生一个断点(Cutting Point)[1,n-1]

                                   例题:

                         (二)双切点交叉

                                    例题:

变异:初始种群中没有需要的基因,在种群中按变异概率      任选若干位基因改变位值0→1或1→0,

有意想不到的结果,    一般设定得比较小,在5%以下。变异的可能是很小的,比如在陷入局部最优时

例题:NP:种群数量。

 

粒子群算法(Particle Swarm Optimization)

           优点:简单易行、收敛速度快、设置参数少

           算法介绍

                 每个寻优问题解都被想像成一只鸟,称为粒子。所有粒子都在一个D维空间进行搜索。

                 所有的粒子都由一个fitness function 确定适应值以判断目前的位置好坏。

                 每一个粒子必须赋予记忆功能,能记住所搜寻到的最佳位置。

                 每一个粒子还有个速度以决定飞行的距离和方向这个速度根据它本身的飞行经验以及同伴的飞行经验进行动态调整。

            求最优解的过程中的符号表达

                   D维空间中,有N个粒子;

                        粒子i位置:xi=(xi1,xi2,xiD),将xi代入适应函数f(xi)求适应值;

                       粒子i速度:vi=(vi1,vi2,viD)

                       粒子i个体经历过的最好位置:pbesti=(pi1,pi2,piD)

                       种群所经历过的最好位置:gbest=(g1,g2,gD)

                   通常,在第d(1≤d≤D)维的位置变化范围限定在内,速度变化范围限定在内(即在迭代中若Vid,Xid,超出了边界值,则该维的速度或位置被限制为该维最大速度或边界位置)

               q粒子i的第d维速度更新公式,

                       由三部分组成:粒子先前的速度(可理解为惯性速度)

                                                粒子本身的思考(粒子i当前位置与自己最好位置之间的距离)

                                                粒子间的社会经验(粒子i当前位置与群体最好位置之间的距离)

        图解:

                  

             q粒子i的第d维位置更新公式:

          —第k次迭代粒子i飞行速度矢量的第d维分量

          —第k次迭代粒子i位置矢量的第d维分量

              c1,c2—加速度常数,调节学习最大步长

              r1,r2—两个随机函数,取值范围[0,1],以增加搜索随机性

              w —惯性权重,非负数,调节对解空间的搜索范围

粒子群优化算法的算法流程图

         

粒子群算法的构成要素

       群体大小m:m是一个整型参数。m很小时陷入局部最优的可能性很大;m很大时,POS优化能力很好,当群体数目增长至一定水平时,再增加不再有显著的作用。

       权重因子:惯性因子w:w=1是基本粒子群算法;w=0表示失去对粒子本身的速度的记忆。

                         学习因子c1:c1=0——无私型粒子群算法。缺点:迅速丧失群体多样性,易陷入局部最优而无法跳出。

                         学习因子c2:c2=0——自我认知型粒子群算法。缺点:完全没有信息的社会共享,导致算法的收敛速度很慢。

       最大速度Vm:Vm较大时,探索能力增强,但是粒子容易飞过最优解;Vm较小时,开发能力增强,但容易陷入局部最优。Vm一般设为每维变量的变化范围的10%~20%。

       邻域的拓扑结构:分为两种:将群体内所有个体都作为粒子的领域、只将群体中的部分个体作为粒子的领域。领域拓扑结构决定群体历史最优位置。故将粒子群算法分为全局粒子算法和局部粒子算法。

       停止准则:最大迭代步数、可接受满意度。

              粒子空间初始化较好地选择粒子的初始化空间,将大大缩短收敛时间.初始化空间根据具体问题的不同而不同,也就是说,这是问题依赖的.    

             例子:

                   

发布了15 篇原创文章 · 获赞 44 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_42312574/article/details/94003170