最优化算法之遗传算法

192 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

最优化算法之遗传算法

一、算法模型

遗传算法(Genetic Algorithm)。算法的来源在这里不做过的的介绍了,下面我看看看它的模型和代码实现。

(1)编码方法

编码指的是使用一种方式对数值解进行编码。比如说数值解为5,但是我们在后面要对其进行交叉变异操作,单个数值5无法进行,所以要对其进行编码。 一般我们使用二进制编码的方式对数值解进行编码和解码。

(2)适应度函数

在求函数的最大值和最小值问题时,我们一般将其本身的函数作为适应度的计算函数。所谓适应度函数,目的是计算出适应度,选出适应度高的数值参加下一代的迭代。

(3)选择群体

选择群体的目的是选择出高适应度的解,使这些优良个体作为父代来繁殖下一代。 常用的选择方法是轮盘赌算法。(==这里大家看名词可能有些疑惑,或者感觉很难,其实就是更大概率选择出适应度高的解==): 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

(4)交叉

交叉是将选择后的解进行交叉,同时设置交叉概率,两个个体之间达到交叉概率后会发生交叉,交叉概率过大会搜索不必要的空间,一般交叉概率取0.9。常用的交叉方式有单点交叉和两点交叉: 在这里插入图片描述

(5)变异

上面讲到的交叉是算法的全局搜索能力,而这里的变异是解的局部开发能力。也就是说对单个个体,将其编码中的0变异为1或者将1变异为0。但是个体变异与否取决于变异概率,一般情况下变异概率取0.005左右。==例如==:一个种群有四个个体,每个个体由5位二进制编码,4 * 5 * 0.005 = 0.1;还不足一位,那么就不进行变异。

在这里插入图片描述

二、基本原理

1、编码

在这里插入图片描述

  • [1,10]之间有无数个数,所以需要精度来表示有限个数;
  • 数和二进制编码之间存在映射关系,而不是单纯的将数进行二进制转换,比如: 在这里插入图片描述

1.1编码精度

在这里插入图片描述

2、解码

在这里插入图片描述 在实现中,编码过程是直接生成二进制串,不需要十进制转二进制的代码。在解码过程中,实现二进制转十进制。

3、复制选择

常用的方法: 在这里插入图片描述

三、代码实现

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

参考资料: 1、《智能优化算法》 2、B站-遗传算法.