遗传规划算法
遗传规划算法
请先看一下遗传算法:
http://blog.csdn.net/v_JULY_v/article/details/6132775
遗传规划/遗传编程(Genetic Programming)是遗传算法的一个分支,与遗传算法中每个个体是一段染色体编码不同,它的个体是一个计算机程序。
维基上说它在70年代就已经有人实践,不过正式提出应该还是在John R. Koza教授于1990年发表的博士论文中。
遗传规划最早的应用是符号回归,比如为了拟合 z=f(x,y),它生成一个初始函数 g(x,y),然后以g(x,y)与z的相关系数为适应度,进行选择交叉变异,最终得到最优的一个函数g’,再做一次线性回归即可。
如下是GP表示的一个例子,自然,还有其他的表达方式:
线型:GEP(Gene Expression Programming),
图型:CGP(Cartesian Genetic Programming)。
以树型为例:
这棵树表示一个函数,就是上面所述的g(x,y),至于怎么用就见仁见智了,确定好用法之后设定一个计算适应度的方案,就可以跑遗传规划了。
在遗传规划中,选择算子与遗传算法的相同,交叉变异需要根据表达方式来。
树形的交叉实现是这样:
变异实现是这样: