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

目录

  • 1. 表达式树【★★★★】
    • 1.1 开放阅读框(ORFs)
  • 2. 基因的结构和功能组织【★★★★】
  • 3. 翻译后的相互作用和连接函数【★★★】
  • 4. 其他术语【★】
    • 4.1 Karva语言:GEP的语言
  • 5. 参考书籍

1. 表达式树【★★★★】

【ps:这里先看懂表达式树是怎么转换为数学式子

PS:注意结合前边内容
基因表达式编程(GEP)自学 第【1】天 Python 实现

1.1 开放阅读框(ORFs)

GEP的结构组织从开放阅读框(Open Reading Frames,ORFs)的角度来说更容易理解。在生物学上,一个 ORF序列,或者基因编码的序列,开始于一个“起始”密码子,接着是一些氮基酸密码子,最后止于一个“终止”密码子。然而一个基因不仅仅包含各自的 ORF,还包含起始密码子之前的序列和终止密码子之后的序列。虽然在GEP中起始点通常都是某个基因的第一个基因位,然而终点并不一定与基因的最后一个基因位重合。对于GEP来说,在终点以后有未编码区域是十分常见的。(这里我们暂时不考虑这些未编码区域,因为它们并不影响表达式的产生。)
例1
如数学表达式:
在这里插入图片描述
可以用如下表示:
基因表达式编程(GEP)自学 第【2】天 Python 实现_第1张图片

其中Q表示开方函数
其对应的基因型为:
在这里插入图片描述
该基因型是直接将表达树从左到右,自上而下读出的结果。表示式 【3】就是一个ORF。
将这些ORF称为K-表达式(源自 Karva语言)。

例2
在这里插入图片描述
对应表达式树如下:
基因表达式编程(GEP)自学 第【2】天 Python 实现_第2张图片

2. 基因的结构和功能组织【★★★★】

GEP的基因由一头一尾两部分构成。

  • 头部由包含既代表函数又代表终点的符号构成,
  • 尾部仅仅含有终点。

对每个问题而言,头的长度h是选定的,而尾的长度t是h和n的函数,其中n是所需变量数最多的函数的参数个数(也称为最大操作数),t的大小由下面的方程:在这里插入图片描述
考虑如下这个由**函数集为F={Q,*,/,-,+}终点集为T={a,b}**构成的基因。在这里,n=2 。如果我们选择h=15,那么t=15x(2-1)+1=16:所以基因g的长度为15+16=31。下面给出一个这样的基因(尾部用粗体标识):
【PS:

  • 函数集:目前可以简单理解为就是一些运算符的集合。
  • 终点集:就是一些参数的集合。
  • 头部包括:{代表函数和代表终点的符号构成}。长度为:h。
  • 尾部包括:{仅仅含有终点}。长度为:t。
  • 头部长度和尾部长度的关系:t=h(n-1)+1。
  • n表示:所需变量数最多的函数的参数个数(也称为最大操作数)。
  • 给出例子n进一步解释:其中Q表示开方函数,n之所以为2,是因为Q运算的参数为1,而
    *,/,-,+,都需要2个参数,n是变量数最多的函数的参数个数,所以取最大值为2。


在这里插入图片描述
其编码成如下表达式树:
基因表达式编程(GEP)自学 第【2】天 Python 实现_第3张图片
可以注意到ORF终止于第7位,但是基因终止于第30位。
【PS:

  • ORF从前往后读,到第7位就结束,需要参数都补齐了,理解为对应生物学基因中遇到“终止”密码子

假设基因发生了变异:
用“+”来替换第5位上的“a”。得到如下的染色体:
在这里插入图片描述其编码成如下表达式树:
基因表达式编程(GEP)自学 第【2】天 Python 实现_第4张图片
在此,ORF的终止点到了第19位。

多基因染色体
GEP 染色体通常由等长的多个基因构成。对于每个问题,基因的数目以及头的长度都根据情况来选定。每一个基因可以对一个子表达式树进行编码而且子表达式树相互作用构成一个更复杂的实体。
如下例子:
基因表达式编程(GEP)自学 第【2】天 Python 实现_第5张图片

3. 翻译后的相互作用和连接函数【★★★】

从进化学的角度来说,用一个特定的连接函数来连接子表达式树是简单、高效的。的确,从单基因系统到多基因系统,效率得到很大的提高。尽管这种人工的复杂度提高了(这里“人工”一词的意思是说这种复杂度的增加不是由系统自身的进化引起的),但是多基因系统的进化仍然非常高效,所以可以用它们来进化得到不同问题的解。原则上说来,对系统从外部强加更高级别的复杂度可能的,但是这并不保证系统的性能会提高。复杂的进化系统不是这样产生的:高级别的复杂系统建立在较低级别的复杂性之上,而且复杂度的进化或多或少具有连续性。虽然GEP中的子表达式树间的相互作用确实可以用更高级别的复杂度来编程。为了达到这个目的,我们创造了一类特别的基因一—homeotic基因――来控制个体的发展。这些基因的表达会导致不同的程序或者细胞。因此,homeotic基因决定哪些基因在哪个细胞中表达以及它们之间如何相互作用。

如下:
在这里插入图片描述

传统的基因像往常对3个不同的子表达式树进行编码。homeotic基因控制不同子表达式树之间的相互作用。注意,homeotic基因有其特殊的长度和特殊的函数集。对于这个特定的例子,homeotic基因的头部的长度h等于5,而其它基因的头部长度等于3;homeotic基因的函数集FH为FH={+,* ,Q},其它基因的函数集为F={+,-,* ,/)。
如图下图所示。

基因表达式编程(GEP)自学 第【2】天 Python 实现_第6张图片
【PS:

  • homeotic基因:简单理解和前边的传统基因翻译并没有什么区别,就是变成连接前边传统基因的作用,其中的终点集合变成了数字,数字对应前边的传统基因。


例2 :homeotic基因为2个
使用一个以上的homeotic基因显然会导致一个多细胞系统,其中每个homeotic基因将不同组的基因放到一起。例如,考虑如下的染色体:
在这里插入图片描述
该染色体对3个传统基因和2个homeotic基因(用粗体标识)编码。其表达式(如下图)导致两个不同的细胞或程序,每个细胞或程序分别用不同的方法来表达不同的基因。

基因表达式编程(GEP)自学 第【2】天 Python 实现_第7张图片

4. 其他术语【★】

4.1 Karva语言:GEP的语言

我们已经看到,每个基因对一个特定的子表达式树进行编码,而且每个子表达式树对应一个特定的K-表达式或开放阅读框。由于这种对应十分简单、优雅,所以K-表达式实际上是非常紧凑、容易理解的计算机程序。我们已经看到多级子表达式树如何轻易地转化成线性K-表达式,这种转换对任何代数的,布尔的,或者非传统的表达式来说都是十分容易的。的确,GEP的语言一—Karva语言――是一种功能十分强大的表达方式,它可以以简单、非常紧凑的符号串形式进化相对比较复杂的程序。事实上,已经有商业软件可以自动将K-表达式和GEP染色体转换成传统的C十+或Visual Basic函数,例如Gepsoft公司的AutomaticProblem Solver.

5. 参考书籍

基因表达式编程第6版

本文作者:九重!
本文链接:https://blog.csdn.net/weixin_43798572/article/details/122713023
关于博主:评论和私信会在第一时间回复。或者直接私信我。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【点赞】【收藏】一下。您的鼓励是博主的最大动力!

你可能感兴趣的:(GEP,python,开发语言,算法)