- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
人工智能04-16
第4章 机器进化 进化计算 遗传编程 补充读物和讨论 第4章 机器进化 上一章的学习系统,通过改变其行为来使其符合一组训练实例。这种学习模仿了生物系统学习的某些方面。生物系统采用另一种方法学习,即进化——子孙比祖先更先进。 生物进化过程中,先是双亲生产后代,然后这些后代中的一部分“有选择地生存”下来,并生产更多的后代。繁殖和选择性生存这两个方面足以生产繁殖能力越来越强的一代代个体。 可将进化计算过程视为搜索风景画的高峰过程。新生成的个体占据新地形,而那些处于海拔低的个体逐渐消失。不久,一些个体将位于峰顶。这个过程的有效度依个体不同于其单/双亲的方式和风景画的性质而定。子女所处的海拔高度也许会比它们的单/双亲低,但偶尔也会更高。 4.1 进化计算 把进化搜寻过程运用于计算机科学的主要目的有两个。函数优化是最直接的应用,在这种应用中,试图求出一个函数的最大值f(x1,…,xn)。其中自变量x1,…,xn说明个体的位置,f值为高度。 John Holland提出了一种解决这类问题的算法——遗传算法(GA)。另一种应用就是用进化程序解决具体问题——如控制响应agent的程序。“分类(classifier)系统”是GA的分支之一。 而遗传编程(GP)(genetic programming)是另外一种技术,它采用一种比GA更直接的方式来进化程序。 4.2 遗传编程 遗传编程的程序表示 在遗传编程中改进功能程序(functional program),如LISP函数。这样的程序可以表示为具有节点标记、有限的树。内部节点为带有一个或多个参数的函数、谓词或动作。叶节点为程序常数、或不带自变量的动作函数。在图4-1中,说明了如何用树结构来表示计算3+(5*4)/7的程序。本例中,叶节点是3、4、5、7,内部节点为函数+、*、/。 4.2.1 遗传编程的程序表示 4.2.1 遗传编程的程序表示 4.2.1 遗传编程的程序表示 如何运用遗传编程来进化一个沿墙运动的机器人,这个机器人的任务与前相同。此程序把机器人当前的传感器数据作为输入,并计算出一个动作。我们希望重复运行此程序来控制机器人,并把机器人从任一初始位置移到与墙毗邻的一个单元中,使其永远沿墙运动。 此程序的基本函数包括:四个布尔函数AND 、OR、 NOT、 IF 1)当x=0时,AND(x,y)=0;否则为y。 2)当x=1时,OR(x,y)=1;否则为y。 3)当x=1时,NOT(x)=0;否则为1。 4)当x=1时,IF(x,y,z)=y;否则为z。 四个动作north, east, south, west north: 将机器人在网格中向上移动一个单元 east: 将机器人在网格中向右移动一个单元 south: 将机器人在网格中向下移动一个单元 west: 将机器人在网格中向左移动一个单元 4.2.1 遗传编程的程序表示 这些动作函数本身都有效果但无数值;因为对它们任意一个赋值便会终止程序,所以无须沿树结构向上传值。所有这些动作函数均有其指示的效果,当机器人企图移入墙里时,该动作无效,只能终止程序。当然,重复运行无效的程序最终也无效。 传感器输入用n, ne, e, se, s, sw, w, nw来表示。当相应的单元空缺使得机器人可移入时,输入值为0,否则为1。 4.2.1 遗传编程的程序表示 4.2.1 遗传编程的程序表示 4.2.2 遗传编程过程 在遗传编程中,我们从随机程序开始,并运用那些能使程序对感兴趣的问题域有效的函数、常数和传感器输入。这些程序构成0代(generation 0)。0代程序的大小是遗传编程中的一个参数。在对遗传编程的阐述中,我们将从5000个随机程序开始来进化一个沿墙运动的机器人。每一代程序均接受评估,而且直到有一个程序的表现十分另人满意时才产生新的一代程序。 依据一个程序如何完成所设定的任务来对它进行评估。这里,我们把一个程序运行60次,并计算在这60次运行中被访问的与墙毗邻的单元个数(共有32个单元与墙毗邻,因此,从未走进墙边的程序的记数为0,而理想的程序的计数为32)。然后,让机器人分别在10个随机选择的不同初始位置进行前面这个步骤。在这10个运行中被访问的与墙毗邻的单元的总数即为此程序的合理度(fitness)。可能的合理度的最高值为320—机器人只有在这10个步骤的60次运行中均访问了所有与墙毗邻的单元,才能达到这一最高值。 4.2.2 遗传编程过程 第i代按照下列方式建构第i+1代。 1)把第i代的500个程序(10%)直接复制到第i+1代。用锦标赛选拔(Tournament Selection)过程来选择这500个程序:从5000个程序中随机选出7个,再从中选择最合适的那一个。 2)把4500个新的孩子程序归入第i+1代
原创力文档


文档评论(0)