0
点赞
收藏
分享

微信扫一扫

基因表达式编程(GEP)自学 第【3】天 Python 实现

少_游 2022-01-30 阅读 81

基本基因表达式算法

1. 个体种群

像所有的遗传算法一样,GEP采用个体种群,而且最开始必须产生初始种群。后续的种群都是这些初始种群或者奠基种群经过遗传修饰得到的后代。我们已经看到,在基因型/表现型系统中,我们只需要产生个体染色体,然后由发展过程来控制后续工作。因此,在GEP中,只需要随机产生初始种群的简单个体染色体结构。而且这是一个非常小的任务。对每个问题而言,我们必须选择产生染色体的符号,也就是说,我们必须选择适合解决当前问题的函数集和终点集。我们还要选定每个基因的长度,每个染色体中的基因个数,以及这些染色体的表达式之间如何相互.作用。最后,我们必须提供一个选择环境(适应度样本集)来计算个体的适应度。然后,个体按照其适应度被选中,进行有修饰的复制,在下一代中产生新的成员。这个种群经历同样的发展过程,产生另一代新的群体。该过程重复若干代,直到发现一个优良解。
先大致了解下算法的流程:

在这里插入图片描述
【PS:献给英文不太好的】
在这里插入图片描述

1.1. 初始种群的产生

初始种群的染色体由解决特定问题的分别代表函数和终点的符号随机产生。

例如,假设我们想知道如何用AND,OR和 NOT来表示Majority(a,b,c)函数。这种情况下,函数集的选择并不复杂,函数集的构成为F={A,O,N},分别代表布尔函数AND,OR和 NOT。终点集的选择也不复杂,终点集的构成为T={a,b c},分别代表多数函数的三个参数。因此,对于该问题而言,基因的头部将从六个不同符号中随机生成(A,O, N,a,b, C),而基因的尾部从一个较小的字符集随机中生成,该符号集包含三个符号(a,b,c)。

(1)有:多数函数的真值表如下表所示。
对于该问题而言,所有的过渡状态集用来构成选择环境,以计算每个程序的适应度。选择环境也可以较正式地称为适应度样本集。该问题的适应度函数也不难猜测,它对应每个特定个体计算正确的适应度样本的个数。
在这里插入图片描述
(2)初始种群的产生
条件:

  • 基因的头部将从六个不同符号中随机生成(A,O, N,a,b, c)。
  • 基因的尾部从一个较小的字符集随机中生成,该符号集包含三个符号(a,b,c)。
  • 每个基因的长度为7(h=3,t=4),是根据 t=h(n-1)+1。

随机生成初始种群
在这里插入图片描述
上图.一个用来求解Majority函数问题的较小初始种群的染色体。这些随机生成的染色体由两个基因构成,对由OR连接的子表达式树进行编码。
(3)计算个体的适应度
【PS:后边对应的就是计算出来的适应度】

在这里插入图片描述在这里插入图片描述
Majority函数,适应度如何计算,简单的举个例子:
看第8条染色体,其对应的表达树如下:
在这里插入图片描述
写成布尔表达式:
在这里插入图片描述
【PS:想得没错,我们的目标就是寻找一个式子的适应度为8的】
(4)后续代和精英策略
假设:代与代之间,最佳个体(或者最佳个体之一)被原样复制到下一代中。如果种群中有多个个体具有最佳适应度,那么选择最后一个进行复制。

最佳个体复制操作,也称为精英策略,保证至少有一个后代是可存活的(显然,只有在代与代之间的选择环境保持不变时),同时在逐渐适应过程中保持个体的最优特性。

【PS:变异、转座、重组的细节后边在说,这伪了流程完整,我们就直接产生了新的一代】
在这里插入图片描述
(5)然后就是重复操作,直到符合结束的条件
【PS:幸运第二代找到了适应度为8的染色体,在第8条】
在这里插入图片描述
在这里插入图片描述
用来求解Majority 函数问题的下一代计算机程序。这一代的个体是上一代中选中的个体的直接后代。注意这里找到了一个具有最大适应度值的完美程序(8号染色体),因此该程序比起祖先要好很多。

