转载请注明出处

文章目录

  • 前言
  • 一、算法原理
  • 二、优化算法测试函数
  • 总结

前言

遗传算法(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则容易陷入局部最优解,而且算法不稳定。

遗传算法与粒子群算法性能的比较相关推荐

  1. 基于遗传算法和粒子群算法的PID悬架控制、LQR悬架控制和滑模悬架控制

    目录 1.基于遗传算法和粒子群算法的的PID悬架控制 1.1 两种悬架系统 1.1.1 将路面激励整合到悬架系统 1.1.2 不将路面激励整合到悬架系统 1.1.3 总结 1.2 PID经典控制理论 ...

  2. 遗传算法_粒子群算法优化支持向量机分类预测-附代码

    遗传算法/粒子群算法优化支持向量机分类预测-附代码 文章目录 遗传算法/粒子群算法优化支持向量机分类预测-附代码 1. 支持向量机简介与参数优化的原理 1.1 支持向量机SVM简介 1.2 优化参数的 ...

  3. MATLAB蚁群算法、遗传算法、粒子群算法解决TSP问题(可以直接运行)

    MATLAB蚁群算法.遗传算法.粒子群算法解决TSP问题(可以直接运行) 1. 生成数据文件citys_data.mat 2. 蚁群算法 流程图 代码 结果展示 3.遗传算法 流程图 代码 结果展示 ...

  4. 相控阵天线(四):阵列天线波束赋形(遗传算法、粒子群算法、进化差分算法、含python代码)

    目录 波束赋形简介 遗传算法波束赋形 粒子群算法波束赋形 差分进化算法波束赋形 智能算法比较 遗传算法波束赋形代码示例 波束赋形简介 根据期望的方向图辐射特性(如方向图形状.主瓣宽度.副瓣电平.方向性 ...

  5. 【多式联运】基于帝国企鹅算法、遗传算法、粒子群算法求解多式联运路径优化问题附matlab代码

    1 内容介绍 在军事运输中,采用多种运输方式联合投送是加强战略投送能力建设发展的重要途径,而路径规划是制定多式联运输送保障方案的关键第一步.本文提出了一个以遗传算法为主框架的解决方案,用来求解多式联运 ...

  6. 美赛 8:模拟退火算法、遗传算法、粒子群算法(智能算法篇)

    目录 一.模拟退火算法(Simulated annealing algorithm,SA) 1.SA的基本理论 2.SA求解函数最值 3.SA工具箱 二.遗传算法(Genetic Algorithm, ...

  7. 基于遗传算法和粒子群算法的混合算法实现小老鼠找奶酪问题

    此为老师留的大作业 算法依据:http://wenku.baidu.com/view/4387f569af1ffc4ffe47acc7 算法实现 #ifndef CHEESE_H #define CH ...

  8. 【OFDM仿真】基于秩亏情况下遗传算法和粒子群算法优化MIMO-OFDM系统多用户检测附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  9. 数学建模国赛 常考赛题类型(模拟退火算法、粒子群算法、遗传算法)

    不知小伙伴们有没有发现,在1992~2020年历年国赛赛题中,优化类赛题所占的比例非常大,如在近五年的题目中: 2016A:系泊系统的设计: 2017B:"拍照赚钱"的任务定价 2 ...

最新文章

  1. 3000 字详解 Pandas 数据查询,建议收藏
  2. JMeter入门(3):录制JMeter脚本
  3. opencv为matlab,OpenCV与matlab部分函数的对应关系(转)
  4. SpringMVC实现RESTful风格
  5. jupyter下Tensorflow-ssd测试整体流程,以及问题no module name**的解决
  6. 比较流行的10个博客系统程序对比选择
  7. cesium画飞线_基于Cesium绘制抛物弧线
  8. 《OpenGL编程指南》一3.2 OpenGL缓存数据
  9. 关于重定向printf出错 Error[Pe020]: identifier FILE is undefined 解决方案
  10. ECharts地图省市县在对应地图的中心位置
  11. 软件单元测试方法,单元测试的基本测试方法
  12. flash buidler 4.5 序列号
  13. java小数的数据类型_Java的基本数据类型
  14. word批量转PDF
  15. 同济大学计算机科学系下设几个专业,同济大学计算机科学与技术系简介
  16. heka 配置 一个go语言实现轻量级logstash 干掉ELK
  17. 【算法题解】2022年第四届河南省CCPC大学生程序设计竞赛(喜提银牌)
  18. [翻译]Why Functional Programming Matters
  19. html轮播鼠标悬停效果,jQuery图片轮播加悬停效果
  20. 对未来计算机的期盼,表达怀念过去期待未来的句子

热门文章

  1. 通信算法之七十九:无人机通信- WI-FI系统
  2. agi脚本_自我成长的AGI的承诺
  3. IDE集成开发环境介绍与安装
  4. python单分支结构_单分支结构
  5. 【控制篇 / 策略】(5.4) ❀ 02. 防火墙策略的作用 ❀ FortiGate 防火墙
  6. MySQL sql_mode设置
  7. OpenCV 图像直方图计算calcHist()
  8. 买卖股票的最jia时机
  9. 小学知识点~句式全覆盖专题
  10. 传奇服务器脚本文件在哪里,传奇NPC配置文件与脚本文件的关联