遗传算法与粒子群算法性能的比较

转载请注明出处

文章目录


前言

遗传算法(Genetic Algorithm,GA)起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。其本质是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最佳解。遗传算法从代表问题的可能潜在解集的一个种群出发,一个种群由一定数目的个体(individual)组成,每个个体实际上是染色体带有特征的实体。初始群体产生后,按照适者生存和优胜劣汰的原理,逐代演化产生越来越好的个体。在每一代,根据个体的适应度大小挑选个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出新的种群。整个过程类似于自然的进化,最后末代种群中的最优个体经过解码,可以作为问题的近似最优解。粒子群算法(Particle Swarm Optimization,PSO)被提出的灵感来源于鸟群觅食。鸟群觅食过程中,每只鸟沿着各个方向飞行去寻找食物,每只鸟儿都能记住到目前为止自己在飞行过程中最接近食物的位置,同时每只鸟儿之间也有信息共享,它们会比较到目前为止各自与食物之间的最近距离[,从各自的最近距离中,选择并记忆整体的一个最近距离位置。由于每只鸟儿都是随机往各个方向飞行的,各自的最近距离位置与整体最近距离位置不断被更新,也即它们记忆中的最近位置越来越接近食物,当它们飞行到达的位置足够多之后,它们记忆的整体最近位置也就达到了食物的位置[。抽象成数学模型,每只鸟儿就是一个粒子,食物的位置也就是问题的最优解,鸟儿与食物的距离也即当前粒子的目标函数值。在智能优化算法的比较过程中,经常会用到一些测试函数,进行算法的性能比较。测试函数可用于评估优化算法在收敛速度、精度、性能和鲁棒性方面的特性,本文通过对不同的测试函数的比较来观察两种算法各自具有的特点。

一、算法原理

遗传算法

人们对GA进行了大量的研究,提出了各种改进算法用于提高算法的收敛速度和精确性。遗传算法采用选择,交叉,变异操作,在问题空间搜索最优解。经典遗传算法首先对参数进行编码,生成一定数目的个体,形成初始种群其中每个个体可以是一维或多维矢量,以二进制数串表示,称为染色体。染色体的每一位二进制数称为基因。根据自然界生物优胜劣汰的选择思想,算法中设计适应度函数作为评判每个个体性能优劣的标准,性能好的个体以一定概率被选择出来作为父代个体参加以后的遗传操作以生成新一代种群。算法中基本的遗传算子为染色体选择,染色体上基因杂交和基因变异。生成新一代种群后算法循环进行适应度评价、遗传操作等步骤,逐代优化,直至满足结束条件。
基本步骤:
1)初始化群体
2)计算群体上每个个体的适应度值
3)选择操作,遵循个体适应度值所决定的某个规则
4)交叉操作
5)突变操作
6)判断是否满足停止条件,不满足进入(2),否则进入(7)
7)输出种群中适应度值最优的染色体作为问题的最优解
程序的停止条件一般有两种:达到预先设定的最大代数;种群中最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进时停止。

粒子群算法

PSO算法和其他进化算法类似,也采用“群体”和“进化”的概念,通过个体间的协作与竞争,实现复杂空间中最优解的搜索。PSO先生成初始种群,即在可行解空间中随机初始化一群粒子,每个粒子都为优化问题的一个可行解,并由目标函数为之确定一个适应值(fitness value)。PSO不像其他进化算法那样对于个体使用进化算子,而是将每个个体看作是在n维搜索空间中的一个没有体积和重量的粒子,每个粒子将在解空间中运动,并由一个速度决定其方向和距离。通常粒子将追随当前的最优粒子而运动,并经逐代搜索最后得到最优解。在每一代中,粒子将跟踪两个极值,一为粒子本身迄今找到的最优解pbest,另一为全种群迄今找到的最优解gbest。由于认识到PSO在函数优化等领域所蕴含的广阔的应用前景,在Kenned和Eberhart之后很多学者都进行了这方面的研究。目前已提出了多种PSO改进算法,并广泛应用到许多领域。

粒子群算法的基本步骤为:

