遗传算法(一)-- 什么是遗传算法

        好久没来更新了,今年一直在做一些还挺有意思的事情,最近一个月在研究遗传算法,学的也不是特别深,可以和大家分享一些很简单的心得,顺便自己再理理思路。


1 科学定义:

        遗传算法(Genetic Algorithm,GA)起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。本质上是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地搜索过程以求得最佳解。

2  相关术语:

        1 基因型(genotype):性状染色体的内部表现

        2 表现型(phenotype):染色体决定的形状的外部表现,或者说,根据基因形成的个体的外部表现;

        3 进化(evolution):种群逐渐适应生存环境,品质不断得到改良。生物的进化是以种群的形式进行的;

        4 适应度(fitness):度量某个物种对生存环境的适应程度

        5 选择(selection):以一定的概率从种群中选择若干个个体。一般,选择过程是一种基于适应度的优胜劣汰的过程;

        6 复制(reproduction):细胞分裂时,遗传物质DNA通过复制而转移到新产生的细胞中,新细胞就继承了旧细胞的基因

        7 交叉(crossover):两个染色体的某一相同位置处DNA被切断,前后两串分别交叉组合形成两个新的染色体,也称为基因重组或杂交;

 图2.1  一点交叉

 图2.2  两点交叉

 图2.3  均匀交叉

        8 变异(mutation):复制时可能(很小的概率)产生某些复制差错,变异产生新的染色体,表现出新的性状;

图2.4  变异 

        9 编码(coding):DNA中遗传信息在一个长链上按一定的模式排列。遗传编码可看作从表现型到基因型的映射;

        10 解码(decoding):基因型到表现型的映射;

        11 个体(individual):指染色体带有特征的实体;

        12 种群(population):个体的集合,该集合中个体数称为种群的大小;

3  如何理解遗传算法

        遗传算法中的每一条染色体,对应着遗传算法的一个解决方案,一般我们用适应性函数(fitness function)来衡量这个解决方案的优劣。所以从一个基因组到其解的适应度形成一个映射。可以把遗传算法的过程看作是一个在多元函数中寻找最优解的过程。可以这样想象,这个多维曲面里面有数不清的“山峰”,而这些山峰所对应的就是局部最优解。而其中也会有一个“山峰”的海拔最高,那么这个就是全局最优解。而遗传算法的任务就是尽量爬到最高峰,而不是陷落在一些小山峰。(另外,值得注意的是遗传算法不一定要找“最高的山峰”,如果问题的适应度评价是越小越好的话,那么全局最优解就是函数的最小值,对应的,遗传算法所要找的就是“最深的谷底”,即遗传算法所寻找的结果是根据适应度函数寻找到的最优解)。

4  遗传算法解决“袋鼠跳问题”

        既然我们将函数曲线理解为一个一个山峰和山谷组成的山脉。那么我们可以设想得到的每一个解就是一只袋鼠,我们希望它们不断向更高处跳去,直到跳到最高的山峰。所以求最大值的过程就转化成一个“袋鼠跳”的过程。

        遗传算法的实现过程实际上就像自然界的进化过程那样。首先寻找一种对问题潜在解进行“数字化”编码的方案(建立表现型和基因型的映射关系)。然后用随机数初始化一个种群(那么第一批袋鼠就被随意地分散在山脉上),种群里面的个体是解的数字化的编码。接下来,通过适当的解码过程之后(得到袋鼠的位置坐标),用适应性函数对每一个基因个体作一次适应度评估(袋鼠爬的越高其适应度也就越高)。用选择函数按照某种规定择优选择(每隔一段时间,在山上射杀一些所在海拔较低的袋鼠,以保证袋鼠总体数目持平)。让个体基因发生变异(让袋鼠可以随机地跳一跳),然后产生子代(希望存活下来的袋鼠是多产的)。

        遗传算法并不保证你能获得问题的最优解(这一点在后续的实践中也会有相应说明),但是使用遗传算法的最大优点在于你不必去了解和操心如何去找最优解(不必去指导袋鼠往哪边跳,跳多远),只需要简单否定一些表现不好的个体就行了。

4.1  遗传算法的优点

        1)与问题领域无关且快速随机的全局搜索能力。传统优化算法是从单个初始值迭代求最优解的;容易误入局部最优解。遗传算法从串集开始搜索,覆盖面大,利于全局择优。

        2)搜索从群体出发,具有潜在的并行性,可以进行多个个体的同时比较鲁棒性高

        3)搜索使用评价函数启发,过程简单

        4)使用概率机制进行迭代,具有随机性。遗传算法中的选择、交叉和变异都是随机操作而不是确定的精确规则。这说明遗传算法是采用随机方法进行最优解搜索选择体现了向最优解迫近交叉体现了最优解的产生变异体现了全局最优解的覆盖

        5)具有可扩展性,容易与其他算法结合。遗传算法求解时使用特定问题的信息极少,仅仅使用适应值这一信息进行搜索,并不需要问题导数等与问题直接相关的信息。遗传算法只需适应值和串编码等通用信息,故几乎可处理任何问题,容易形成通用算法程序。

        6)具有极强的容错能力。遗传算法的初始串集本身就带有大量与最优解甚远的信息通过选择、交叉、变异操作能迅速排除与最优解相差极大的串;这是一个强烈的滤波过程;并且是一个并行滤波机制。故而,遗传算法有很高的容错能力。

        遗传算法具有良好的全局搜索能力,可以快速将解空间中的全体解搜索出,而不会陷入局部最优解的快速下降陷阱;并且利用其内在的并行性,可以方便地进行分布式计算,加快求解速度。

4.2  遗传算法的缺点

​        1)遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还要对问题进行解码

​        2)三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分依靠经验。

​        3)没有能够及时利用网络的反馈信息,故算法的搜索速度比较慢,需要较精确的解需要较多的训练时间。

​        4)算法对初始种群的选择有一定的依赖性,能够结合一些启发算法进行改进(这是重点后续也会讲到)。

​        5)算法的并行机制的潜在能力没有得到充分的利用,这也是当前遗传算法的一个研究热点方向。

  • 0
    点赞
  • 5
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

ParzivalEdison

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值