遗传算法的基本原理和方法

本文转载自http://blog.sina.com.cn/s/blog_5698433c0102v0d9.html

一、编码

编码:把一个问题的可行解从其解空间转换到遗传算法的搜索空间的转换方法。

解码(译码):遗传算法解空间向问题空间的转换。

二进制编码的缺点是汉明悬崖(Hamming Cliff),就是在某些相邻整数的二进制代码之间有很大的汉明距离,使得遗传算法的交叉和突变都难以跨越。

格雷码(Gray Code):在相邻整数之间汉明距离都为1。

(较好)有意义的积木块编码规则:所定编码应当易于生成与所求问题相关的短距和低阶的积木块;最小字符集编码规则,所定编码应采用最小字符集以使问题得到自然的表示或描述。

二进制编码比十进制编码搜索能力强,但不能保持群体稳定性。

动态参数编码(Dynamic Paremeter Coding):为了得到很高的精度,让遗传算法从很粗糙的精度开始收敛,当遗传算法找到一个区域后,就将搜索现在在这个区域,重新编码,重新启动,重复这一过程,直到达到要求的精度为止。

编码方法:

1、 二进制编码方法

缺点:存在着连续函数离散化时的映射误差。不能直接反映出所求问题的本身结构特征,不便于开发针对问题的专门知识的遗传运算算子,很难满足积木块编码原则

2、 格雷码编码:连续的两个整数所对应的编码之间仅仅只有一个码位是不同的,其余码位都相同。

3、 浮点数编码方法:个体的每个基因值用某一范围内的某个浮点数来表示,个体的编码长度等于其决策变量的位数。

4、 各参数级联编码:对含有多个变量的个体进行编码的方法。通常将各个参数分别以某种编码方法进行编码,然后再将他们的编码按照一定顺序连接在一起就组成了表示全部参数的个体编码。

5、 多参数交叉编码:将各个参数中起主要作用的码位集中在一起,这样它们就不易于被遗传算子破坏掉。

评估编码的三个规范:完备性、健全性、非冗余性。

二、选择

遗传算法中的选择操作就是用来确定如何从父代群体中按某种方法选取那些个体遗传到下一代群体中的一种遗传运算,用来确定重组或交叉个体,以及被选个体将产生多少个子代个体。

常用的选择算子:

1、 轮盘赌选择(Roulette Wheel Selection):是一种回放式随机采样方法。每个个体进入下一代的概率等于它的适应度值与整个种群中个体适应度值和的比例。选择误差较大。

2、 随机竞争选择(Stochastic Tournament):每次按轮盘赌选择一对个体,然后让这两个个体进行竞争,适应度高的被选中,如此反复,直到选满为止。

3、 最佳保留选择:首先按轮盘赌选择方法执行遗传算法的选择操作,然后将当前群体中适应度最高的个体结构完整地复制到下一代群体中。

4、 无回放随机选择(也叫期望值选择Excepted Value Selection):根据每个个体在下一代群体中的生存期望来进行随机选择运算。方法如下

(1) 计算群体中每个个体在下一代群体中的生存期望数目N。

(2) 若某一个体被选中参与交叉运算,则它在下一代中的生存期望数目减去0.5,若某一个体未被选中参与交叉运算,则它在下一代中的生存期望数目减去1.0。

(3) 随着选择过程的进行,若某一个体的生存期望数目小于0时,则该个体就不再有机会被选中。

5、 确定式选择:按照一种确定的方式来进行选择操作。具体操作过程如下:

(1) 计算群体中各个个体在下一代群体中的期望生存数目N。

(2) 用N的整数部分确定各个对应个体在下一代群体中的生存数目。

(3) 用N的小数部分对个体进行降序排列,顺序取前M个个体加入到下一代群体中。至此可完全确定出下一代群体中M个个体。

6、无回放余数随机选择:可确保适应度比平均适应度大的一些个体能够被遗传到下一代群       体中,因而选择误差比较小。

7、均匀排序:对群体中的所有个体按期适应度大小进行排序,基于这个排序来分配各个个体被选中的概率。

8、最佳保存策略:当前群体中适应度最高的个体不参与交叉运算和变异运算,而是用它来代替掉本代群体中经过交叉、变异等操作后所产生的适应度最低的个体。

9、随机联赛选择:每次选取几个个体中适应度最高的一个个体遗传到下一代群体中。

10、排挤选择:新生成的子代将代替或排挤相似的旧父代个体,提高群体的多样性。

三、交叉

遗传算法的交叉操作,是指对两个相互配对的染色体按某种方式相互交换其部分基因,从而形成两个新的个体。

适用于二进制编码个体或浮点数编码个体的交叉算子:

