什么是遗传算法?

遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法

遗传算法的基本原理

遗传算法将“优胜劣汰,适者生存”的生物进化原理引入优化参数形成的编码串联群体中(什么是优化参数形成的编码串联群体后面解释),按所选择的适应度函数并通过遗传中的复制、交叉及变异对个体进行筛选,是适应度高的个体被保留下来,组成新的群体。新的群体既继承了上一代的信息,又优于上一代,这样周而复始,群体的适应度不断提高,直到满足一定的条件。
遗传算法接地那,可并行处理,并能得到全局最优解

遗传算法的基本操作

复制:从就种群中选择生命力强的个体产生新种群的过程。具有高配适应度的个体更可能在下一代中产生一个或多个子孙
交叉:复制操作能从旧种群中选择出优秀者,但不能创造出新的染色体。交叉模拟了生物进化过程中的有性繁殖现象,通过染色体的交换组合,产生新的优良品种
变异:模拟生物在自然的遗传环境中由于各种偶然因素引起的基因突变,以很小的概率随机的改变遗传基因的值。在染色体以二进制编码的系统中,它随机的将染色体的某一个基因由1变成0或由0变成1

遗传算法的关键概念

编码:编码是第一步工作,编码是通过某种机制把求解问题抽象为由特定符号按一定顺序排成的串。二进制编码是常见的编码方式
初始种群:确定编方案后,遗传算法通常采用随机方法生成若干个个体的集合,该集合称为初始种群。初始种群的规模称之为种群规模
适应度函数:遗传算法对一个个题的好坏用适应度函数来评价。适应度高的个体被遗传到下一代种群中的概率大,适应度小的个体被遗传到下一代群体中的概率小。
遗传算子:选择操作的任务就是按照某种方法从父带群体中选取一些个体,遗传到下一代群体。选择算子采用轮盘赌选择方法,又称比例算子,它的基本思想是:各个个体被选中的改路与其适应度函数值大小成正比。就是按比例算的意思。
轮盘赌的实现方式如下
①计算群体中所有个体的适应度函数函数值
②采用比例算子的公式,计算每个个体被选中遗传到下一代群体的概率
③采用模拟赌盘的操作,来确定各个个体是否被遗传到下一代群体中

交叉运算:交叉运算是指对两个相互配对的染色体一句交叉概率按某种方式相互交换其部分基因,从而形成新的个体。是产生新个体的主要方法
变异运算:变异运算是指按照变异概率将个体编码串中的某些基因值用其他基因值来替换,从而形成新的个体。遗传算法中的变异运算是产生新个体的辅助方法,它决定了遗传算法的局部搜索能力,同时保持了种群的多样性。交叉运算和变异运算的相互配合,共同完成对搜索空间的全局搜索和局部搜索。变异算子采用基本位变异算子。基本位变异算子是指对个体编码串随机指定的某一位或某几位基因做变异运算。

举个例子说明上述的过程

现在需要求解x1^2+x2^2的最大值,x1和x2的取值范围为0-7的整数。编码:因 为x1, x2 为 0 ~ 7之间的整 数,分别用3位无符号二进制整数来表示将它们连接在一起所组成的6位无符号二进制数就形成了个体 的基因型,表示一个可行解。如:基因型 X=101110 所对应的表现型是:x=[ 5,6 ]。个 体的表现型x和基因型X之间可通过编码和解码程序相互转换

初始群体的产生:就是采用随机产生的方法,产生四个个体,比如可以为:011101,101011,011100,111001.

适应度计算:遗传算法采用适应度的大小来评定各个个体的优劣程度,决定遗传几率的大小。在这个求解过程中可以直接使用目标函数值为适应度函数。

选择运算:选择运算(或称为复制运算)把当前群体中适应度较高的个体按某种规则或模型遗传到下一代群体 中,一般要求适应度较高的个体将有更多的机会遗传到下一代群体中

。采用与适应度成正比的概率来确定各个个体复制到下一代群体中的数量。其具体操作过程是:先计算出群体中所有个体的适应度的总和,其次计算适应度的大小,此即为每个个体遗传到下一代群体中的概率,最后再产生一个0到1之间的随机数,依据随机数出现在上述哪一个概率区域内确定各个个体被选中的次数。

上面过程如下

机器学习遗传算法影响 对遗传算法的理解_遗传算法


初始种群是随机产生的,前三位是x1后三位x2,比如011换算成十进制就是3,101换算成十进制就是5,因此011101对应的x1和x2就是3和5.适应度值就是将x1和x2带入目标函数计算。每个适应度计算完成后除以总和,就是适应度值占总数的百分比。由百分比确定选择的次数。然后得出选择的结果。(这一块我的理解是我们已经有初始的种群了,而且初始的种群在一个转盘中的占比是不同的,那么我们就按占的百分比进行旋转,转到谁就是谁。这一步的原理就是谁的适应度更好,谁就会有更大的可能被留下来)

下一步进行交叉运算

机器学习遗传算法影响 对遗传算法的理解_遗传算法_02


上图中,1-2交叉,交叉位置是2,即01|1101和11|1001交叉,变成011001和111101,3-4交叉同理。

上面的交叉结果就是新的个体,下一步进行编译操作:

机器学习遗传算法影响 对遗传算法的理解_机器学习遗传算法影响_03


对应不同的变异位点,产生了新的子代群体。

对子代群体再次进行适应度计算。

机器学习遗传算法影响 对遗传算法的理解_搜索_04


可以发现,我们找到了个体编号为2的111111子群体,适应度最好。完成了求解的过程。

参考文献

遗传算法及其应用pdf,下载链接 http://read.pudn.com/downloads82/ebook/317809/GA.pdf
知乎上一篇遗传算法的讲解:https://zhuanlan.zhihu.com/p/93749379
这一篇也不错:https://www.jianshu.com/p/ae5157c26af9?from=singlemessage