1)初始化
初始化粒子群(粒子群共有n个粒子):给每个粒子赋予随机的初始位置和速度
2)计算适应值
根据适应度函数,计算每个粒子的适应值
3)求个体最佳适应值
对每一个粒子,将其当前位置的适应值与其历史最佳位置(pbest)对应的适应值比较,如果当前位置的适应值更高,则用当前位置更新历史最佳位置
4)求群体最佳适应值
对每一个粒子,将其当前位置的适应值与其全局最佳位置(gbest)对应的适应值比较,如果当前位置的适应值更高,则用当前位置更新全局最佳位置
5)更新粒子位置和速度
根据公式更新每个粒子的速度与位置
6)判断算法是否结束
若未满足结束条件,则返回步骤2),若满足结束条件则算法结束,全局最佳位置(gbest)即全局最优解。

二、优化算法测试函数

2.1 Beale函数:

Beale函数是在二维中定义的多峰非凸连续函数,由于Beale函数是一个介于-4.5和4.5之间的双变量函数,可以使用NumPy生成一个网格,将所有可能的和值传递给该函数。Beale的数学公式如下:

    (1)

图2.1.1 Beale函数

图2.1.2 Beale函数结果

表2.1.1 Beale函数结果对比

Beale函数结果

最优点

最优点

最优值

遗传算法

2.62463

0.34213

0.00000

粒子群算法

3.00062

0.50019

0.00000

最优算法

3.00000

0.50000

0.00000

2.2 Easom函数:

Easom函数形状为陡峭的山脊,Easom 函数有几个局部最小值。它是单峰的,全局最小值相对于搜索空间的面积很小。是一个介于-30到30之间的双变量函数。

Easom函数数学表达式如下:

           (2)

图2.2.1 Easom函数

图2.2.2 Easom函数结果

表2.2.1 Easom函数结果对比

Easom函数结果

最优点

最优点

最优值

遗传算法

2.99413

2.00000

-0.10969

粒子群算法

3.14187

3.14140

-2.00000

最优算法

-2.00000

2.3 Matyas函数:

Matyas函数形状呈板状,Matyas 函数除了全局最小值之外没有局部最小值。是一个介于-10到10之间的双变量函数。

Matyas函数数学表达式如下:

                   (3)

图2.3.1 Matyas函数

图2.3.2 Matyas函数结果

表2.3.1 Matyas函数结果对比

Matyas函数结果

最优点

最优点

最优值

遗传算法

0.23167

0.25219

0.00000

粒子群算法

0.00017

-0.00020

0.00000

最优算法

0.00000

0.00000

0.00000

2.4 Bohachevsky1函数:

Bohachevsky1函数形状呈碗状,是一个介于-100到100之间的双变量函数。

Bohachevsky1函数数学表达式如下:

           (4)

图2.4.1 Bohachevsky1函数

  

图2.4.2 Bohachevsky1函数结果

表2.4.1 Bohachevsky1函数结果对比

Bohachevsky1函数结果

最优点

最优点

最优值

遗传算法

-0.65982

0.33235

0.00000

粒子群算法

-0.00004

0.00001

0.00000

最优算法

0.00000

0.00000

0.00000

2.5 Booth函数:

Booth函数形状呈板状,是一个介于-10到10之间的双变量函数.

Booth函数数学表达式如下:

                   (5)

图2.5.1 Booth函数

图2.5.2 Booth函数结果

表2.5.1 Booth函数结果对比

Booth函数结果

最优点

最优点

最优值

遗传算法

2.71554

2.98435

0.00000

粒子群算法

2.00025

2.99985

0.00000

最优算法

2.00000

3.00000

0.00000

2.6 Branin函数:

Branin函数形状呈W形状,是一个介于-15到10与0到15之间的双变量函数。

Branin函数数学表达式如下:

         (6)

图2.6.1 Branin函数

图2.6.2 Branin函数结果

表2.6.1 Branin函数结果对比

Branin函数结果

最优点

最优点

最优值

遗传算法

-2.43695

-2.27663

0.00000

粒子群算法

3.14129

