单目标优化算法——遗传算法(AG)

31 阅读5分钟

Genetic Algorithm

一、算法简介

  1. 简介:

    遗传算法是受进化启发的一系列计算模型。这些算法在简单的染色体样数据结构上编码特定问题的潜在解决方案,并对这些结构应用重组算子以保留关键信息。遗传算法通常被视为函数优化器,尽管遗传算法应用的问题范围相当广泛。遗传算法的实现从一群(通常是随机的)染色体开始。然后对这些结构进行评估,并分配繁殖机会,以这样一种方式:即对于目标问题有更好解决方案的染色体比那些有较差解决方案的染色体有更多的“繁殖”机会。一个解决方案的“好”通常是根据当前总体来定义的。

  2. 主要思想:

    遗传算法的主要思想是借鉴于达尔文的自然选择下的进化论模型。通过借鉴生物进化论,遗传算法将要解决的问题模拟成一个生物进化的过程,通过复制、交叉、突变等操作产生下一代的解,并逐步淘汰掉适应度函数值低的解,增加适应度函数值高的解。这样进化N代后就很有可能会进化出适应度函数值很高的个体,也就是目标函数值的最优化结果。

二、算法流程

  1. 几个概念

    ① 染色体(Chromosome): 染色体又可称为基因型个体(individuals),一定数量的个体组成了群体(population),群体中个体的数量叫做群体大小(population size)。

    ② 位串(Bit String): 个体的表示形式。对应于遗传学中的染色体。

    ③ 基因(Gene): 基因是染色体中的元素,用于表示个体的特征。例如有一个串(即染色体)S=1011,则其中的1,0,1,1这4个元素分别称为基因。

    ④ 特征值( Feature): 在用串表示整数时,基因的特征值与二进制数的权一致;例如在串 S=1011 中,基因位置3中的1,它的基因特征值为2;基因位置1中的1,它的基因特征值为8。

    ⑤ 适应度(Fitness): 各个个体对环境的适应程度叫做适应度(fitness)。为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数。这个函数通常会被用来计算个体在群体中被使用的概率。

    ⑥ 基因型(Genotype): 或称遗传型,是指基因组定义遗传特征和表现。对应于GA中的位串。

    ⑦ 表现型(Phenotype): 生物体的基因型在特定环境下的表现特征。对应于GA中的位串解码后的参数。

  2. 二进制编码

遗传算法的一个重要特征是对描述问题的变量进行编码。最常见的编码方法是将变量转换为二进制字符串或向量;当解向量为二进制时,GAs表现最佳。如果问题有多个变量,则通过连接与问题中变量数量相同的多个单变量编码来构造多变量编码。遗传算法同时处理多个解。

  1. 算法流程图:

img

  1. 详细流程

    • 对变量进行编码

      解决以下问题: 在这里插入图片描述

      编码空间和解空间: 在这里插入图片描述

      最常用的是包含1和0的二进制编码字符串。字符串的长度通常根据所需的解精度来确定。

      在这里插入图片描述

      求二进制串的十进制值:

      在这里插入图片描述

      字符串长度β与精度α之间的关系为: 在这里插入图片描述

    • 创建初始种群:

      初始种群是随机选择的一组有效候选解(个体)。由于遗传算法使用染色体代表每个个体,因此初始种群实际上是一组染色体。

    • 计算初始种群的适应度函数值:

      适应度函数的值是针对每个个体计算的。对于初始种群,此操作将执行一次,然后在应用选择、交叉和突变的遗传算子后,再对每个新一代进行。由于每个个体的适应度独立于其他个体,因此可以并行计算。

      由于适应度计算之后的选择阶段通常认为适应度得分较高的个体是更好的解决方案,因此遗传算法专注于寻找适应度得分的最大值。

      对于最大化问题,适应度函数就是目标函数

      如果是需要最小值的问题,则适应度计算应将原始值取反,例如,将其乘以值 (-1)。或者使用下列公式转换:

      在这里插入图片描述

    ​ O(i)为第i个个体的目标函数值,P为总体大小,V为保证适应度值不为负的较大值

    • 选择:在新的种群中产生更多更好字符串副本

      (1)轮盘赌的方式:(Fi是每个个体的适应度值)适应度值越高的个体被选中的概率越大

      在这里插入图片描述

      (2)随机剩余选择

    • 交叉:随机把其中几个位于同一位置的编码进行交换,产生新的个体

      一个站点(适用于较短串):

      在这里插入图片描述

      两个站点(适用于较长串):

      在这里插入图片描述

    • 变异:定期随机更新种群,有助于避免陷入局部最优

      位翻转突变:

      ​ 基因串上的“ 0”或“ 1”有一定几率变成与之相反的“ 1”或“ 0”。例如下面这串二进制编码:

      101101001011001

      ​ 经过突变后,可能变成以下这串新的编码:

      001101011011001

    1. 参数说明:

      交叉概率Pc

      • 决定了进化过程种群参加交叉的染色体平均数目。
      • 取值一般为0.4至0.99。
      • 也可采用自适应方法调整。

      变异概率Pm

      • Pm的值不宜过大。因为变异对已找到的较优解具有一定的破坏作用。
      • Pm的取值一般为0.001至0.1之间。
      • 也可采用自适应方法调整。