基因表达式编程(Gene Expression Programming,GEP)是由葡萄牙科学家Candida Ferreira 2001年提出来的一种新型遗传算法,其特点是将基因型和表现型分离。GEP 继承了GA的快速、易用和GP的易变、多能,比GA,GP提高速度100 - 1000000倍。而GEP与遗传算法(GA)和遗传编程(GP)的根本区别在于它们的个体性质不同,在GA中个体是固定长度的线性串(染色体),GP中个体是长度和形状不同的非线性实体,而在GEP中个体编码成固定长度的线性串(基因组或者染色体),然后被表达成不同长度和形状的非线性实体(表达式树)。相比之下,GEP具有染色体简单,线性和紧凑、易于遗传操作等特点。
GEP中有两个主体:表达式树和染色体,遗传信息在染色体中,而表达式树则是染色体的表达。因此,遗传操作在固定长度的线性编码的染色体上进行,而个体评价是在染色体解码得到的表达式树上进行,即操作和评价相分离。染色体由若干个基因组成,每个基因由头部和尾部组成,头部可以包含是函数符号和终结符号(包括编程中的输入,常量,或者没有参数的函数),尾部仅有终结符号。而且基因的起始点总是第一个符号,终止点并不一定是最后一个符号,终止点后的符号组成GEP基因的非编码区。
GEP算法的过程是:先随机产生初始化染色体,再将染色体换化成表达式树,评价表达式树,判断是否已经进化成最终目标,是就输出最终目标,否则利用轮盘赌进行选择机确定下一代的个体,再利用遗传操作,生成新一代染色体,回到第二步。
其中,对表达式评价就是要评测表达式计算得到的数据和训练数据的符合程度。主要有两个公式测评:基于绝对误差的适应度函数和基于相对误差的适应度函数,在GEP中,一般采用第二个公式。
进化遗传操作包括复制和遗传算子。复制算子只复制选择算子所选择的个体,不会产生基因的多样性。GEP基因结构性和简单线性编码,使得GEP的遗传算子比较丰富,主要有:变异、逆串、插串、根插串、基因插串、单点重组、双点重组、基因重组等八大算子。所有的遗传操作只要保证基因的合法结构,它就能解码为合法的程序。
变异是在单个染色体上,对染色体的每一位进行随机测试,如果满足变异的概率,则重新产生该位的编码。要注意的是,头部变异时,可以选择所有的符号;尾部变异时,只能选择终结符。而GA的变异是不分头和尾的。
插串是随机在基因中选择一段子串, 然后将该子串插入到头部的随机指定的一个位置(但不能是第0 个位置), 将头部的其他符号向后顺延, 超过头部长度的编码将被截去。
根插串算子从头部的随机选择的一个位置开始向后扫描, 找到第一个函数, 然后以该位置为起始, 选择一段子串,将该子串插入到第0 个位置, 头部编码依次后移, 超过头部的部分被截去。如果扫描过程没有找到函数, 则不做任何事情
基因插串是随机选择一个基因,把整个基因插到染色体的头部。其余的基因依次顺延,超出的基因被删除。所有的遗传操作中只有基因插串能够移动一个完整的基因。
单点重组作用在两个父代染色体上, 随机选择一个交叉位置, 互换交叉点后面的染色体部分, 得到两个子代染色体。
双点重组也是作用在两个父代染色体上。在染色体上随机选择两个交叉点, 然后互换交叉点之间的染色体部分。
基因重组只作用于多基因的染色体。随机选择一个基因, 然后交换两个父代染色体的相对因的基因。
自从GEP首次引入以来,现在GEP有了更多的优化,很多问题也都采用GEP算法来解决。最新的研究有:韩啸等人引入基因表达式编程算法,通过使用适当的遗传算子,采用线性定长的编码方式,构造新的智能组卷方法,以避免传统组卷算法成功率低以及适应性差等问题,来解决多约束条件下试卷的分数分配、章节分配、难度等一系列问题。邓磊等人提出了双系统协同进化的基因表达式编程算法,该算法由自然进化系统和人工干预系统共同合作组成,人工干预系统包括个体干预和种群干预,也就是人工根据基因库数据类型进行优胜劣汰的自然选择,选择目的为帮助人类更好地进化成长和淘汰掉不适应现阶段发展需求的人类生存劣势特征。 王杰等人利用基因表达式编程强大的函数挖掘能力,找出影响地铁隧道土建造价的不确定因素与其延米造价之间的非线性关系,来构建预测模型估算车站区间隧道土建造价,进而估算整条地铁线路隧道部分土建工程的造价。Iftikhar Azim等人利用用基因表达编程的显着特征来建立RC梁柱子结构CAA能力的预测模型。
基因表达式编程的任务指派问题求解算法设计与实现 - 程序流程图 - 博客园 https://www.cnblogs.com/java20130723/archive/2012/12/19/3211488.html
基因表达式编程——GEP_人工智能_GerHard 的博客-CSDN博客 https://blog.csdn.net/guohao_zhang/article/details/79543270?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
基因表达式编程算法及其应用研究pdf下载_爱问共享资料 https://ishare.iask.sina.com.cn/f/avllHMBTxFC.html
基因表达式编程GEP算法及其应用研究 - 图文 - 百度文库 https://wenku.baidu.com/view/c43e40758e9951e79b892755.html