1、单点交叉(One-point Crossover):指在个体编码串中只随机设置一个交叉点,然后再该点相互交换两个配对个体的部分染色体。

2、两点交叉与多点交叉:

(1) 两点交叉(Two-point Crossover):在个体编码串中随机设置了两个交叉点,然后再进行部分基因交换。

(2) 多点交叉(Multi-point Crossover)

3、均匀交叉(也称一致交叉,Uniform Crossover):两个配对个体的每个基因座上的基因都以相同的交叉概率进行交换,从而形成两个新个体。

4、算术交叉(Arithmetic Crossover):由两个个体的线性组合而产生出两个新的个体。该操作对象一般是由浮点数编码表示的个体。

四、变异

遗传算法中的变异运算,是指将个体染色体编码串中的某些基因座上的基因值用该基因座上的其它等位基因来替换,从而形成以给新的个体。

以下变异算子适用于二进制编码和浮点数编码的个体:

1、基本位变异(Simple Mutation):对个体编码串中以变异概率、随机指定的某一位或某几位仅因座上的值做变异运算。

2、均匀变异(Uniform Mutation):分别用符合某一范围内均匀分布的随机数,以某一较小的概率来替换个体编码串中各个基因座上的原有基因值。(特别适用于在算法的初级运行阶段)

3、边界变异(Boundary Mutation):随机的取基因座上的两个对应边界基因值之一去替代原有基因值。特别适用于最优点位于或接近于可行解的边界时的一类问题。

4、非均匀变异:对原有的基因值做一随机扰动,以扰动后的结果作为变异后的新基因值。对每个基因座都以相同的概率进行变异运算之后,相当于整个解向量在解空间中作了一次轻微的变动。

5、高斯近似变异:进行变异操作时用符号均值为P的平均值,方差为P2的正态分布的一个随机数来替换原有的基因值。

五、适应度函数

适应度函数也称评价函数,是根据目标函数确定的用于区分群体中个体好坏的标准。适应度函数总是非负的,而目标函数可能有正有负,故需要在目标函数与适应度函数之间进行变换。

评价个体适应度的一般过程为:

1、对个体编码串进行解码处理后,可得到个体的表现型。

2、由个体的表现型可计算出对应个体的目标函数值。

3、根据最优化问题的类型,由目标函数值按一定的转换规则求出个体的适应度。

适应度函数的设计主要应满足以下要求:

1、单值、连续、非负、最大化。

2、合理、一致性。较难。

3、计算量小。

4、通用性强。

由目标函数f(x)到适应度函数Fit(f(x))的转换方法有以下三种:

1、直接以待解的目标函数f(x)转换为适应度函数。

      Fit(f(x))=f(x)  目标函数为最大化问题

      Fit(f(x))=-f(x) 目标函数为最小化问题

问题:可能不满足常用的轮盘赌选择中概率非负的要求;某携带求解的函数在函数值分布上相差很大,由此得到的平均适应度可能不利于体现种群的平均性能。

2、做转换。(具体转换方法略)

3、同2,转换公式不同。

    适应度尺度变换(Fitness Scaling Transform):在遗传算法的不同阶段,对个体的适应度进行适当的扩大或缩小。常用的尺度变换方法如下:

1、线性尺度变换:F'=aF+b

2、 乘幂尺度变换:F'=Fk

3、 指数尺度变换:F'=exp(-beitaF)

六、约束条件处理

1、搜索空间限定法:对遗传算法的搜索空间的大小加以限制,使得搜索空间中表示一个个体的点与解空间中的表示一个可行解的点有一一对应关系。

2、可行解变换法:在由个体基因型向个体表现型的变换中,增加使其满足约束条件的处理过程,即寻找个体基因型与个体表现型的多对一变换关系,扩大了搜索空间,使进化过程中所产生的个体总能通过这个变换而转化成杰空间中满足约束条件的一个可行解。

3、罚函数法:对在解空间中无对应可行解的个体计算其适应度时,处以一个惩罚函数,从而降低该个体的适应度,使该个体被遗传到下一代群体中的概率减小。