看下其表达式树:
【PS:当然这里我再一次进行人工验证。。】
在这里插入图片描述
在这里插入图片描述

2. 适应度函数与选择

2.1. 适应度函数和选择环境

在这里插入图片描述
在这里插入图片描述
【PS:或许一开始看起来不太好理解,接下来我举个例子就好理解了,
在这里插入图片描述

2.2. 选择

我们要如何根据适应度进行选择?
在GEP中,个体通过赌盘轮采样策略根据其适应度进行选择(Goldberg 1989)。每个个体用圆形赌盘的一块来代表其适应度的比例。赌盘按照群体中个体数的值进行相应次数的旋转,从而始终保持群体的大小不变。采用这种选择策略,确实有时候会丢失一些最佳个体,而一些普通个体进入到了下一代。但是这样也不一定就不好,因为种群会一代一代地向前推进。而且,因为我们使用每一代中的最佳个体复制策略,所以最佳个体的存在和复制能够得到保证。这样,至少最优的特性从来没有丢失过,并且能够达到不断学习的目的。

3. 有修饰的复制

3.1. 复制和选择

(1)这里举例一个简单复制和选择的例子(没有任何变异,运用的是赌盘策略)
轮盘赌算法:轮盘赌选择方法,轮盘赌选择又称比例选择算子,其基本思想是:各个个体被选中的概率与其适应度函数值大小成正比。
设种群个体大小为N,个体的适应度为 f(xi),则个体的选择概率为:
在这里插入图片描述
在这里插入图片描述
如图所示.复制和选择示例。仅采用复制和赌盘原理以使这些算子更容易理解。注意,例如第О代的8号染色体(最佳个体之一)没有留下后代,而6号染色体(一个中等个体〉留下的后代数量最多。

在这里插入图片描述
在这里插入图片描述
如图所示.遗传漂变示例。在这个极端的情况下,种群在第13代以后完全丧失遗传多样性,其所有成员都是一个染色体的后代,在这里,该染色体是第0代的0号染色体

3.2. 变异

变异可以发生在染色体内的任何位置。然而,染色体的结构组织必须保持完整。所以在头部中,任何符号都可以变成符号或者终点;在尾部中,终点只能够变成终点。通过这种方法,染色体的结构组织得以保持,而且由变异产生的新个体是结构上正确的程序。
在这里插入图片描述
如图所示 求解Majority(a,b,c)函数的一个初始种群及通过变异产生的后代。由OR连接的子表达式树编码的染色体。注意后代与其初始种群中的第0代祖先完全相同。第6代(1号染色体)发现的完美解和其假定的祖先之一用黑体标识。注意第5代的1号和3号染色体也可能成为完美解的祖先,在两种情况下,复制时出现两个点变异。

(1)变异可能带来变化,例如:
在这里插入图片描述
(2)变异也可能没带来变化(中性变异

在这里插入图片描述

3.3. 转座和插入序列元素

GEP的转座元素是基因位的片断,它们可以被激活后跳到染色体中别的位置。在GEP中有三种转座元素(TransposableElements):

  1. 起始位置上是函数或终结点的短片段转座到基因的头中除根部以外的位置(Insertion Sequence Elements,IS元素)
  2. 起始位置上是函数的短片段转座到基因的根部(Root Insertion Sequence Elements,RIS元素)
  3. 整个基因转座到染色体的起始位置。

(1)IS转座:
IS转座是从种群中随机选择一个染色体,然后随机从IS转座长度中选择IS长度,然后在染色体中选择IS长度的基因片段,并随机选择基因,插入到除基因首元素之外的头部部分中,如下所示:
在这里插入图片描述
在这里插入图片描述
(2)RIS转座
所有的RIS元素都是从一个函数开始,因此是选自头部分中的序列。因此在头中任选一点,沿基因向后查找,直到发现一个函数为止。该函数成为RIS元素的起始位置。如果找不到任何函数,则变换不执行任何操作。该算子随机选取染色体,需要修饰的基因,RIS元素以及其长度。变化过程如图所示:

举报

相关推荐

0 条评论