付安兵,魏文红,张宇辉,郭文静
(东莞理工学院计算机科学与技术学院,广东东莞 523808)
(*通信作者电子邮箱weiwh@dgut.edu.cn)
笛卡尔遗传编程(Cartesian Genetic Programming,CGP)[1]是一种基于图结构的遗传编程,不同于传统的基于树形结构的遗传编程,基于图结构的遗传编程具有处理多个输入和输出的能力。1997 年,在进化数字电路的技术中第一次描述了和CGP 相关的方法,但CGP 真正出现是在1999 年,到2000 年时它作为一种新的遗传编程被正式提出[2]。自那以后,CGP就不断被全世界各地的学者研究和改进,并被成功用于不同的领域。2009 年,Gajda 等[3]将CGP 用于多态电路的门级优化;2005 年,Harding 等[4]将CGP 用于机器人控制器的进化;2010 年,CGP 被Khan 等[5]用来进化神经网络,后来又被Gadja等[6]用来进化高效数字电路;2015年,Vasicek[7]用CGP来做组合数字电路的优化,到了2016 年,Vasicek 等[8]又用它来做电路的近似模拟。另外在图像处理领域,Harding[9]于2008 年将CGP 用来做图片滤波器的进化;Sekanina 等[10]在2011 年将CGP 用来做图像处理;2015 年,Paris 等[11]又将CGP 用于自学习的图像滤波器。在生物信息学领域,CGP 同样有着重要的应用,如Ahmad等[12]在2012年利用基于CGP进化的人工神经网络进行乳腺癌的检测。当然CGP 的应用远不止于此,近年来越来越多的CGP 改进算法在不同领域发挥着重要的作用[13]。
在CGP 不断被研究改进的过程中,许多CGP 变种算法也相继被提出。Walker 等[14]提出了Modular CGP(MCGP),MCGP 允许模块(Modules)能执行创建、进化、重用、删除等操作,而且Walker 等的研究也表明,在解决和数字电路相关的问题中,MCGP 的解通常优于CGP。Harding 等[15]提出了自修改函数的概念,同时将自修改操作基因加入到基因库中,由此产生了自修改笛卡尔遗传编程(Self-Modifying Cartesian Genetic Programming,SMCGP)算法。……