最优化算法之遗传算法

最优化算法之遗传算法

    • 一、算法模型
      • (1)编码方法
      • (2)适应度函数
      • (3)选择群体
      • (4)交叉
      • (5)变异
    • 二、基本原理
      • 1、编码
        • 1.1编码精度
      • 2、解码
      • 3、复制选择
    • 三、代码实现

一、算法模型

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

(1)编码方法

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

(2)适应度函数

在求函数的最大值和最小值问题时,我们一般将其本身的函数作为适应度的计算函数。所谓适应度函数,目的是计算出适应度,选出适应度高的数值参加下一代的迭代。
最优化算法之遗传算法_第1张图片

(3)选择群体

选择群体的目的是选择出高适应度的解,使这些优良个体作为父代来繁殖下一代。
常用的选择方法是轮盘赌算法。(这里大家看名词可能有些疑惑,或者感觉很难,其实就是更大概率选择出适应度高的解):
最优化算法之遗传算法_第2张图片
最优化算法之遗传算法_第3张图片
最优化算法之遗传算法_第4张图片

(4)交叉

交叉是将选择后的解进行交叉,同时设置交叉概率,两个个体之间达到交叉概率后会发生交叉,交叉概率过大会搜索不必要的空间,一般交叉概率取0.9。常用的交叉方式有单点交叉和两点交叉:
最优化算法之遗传算法_第5张图片

(5)变异

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

最优化算法之遗传算法_第6张图片

二、基本原理

1、编码

最优化算法之遗传算法_第7张图片

  • [1,10]之间有无数个数,所以需要精度来表示有限个数;
  • 数和二进制编码之间存在映射关系,而不是单纯的将数进行二进制转换,比如:
    最优化算法之遗传算法_第8张图片

1.1编码精度

最优化算法之遗传算法_第9张图片

2、解码

最优化算法之遗传算法_第10张图片
在实现中,编码过程是直接生成二进制串,不需要十进制转二进制的代码。在解码过程中,实现二进制转十进制。

3、复制选择

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

三、代码实现

最优化算法之遗传算法_第11张图片
最优化算法之遗传算法_第12张图片
最优化算法之遗传算法_第13张图片
最优化算法之遗传算法_第14张图片

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

你可能感兴趣的:(最优化算法,算法)