- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用C语言实现遗传编程1.pdf
维普资讯
周俊峰
遗传编程是一个与人工智能相关的、新的形式 ,它基于达 ·树形处理程序存在于一些高级语言中.也就是说 .现有
尔文的进化、遗传思想发展而来 。有关遗传编程最早的著作是 的一些高级语言可 以对树形结构进行操作 。
JohnKoza的((GeneticProgramming))--书.书中描述 了一套用于
1.2 遗传编程的操作符 (operator)
随机修改已有LISP字符串的LISP程序集合。本文试图向读者清楚
地介绍遗传编程的范例 ,及其在C语言中的实现。 遗传编程使用 四种通用的操作符来实现计算机程序 的进
化 ,它们是 :交叉 (Cr0SS0Ver)、再现 (rePr0duCti0n)、转变
1.遗传绾程
(mutation)、倒置 (inversion)。
1.1 什么是遗传编程? (1)交叉 (crossover)
Koza认为 ”交叉”以及沿续其后的”再现 ”是两个最重要的
遗传编程的许多理论与遗传算法是一样的.同样都是通过
遗传操作符。交叉保证了程序群体 的遗传多样性。与遗传算法
遗传操作符 (genetiC operators)应用了达尔文的”适者生存
中的交叉功能类似 .遗传编程 中的交叉行为是在两个程序 中进
(survival-of—the—fittest)”理论 :但是仍有许多不同之处。遗传编
行的,并会产生两个子程序。具体地说 .在每个程序中任意选取
程所使用的结构与遗传算法的编码字符串就大相径庭 。图1描
两个结点 ,将 以这两个结点为根的”子树 ”进行交换 .从而产生
述了一个遗传编程的简单结构 。
两个新的程序 。这些新程序将成为后代程序 的一部分并被评
对于这个树形结构 .其等价的LISP表达式为 (+ 12(IF(
估 ,见图2。
TIME 10)34)。需要注意的是 :
(2)再现 (reproduction)
· 当前 .它采用了更为灵活、清晰的可变分层结构 .而不
”再现 ”是遗传编程 中第二个主要 的操作 .主要是将当前程
是一维字符结构;
序 中选定的成员拷贝到后代程序中。Koza对于使用交叉、再现操
· 该结构 由一些简单函数组成 .这些函数可以通过使用
作对群体收敛性的影响有一段说明:”……在遗传编程中.当个
一 种高级语言很容易的被编译出来 :
体复制它自身的时候 一般会产生两种不同的后代 ……这点与
达尔文的 再现 操作会导致一种收敛趋势相似 :但是 .不同的
文档评论(0)