文章目录

  • 什么是遗传算法
  • 遗传算法用在什么地方

  • 1. 优化问题
  • 2. 组合优化问题
  • 3. 机器人运动选择问题
  • 4.特征选择
  • 遗传算法原理与步骤
  • 1. 基因编码
  • 2. 定义种群大小并初始化
  • 3. 适应度函数
  • 4. 选择进化
  • 6. 变异
  • 7. 多代进化,重复上述2-6步骤
  • 遗传算法总结
  • 优点
  • 缺点


什么是遗传算法

在问题最优求解中,我们可能会遇到问题不容易求解的情况,或者不存在凹凸性的情况,或者采用暴力求解不可行如NP问题等。这时候一种思路是采用遗传算法。所谓遗传算法(Genetic Algorithm,GA)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是通过自然进化过程搜索最优解的方法。遗传算法中非常重要的一个概念就是我们在生物课学习的基因。在最优化问题求解的中,解就是基因序列。举个不太恰当的例子,在相亲市场上,我们总希望选择一个最好的对象,对象的基因有身高,财富,有没有房啊,颜值几分啊。 设对象的完美表达为
遗传算法 机器学习 遗传算法的原理及应用_遗传算法 机器学习
其中对象的基因都有其约束值。然而每个人都是有缺点的,随着人类的繁衍进化,会产生越来越适应社会和审美的后代,那么最终会有一代人的[身高,身材,颜值]的值使得上述表达式最大。

遗传算法用在什么地方

遗传算法用在很多领域,主要解决问题较难求解的领域。下面我们列举几个领域。

1. 优化问题

如下带约束的问题,乍一看就难求解,我们可以用遗传算法来求解。

遗传算法 机器学习 遗传算法的原理及应用_优化问题_02

2. 组合优化问题

背包问题,背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。

3. 机器人运动选择问题

机器人移动类似于迷宫问题,机器人的策略选择很多,求解最优计算量很大,可以用遗传算法来求解。这里可以参考

4.特征选择

在某些情况下,使用原始数据训练机器学习算法可能不是合适的选择。该算法在接受原始数据训练时,必须进行特征挖掘,以检测不同组之间的差异。但这需要大量的数据来自动执行特征挖掘。对于小数据集,数据科学家最好自己进行特征挖掘步骤,之后告诉机器学习算法要使用哪个特征集。因此特征集的选择是一个困难。而遗传算法可以解决该问题。

遗传算法原理与步骤

1. 基因编码

首先要对问题的潜在解进行数字化编码,编码的方式可以有二进制编码、浮点编码、符合编码等。他们各有优劣,根据问题需要来原则。一般而言,二进制使用较多。例如对于上面所述的优化问题,对于遗传算法 机器学习 遗传算法的原理及应用_优化问题_03这个问题,采用二进制编码。为避免使用小数点,可以将自变量放大,进行转换编码。

遗传算法 机器学习 遗传算法的原理及应用_优化问题_04

由此可见变量x1可以转换成二进制编码

2. 定义种群大小并初始化

种群中应包含一定数目的染色体。多个染色体构成一个种群。下表就是包含n个染色体个体的种群。

基因序列

染色体个体

000000000000000000 000000000000000

染色体1

000000000000000011 000000001100000

染色体2

000110000000000011 000010001100000

染色体3


染色体n

种群一般由随机产生。

3. 适应度函数

适应度还是就是我们的优化目标,我们把种群里的每个个体带入到适应度函数里就可以得到个体的适应度。在这里,对编码过的基因需要解码然后带入到目标函数。若优化目标是求最大值,那么带入函数计算,结果越大代表适应度越强。

4. 选择进化

“物竞天择,适者生存”是遗传算法进化的核心思想,接下来要根据适应度来决定哪些个体被淘汰,哪些个体被自然选择而进化。自然选择方法有很多,包括轮盘赌选择,随机竞争选择,最佳保留选择,确定式选择等。这里简单介绍一下轮盘赌选择。
具体步骤如下:
(1)首先计算出所有个体的适应度总和Σfi。
(2)其次计算出每个个体的相对适应度大小fi/Σfi,类似于softmax。
(3)再产生一个0到1之间的随机数,依据随机数出现在上述哪个概率区域内来确定各个个体被选中的次数。
5. 交叉
经过选择进化过后的个体开始交叉繁衍。过程实际上是染色体基因相互交叉的过程,这里可以设定参数交叉率,来确定对交叉的选择。
(1)先对群体随机配对。
(2)再随机设定交叉点的位置。
(3)再互换配对染色体间的部分基因

6. 变异

设定另外一个参数“变异率”,通过修改染色体上随机位置的一个基因实现变异。

7. 多代进化,重复上述2-6步骤

通过设置迭代次数(一般是200~500次)或者条件,终止算法。获得最佳的种群。

遗传算法总结

优点

遗传算法主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索空间,自适应地调整搜索方向。有良好的全局搜索能力,可以快速地将解空间中的全体解搜索出,而不会陷入局部最优解的快速下降陷阱。

缺点

1、遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还需要对问题进行解码,
2、另外三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验.
3、没有能够及时利用网络的反馈信息,故算法的搜索速度比较慢,要得要较精确的解需要较多的训练时间。
4、算法对初始种群的选择有一定的依赖性,能够结合一些启发算法进行改进。
5、算法的并行机制的潜在能力没有得到充分的利用,