- 2
- 0
- 约3.48千字
- 约 4页
- 2023-10-13 发布于广东
- 举报
基于堆栈技术的遗传编程
继承编程是在继承遗传理论的基础上发展和变化的。1992年J.R.Koza首次提出一种在编码方式上与常规的遗传算法有着本质不同的仿生进化算法,它采用了层式编码(“树”型)方式,由于在遗传算法的基础上,改进了编码方式,被称为“遗传编程”。相对于遗传算法,遗传编程更适合应用于层式结构的优化。
由于遗传编程的个体采用了树型结构,结构中的元素之间存在着一个对多个的关系,属于典型的非线性结构,这给编程实现带来了很大的困难。当前,对遗传编程的程序实现主要采用两种方法:一是专用程序语言如Lisp等,二是用通用语言的指针实现,如C语言。这两种方法都受到编程语言的限制,通用行和可移植性都不够理想。在工程应用领域有着广泛应用的Matlab语言,由于没有指针运算,无法实现具有层式编码的遗传编程。
为了解决这个问题,本文借用了数据结构中“树的遍历”思想,实现了从树型结构向线性序列的转换,在此基础上解决了初始个体生成算法、杂交算子的实现、表达式个体求值等问题,使遗传编程能够方便地用Matlab语言实现。
1 遗传编程的实现方式
遗传编程是由遗传算法发展、延伸而来的,它与传统的遗传算法最大的不同是以层次结构表达问题,而且其结构和大小都是动态自适应调整,更适于表达复杂的结构问题。遗传编程的任务就是从由许多树型可行解组成的搜索空间中寻找出一个具有最佳适应度的“树”。
遗传编程的基本思想是:
原创力文档

文档评论(0)