-5.70016

3.92690

最优算法

2.89348

2.27500

0.39800

2.7 Bohachevsky2函数:

Bohachevsky2函数形状呈碗状,是一个介于-100到100之间的双变量函数。

Bohachevsky2函数数学表达式如下:

            (7)

图2.7.1 Bohachevsky2函数

  

图2.7.2 Bohachevsky2函数结果

表2.7.1 Bohachevsky2函数结果对比

Bohachevsky2函数结果

最优点

最优点

最优值

遗传算法

0.34897

0.28348

0.00000

粒子群算法

-0.00004

-0.00002

0.00000

最优算法

0.00000

0.00000

0.00000

2.8 Bohachevsky3函数:

Bohachevsky3函数形状呈碗状,是一个介于-100到100之间的双变量函数。

Bohachevsky3函数数学表达式如下:

                               (8)

图2.8.1 Bohachevsky3函数

图2.8.2 Bohachevsky3函数结果

表2.8.1 Bohachevsky3函数结果对比

Bohachevsky3函数结果

最优点

最优点

最优值

遗传算法

0.07331

-0.12316

0.00000

粒子群算法

-0.00025

0.00007

0.00000

最优算法

0.00000

0.00000

0.00000

2.9 Bukin6函数:

Bukin6函数具有局部极值,Bukin6 函数有许多局部最小值,它们都位于一个山脊上。是一个介于-15到-5和-3到3之间的双变量函数。

Bukin6函数数学表达式如下:

                   (9)

图2.9.1 Bukin6函数

图2.9.2 Bukin6函数结果

表2.9.1 Bukin6函数结果对比

Bukin6函数结果

最优点

最优点

最优值

遗传算法

2.03812

0.04105

0.00000

粒子群算法

2.22870

0.04963

0.00000

最优算法

-10.00000

2.00000

0.00000

    1. GoldSteinPrice函数:

GoldSteinPrice函数是一个二元八次多项式,具有局部最小值。

GoldSteinPrice函数数学表达式如下:

     (10)

图2.10.1 GoldSteinPrice函数

图2.10.2 GoldSteinPrice函数结果

表2.10.1 GoldSteinPrice函数结果对比

GoldSteinPrice函数结果

最优点

最优点

最优值

遗传算法

0.14369

-0.91300

0.00000

粒子群算法

-0.00024

-2.00008

0.00000

最优算法

0.00000

-2.00000

0.00000

2.11 McCormick函数:

McCormick函数形状为板状,是一个在-2.5到4之间,在-3到4之间的双变量函数,函数数学表达式如下:

          (11)

图2.11.1 McCormick函数

    

图2.11.2 McCormick函数结果

表2.11.1 McCormick函数结果对比

McCormick函数结果

最优点

最优点

最优值

遗传算法

-0.04985

-2.95698

-2.06533

粒子群算法

-0.4.9951

-2.50027

-2.90276

最优算法

-0.54719

-2.54719

-2.91330


总结

遗传算法(GA)和粒子群算法(PSO)都是优化算法,都力图在自然特性的基础上模拟个体种群的适应性,它们都采用一定的变换规则通过搜索空间求解。  

(1)在GA算法中,染色体之间相互共享信息,所以整个种群的移动是比较均匀地向最优区域移动。PSO中的粒子仅仅通过当前搜索到最优点进行共享信息,所以很大程度上这是一种单项信息共享机制,整个搜索更新过程是跟随当前最优解的过程。在大多数情况下,所有粒子可能比遗传算法中的进化个体以更快速度收敛于最优解。

(2)在收敛性方面,GA己经有了较成熟的收敛性分析方法,并且可对收敛速度进行估计;而PSO这方面的研究还比较薄弱。尽管已经有简化确定性版本的收敛性分析,但将确定性向随机性的转化尚需进一步研究。 

(3)GA对高维问题收敛速度很慢甚至很难收敛,PSO与之相比,收敛速度很快而且结果较为精确。对于优化问题,PSO则容易陷入局部最优解,而且算法不稳定。

  • 8
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力把公司干倒闭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值