基于统计分析和停滞速度的GEP自动建模摘要:介绍了基因表达式程序设计的基本原理,并针对经典GEP算法存在的不足提出了一种基于统计分析和停滞速度的改进GEP算法――SACVGEP。其特点在于:用重复体统计的方法改进了初始种群的生成;提出停滞速度概念;引入了动态变异算子。最后,将该算法用于求解复杂函数自动建模并与传统方法、神经网络方法、经典GEP方法等进行比较。实验结果表明,用此方法建立的模型比传统方法、神经网络方法、经典GEP等方法具有更好的性能。关键词:基因表达式程序设计;自动建模;统计分析;停滞速度:TP391.9文献标志码:A:1001-3695(2008)08-2312-04AutomaticmodelingofnovelgeneexpressionprogrammingbasedonstatisticalanalysisandcriticalvelocityLIKang-shun??1,2??,PANWei-feng??1,ZHANGWen-sheng??2,WANGFeng??3(1.SchoolofInformationEngineering,激angxiUniversityofScienceTechnology,Ganzhou激angxi341000,China;2.InstituteofAutomation,ChineseAcademyofSciences,Bei激ng100080,China;3.SchoolofComputer,WuhanUniversity,Wuhan430072,China)Abstract:ThispaperbrieflyintroducedthebasicprincipleofGEP.AndastotheshortcomingsofclassicGEP,proposedanovelGEPbasedonstatisticalanalysisandstagnancyvelocity(SACVGEP).Itmainlyhadthefollowingcharacteristics.First,improvedtheinitialpopulationbystatisticanalysisofrepeatbodies.Second,introducedtheconceptofstagnancyvelocity.Third,introduceddynamicmutationoperatorparedwithothermethodsliketraditionalmethods,neuralnetworkmethods,classicGEPanditslikeinautomaticmodelingofcomplexfunction,thesimulationresultsshowthattheSACVGEPisthebest.Keywords:geneexpressionprogramming(GEP);automaticmodeling;statisticalanalysis;criticalvelocity基因表达式程序设计[1]是演化计算家族中的新成员,是由葡萄牙科学家Candida于2001年草创的,是一种基于基因组和表现型组的新的自适应演化算法。它综合了遗传算法(GA)和遗传程序设计(GP)的优点,具有染色体简单、线性和紧凑、易于遗传操作等优点,比普通的遗传编程在效率上高2~4??个数量级[2]。国内在GEP研究方面以四川大学起步较早,已经将其应用于函数发现、时间序列预测、分类问题等领域[3~6];中国地质大学也将GEP应用于经济预测和瓦斯涌出量预测中[7,8]。函数自动化建模(自动化程序设计)是预测领域的重要问题之一[9],最常用的方法是采用最小二乘法进行曲线拟合来近似函数,但这种方法对问题的约束过多,而且只能求解简单问题[10]。目前,也有人用神经网络、遗传程序设计等实现了复杂函数自动建模[10],取得了较好的效果。鉴于GEP继承自GP,具有与GP类似的基因结构,这就为函数自动建模提供了依据,也涌现了很多相关方面的文章[11~14]。本文提出了一种基于统计分析和停滞速度的改进GEP算法(SACVGEP),它对经典GEP算法存在的多样性表现不足、容易出现早熟、缺乏学习、搜索盲目等缺点进行了改进。1基因表达式程序设计原理GEP是借鉴生物遗传的基因表达规律提出的一种自适应演化算法,它与GP一样,都是在遗传算法的基础上发展起来的。GEP作为一种通用的自适应随机搜索算法,能够在缺乏先验知识的情况下发现揭示问题本质的规则、公式以及描述问题过程的程序等。本文对GEP作简要介绍,详细请参看文献[2,15]。1.1GEP的基因结构与编码GEP的基因由头部和尾部构成,头部既可以含有函数符号,也可以包含终结点,而尾部只能包含终结点。对具体的问题头部长度??h??是根据问题需要选定的,而尾部长度??t??则是由??h??和??n??(参数最多的函数包含的参数个数)计算得到的。一般??h??、??t??和??n??要满足式(1)的函数关系。??t=h*(n-1)+1??(1)考虑由{+,-,*,/,??Q,a,b??}构成的基因(其中:??Q??代表开方),可得??n??=2。若假设??h??=8,那么??t??=9,则基因总长为8+9=17。也正是由于尾部与头部满足上述函数关系,才使得基因在任何遗传算子作用下都不会产生句法上不正确的个体[15]。由于在GEP中个体被编码成固定长度的线性串,...