遗传算法的基本原理和方法相关推荐

  1. 遗传算法的基本原理和方法(转)

    遗传算法的基本原理和方法 一.编码 编码:把一个问题的可行解从其解空间转换到遗传算法的搜索空间的转换方法. 解码(译码):遗传算法解空间向问题空间的转换. 二进制编码的缺点是汉明悬崖(Hamming ...

  2. 软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型

    文章目录 软件危机 软件的定义 软件危机典型表现 产生软件危机的原因 消除软件危机的方法 软件工程 什么是软件工程 软件工程的本质特征 软件工程的基本原理 软件工程方法学 传统方法学 面向对象方法学 ...

  3. 3DGIS第二章 大数据量场景加速绘制基本原理与方法

    对于仅有几百个多边形和几十兆的低分辨率纹理简单场景,在现阶段一般配置的计算机上也很容易达到实时仿真的目标.然而,随着场景规模的增大,大规模虚拟场景中往往包含上万个多边形,甚至多达几百万个多边形和几百兆 ...

  4. 大数据量场景加速绘制基本原理与方法

    对于仅有几百个多边形和几十兆的低分辨率纹理简单场景,在现阶段一般配置的计算机上也很容易达到实时仿真的目标.然而,随着场景规模的增大,大规模虚拟场景中往往包含上万个多边形,甚至多达几百万个多边形和几百兆 ...

  5. 第二章 大数据量场景加速绘制基本原理与方法

    对于仅有几百个多边形和几十兆的低分辨率纹理简单场景,在现阶段一般配置的计算机上也很容易达到实时仿真的目标.然而,随着场景规模的增大,大规模虚拟场景中往往包含上万个多边形,甚至多达几百万个多边形和几百兆 ...

  6. 遗传算法在计算机视觉上的应用,基于LTS Hausdorff距离与遗传算法的图像配准方法...

    摘 要: 提出了一种基于LTS Hausdorff距离与遗传算法" title="遗传算法">遗传算法的图像配准" title="图像配准&qu ...

  7. 聚类分析--基本原理、方法(Kmeans,层次聚类)

    文章目录 聚类分析的定义 基本原理 商业应用场景 聚类分析步骤 聚类分析方法 层次分析法/系统聚类法(小样本) 提问:如何选择合适的分类结果 K-means 疑问: 聚类分析的定义 聚类分析就是将研究 ...

  8. 个人理财有哪些基本原理和方法?

    现金为王:不超额消费,不使用信用卡,不负债(房贷除外) 信贷消费已经成为主流的今天,强调使用现金似乎与时代格格不入.而对于信贷消费的依赖,常常来自于下面几个看起来十分有力的观点: 1.信贷消费可以积累 ...

  9. 冒泡法(基本原理和方法)(c语言篇)

    学习冒泡排序法 一.引入数组概念 二.掌握循环嵌套 三.思考排序方法 四.编译程序 五.调试运用(检错优化) 一. *数组是一组具有相同数据类型的数据的有序集合. *数组中的每一个元素都属于同一个数据 ...

  10. matlab遗传算法中的变异操作,遗传算法流程图?遗传算法的基本原理?遗传算法 交叉和变异?简单遗传算法MATLAB实现(4)...

    对上一节中的函数进行优化,设置遗传算法相关参数,程序如下 function run_ga() elitism = true;%选择精英操作 pop_size = 20;%种群大小 chromo_siz ...

最新文章

  1. python网络爬虫权威指南 百度云-Python网络爬虫权威指南(第2版)
  2. 【转载】Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
  3. GitHub被中国人霸榜!国外开发者不开心了
  4. 南邮java实验报告,南邮微机原理实验报告精选.doc
  5. SQL SERVER-Extendevent系统视图
  6. Nmap的高级扫描(脚本)
  7. MinIO Docker 快速入门 ​​​​​​​
  8. class括号里的object_使用es5和es6实现继承详解以及class的基本使用
  9. 打印系统开发(42)——静默打印
  10. Android四大组件的作用
  11. 如何学习plc编程?(核心秘诀分享)
  12. 【读书笔记】大数据 数据挖掘 相关
  13. 代码统计工具 cloc 和 scc
  14. ​分享 17 款你可能会用的上 Chrome 插件
  15. 软件 -- 如何解除 tv15商业版的限制
  16. java版我的世界附魔指令_我的世界手机版附魔指令 怎么使用附魔指令大全
  17. 十个前端程序员必备的网站
  18. 公开「处刑」!波士顿动力的搬砖机器人,私下竟「翻车」不断
  19. 计算机退出安全模式,电脑安全模式的进入与退出的方法
  20. StrStrI 与 strstr

热门文章

  1. 【VRP问题】基于帝国企鹅优化算法求解冷链配送物流车辆调度优化研究(Matlab代码实现)
  2. hs8346v5联通 说明书_中兴Memo V5S说明书
  3. RLS实现求解最小二乘确定性正则方程
  4. PTA练习4-11 统计素数并求和
  5. 论文记载:FRAP:Learning Phase Competition for Traffic Signal Control
  6. sudo chmod 755 ....指令分析
  7. linux 内核 触摸屏,7. Linux - 触摸屏(电阻屏)驱动程序实现
  8. SmartUpload出现的问题
  9. linux文件系统 ext3,Linux环境中使用Ext3文件系统
  10. matlab神经网络训练方法,matlab神经网络模型导出