第四章 遗传程序设计_第1页
第四章 遗传程序设计_第2页
第四章 遗传程序设计_第3页
第四章 遗传程序设计_第4页
第四章 遗传程序设计_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第4章章 遗传程序设计遗传程序设计武汉大学计算机学院武汉大学计算机学院4.1 4.1 遗传程序设计框架遗传程序设计框架l自动程序设计是计算机科学的中心目标之一。自动程序自动程序设计是计算机科学的中心目标之一。自动程序设计所涉及的问题是:怎样才能使计算机去解决给定的设计所涉及的问题是:怎样才能使计算机去解决给定的问题而无需显式编程?很多年来,人们一直在为实现这问题而无需显式编程?很多年来,人们一直在为实现这一目标而努力。遗传程序设计便是在该领域的一种尝试一目标而努力。遗传程序设计便是在该领域的一种尝试. .l自动程序设计是人工智能的一个重要研究领域。自动程自动程序设计是人工智能的一个重要研究领

2、域。自动程序设计研究的重大贡献之一是作为问题求解策略的调整序设计研究的重大贡献之一是作为问题求解策略的调整概念。已经发现,对程序设计问题,先产生一个不费事概念。已经发现,对程序设计问题,先产生一个不费事的有错误的解,然后再修改使它正确工作,这种做法一的有错误的解,然后再修改使它正确工作,这种做法一般要比坚持要求第一个解就完全没有缺陷的做法有效的般要比坚持要求第一个解就完全没有缺陷的做法有效的多。遗传程序设计正是基于这样一种思想而发展起来的多。遗传程序设计正是基于这样一种思想而发展起来的. .4.1 4.1 遗传程序设计框架遗传程序设计框架l遗传程序设计与遗传算法类似,所不同的是在遗传程序遗传程

3、序设计与遗传算法类似,所不同的是在遗传程序设计中,搜索空间是计算机程序空间,个体是计算机程设计中,搜索空间是计算机程序空间,个体是计算机程序。遗传程序设计的流程图如下图所示。序。遗传程序设计的流程图如下图所示。变异后的个体加入新种群复制的个体加入新种群Gen:=0产生初始种群终止准则被满足?指定结果结束评估个体适应度i:=0i=N?Gen:=Gen+1是否否是按概率选择遗传算子选择一个个体选择两个个体选择一个个体执行复制执行杂交执行变异i:=i+1i:=i+2i:=i+1两个后代加入新种群prpcpm4.1 4.1 遗传程序设计框架遗传程序设计框架l为了用遗传程序设计演化求解问题的程序,首为了

4、用遗传程序设计演化求解问题的程序,首先需要解决以下问题:先需要解决以下问题: (1)(1)程序的表示;程序的表示; (2)(2)程序好坏的评价标准;程序好坏的评价标准; (3)(3)遗传算子设计。遗传算子设计。4.2 4.2 程序的表示程序的表示l在遗传程序设计中,种群中的个体是计算机程在遗传程序设计中,种群中的个体是计算机程序。为了程序表示的简单性和容易验证程序的序。为了程序表示的简单性和容易验证程序的句法,遗传程序设计用句法,遗传程序设计用LispLisp语言来表示程序。语言来表示程序。l考虑一个简单的考虑一个简单的LISPLISP程序,该程序简单地返回程序,该程序简单地返回一个自然数一个

5、自然数n n的平方的平方. .l SQUARE) ( )( square defun(nnn 4.2 4.2 程序的表示程序的表示l (square 4) 16 l下面是出一个计算一个实数绝对值的下面是出一个计算一个实数绝对值的LISP程序程序. .l ABSl(abs 4) 4)( )( 0) ( if( )(abs defun(xxxx 4.2 4.2 程序的表示程序的表示l从上面的例子可以看出,从上面的例子可以看出,LISPLISP程序的主体由类似于程序的主体由类似于 和和 的一些的一些S-S-表达式所组成。表达式所组成。l构造构造LISPLISP程序的程序的S-S-表达式是以前缀表达式

6、形式表示的。表达式是以前缀表达式形式表示的。表示表示LISPLISP程序的程序的S-S-表达式与树型结构有一个自然的对应表达式与树型结构有一个自然的对应关系,也就是说,给定一个关系,也就是说,给定一个S-S-表达式,我们容易构造出表达式,我们容易构造出一棵树,而对该树进行先序遍历便可得到给定的一棵树,而对该树进行先序遍历便可得到给定的S-S-表达表达式。这棵树是式。这棵树是S-S-表达式的语法树。表达式的语法树。 ) ( nn )( )( 0) ( if( xxx 4.2 4.2 程序的表示程序的表示l例如例如S-S-表达式表达式 所对应的语法树如所对应的语法树如下图所示下图所示。6) 5 1

7、0) ( (if 12 (x + +1212ifif 5 56 6x x1010l在语法树中,树的外部结点在语法树中,树的外部结点( (叶结点叶结点) )分别用变分别用变量量x x和常量和常量5 5,6 6,1010,1212来标记,这些变量和常来标记,这些变量和常量通常称为端点,而内部结点分别用函数量通常称为端点,而内部结点分别用函数+ +, ,IFIF来标记来标记. .l一般来说一个表示一般来说一个表示LISPLISP程序的程序的S-S-表达式通常由表达式通常由一些函数和端点组成。一些函数和端点组成。4.3 4.3 遗传程序设计的实现技术遗传程序设计的实现技术l用遗传程序设计求解问题有以下

8、用遗传程序设计求解问题有以下5 5个基本步骤:个基本步骤: (1) (1) 选择端点集;选择端点集; (2) (2) 选择函数集;选择函数集; (3) (3) 确定适应函数;确定适应函数; (4) (4) 确定控制参数;确定控制参数; (5) (5) 确定指定结果的方法和终止程序运行的条件确定指定结果的方法和终止程序运行的条件. .4.3.14.3.1选择端点集和函数集选择端点集和函数集l在遗传程序设计中,计算机程序用在遗传程序设计中,计算机程序用LISPLISP程序的语法树来程序的语法树来表示。每一棵语法树的内部结点由一些函数构成,而叶表示。每一棵语法树的内部结点由一些函数构成,而叶结点由一

9、些变量和常数构成结点由一些变量和常数构成. .l对于一个给定的问题,首先要确定由所有可能求解该问对于一个给定的问题,首先要确定由所有可能求解该问题的程序所组成的程序空间题的程序所组成的程序空间S S。由于。由于LISPLISP程序通常可以程序通常可以由一些简单的函数、变量和常数经过有限次运算和复合由一些简单的函数、变量和常数经过有限次运算和复合而生成。因此若要指定程序空间而生成。因此若要指定程序空间S S,我们只要指定可以,我们只要指定可以构成中程序的函数集构成中程序的函数集 和端点集和端点集 即可。即可。,21MfffF ,21NaaaT 4.3.14.3.1选择端点集和函数集选择端点集和函

10、数集l通常函数集可以包含通常函数集可以包含 (1) (1) 算术运算算术运算 等;等; (2) (2) 数学函数数学函数 sin, cos, exp, logsin, cos, exp, log等;等; (3) (3) 布尔运算布尔运算 AND, OR, NOTAND, OR, NOT; (4) (4) 条件算子条件算子 IF-THEN-ELSE;IF-THEN-ELSE; (5) (5) 循环算子循环算子 DO-UNTILDO-UNTIL,FORFOR,WHILEWHILE;l端点集通常由变量和常量组成。端点集通常由变量和常量组成。/ , 4.3.24.3.2初始化初始化l假设问题的端点集和

11、函数集分别为假设问题的端点集和函数集分别为T T和和F F。l初始种群中的每个初始种群中的每个S-S-表达式,即每棵树,可如下产生:表达式,即每棵树,可如下产生:首先建立一个根结点,从函数集首先建立一个根结点,从函数集F F中随机地选择一个函中随机地选择一个函数作为根结点的标记。每当树中的一个结点被标记为函数作为根结点的标记。每当树中的一个结点被标记为函数集数集F F中的一个函数中的一个函数 后,则为该结点建立后,则为该结点建立 个儿子个儿子结点,而每个儿子结点的标记从结点,而每个儿子结点的标记从 中随机地选中随机地选取,每当树中一个结点被标记为端点集取,每当树中一个结点被标记为端点集T T中

12、的一个元素中的一个元素时,则该结点成为树的一个叶结点,如此反复进行,直时,则该结点成为树的一个叶结点,如此反复进行,直到所有结点都被标记。到所有结点都被标记。f)( fzTFC 4.3.24.3.2初始化初始化l假定假定 。下面给出了建立一棵。下面给出了建立一棵树结构的过程。树结构的过程。,/,dcbaTF +*c+*cab4.3.24.3.2初始化初始化l上述树生成过程可以有几种不同的实现方式。上述树生成过程可以有几种不同的实现方式。 (1)(1)完全法:该方法预先定义所要生成的树的最大深度完全法:该方法预先定义所要生成的树的最大深度D Di i,当要生成的结点的深度小于最大深度时,则从函数

13、集当要生成的结点的深度小于最大深度时,则从函数集F F中随机地选取一个元素作为该结点的标记,当要生成的中随机地选取一个元素作为该结点的标记,当要生成的结点的深度等于最大深度时,则从端点集结点的深度等于最大深度时,则从端点集T T中随机地选中随机地选取一个元素作为该结点的标记。取一个元素作为该结点的标记。 (2)(2)生长法:该方法预先定义所要生成的树的最大深度生长法:该方法预先定义所要生成的树的最大深度D Di i,当要生成的结点的深度小于最大深度时,则从当要生成的结点的深度小于最大深度时,则从 中随中随机地选取一个元素作为该结点的标记,当要生成的结点机地选取一个元素作为该结点的标记,当要生成

14、的结点的深度等于最大深度时,则从端点集的深度等于最大深度时,则从端点集T T中随机地选取一中随机地选取一个元素作为该结点的标记。个元素作为该结点的标记。TF 4.3.24.3.2初始化初始化 (3) (3)混合法:该方法预先定义所要生成的树的最大深度混合法:该方法预先定义所要生成的树的最大深度D Di i,对从,对从2 2至最大深度的每一个深度,生成相同个数的至最大深度的每一个深度,生成相同个数的树。对每一个深度,其中一半的树用完全法生成,而树。对每一个深度,其中一半的树用完全法生成,而另一半用生成方法生成。另一半用生成方法生成。l例如,假定树的最大深度定义为例如,假定树的最大深度定义为6 6

15、,种群中个体的个数,种群中个体的个数为为100100,则用混合方法将分别产生深度为,则用混合方法将分别产生深度为2,3,4,5,62,3,4,5,6的的树各树各2020个,其中深度为的树有个,其中深度为的树有1010个用完全法产生,有个用完全法产生,有1010个用生成方法产生个用生成方法产生。4.3.34.3.3适应函数适应函数l与其它演化算法相同,在遗传程序设计中,个体的适应与其它演化算法相同,在遗传程序设计中,个体的适应值是判断个体的质量的唯一办法。值是判断个体的质量的唯一办法。l个体适应值的计算方法是问题相关的,有多种方式度量个体适应值的计算方法是问题相关的,有多种方式度量个体的适应值,

16、有些方法是明确的,有些方法是隐含的个体的适应值,有些方法是明确的,有些方法是隐含的. .4.3.34.3.3适应函数适应函数l例如,若个体是下列程序例如,若个体是下列程序l该程序有一个实值变量该程序有一个实值变量x x,当,当x x取定一个值后,程序的输取定一个值后,程序的输出是一个实数出是一个实数. . + +1212ifif 5 56 6x x10104.3.34.3.3适应函数适应函数l评估该程序好坏的一种方法是:评估该程序好坏的一种方法是: (1) (1) 建立一个样本集建立一个样本集 ,其中,其中 是当是当变量变量x x取值为取值为 时的期望输出;时的期望输出; (2) (2) 当当

17、 时,运行该程序得到输出时,运行该程序得到输出 ; (3) (3) 计算所得到的输出与期望输出之间的误差的绝对值计算所得到的输出与期望输出之间的误差的绝对值之和之和 。 (4) (4) 最后,用最后,用e e或作为该个体的适应值。显然,适应值越或作为该个体的适应值。显然,适应值越小,个体越好。小,个体越好。 , 2 , 1| ),(siyxii iyix), 2 , 1(sixxi iz siiiyze14.3.34.3.3适应函数适应函数l若个体是判定树,则判定树的分类准确率可以作为个体若个体是判定树,则判定树的分类准确率可以作为个体的适应值。若个体是游戏策略,则游戏策略与其它策略的适应值。

18、若个体是游戏策略,则游戏策略与其它策略对奕时取胜的次数可以作为个体的适应值。对奕时取胜的次数可以作为个体的适应值。 4.3.34.3.3适应函数适应函数l个体适应值有以下几种形式:个体适应值有以下几种形式: (1)(1)原始适应值原始适应值 原始适应值是以问题本身的自然术语叙述的适应值度量原始适应值是以问题本身的自然术语叙述的适应值度量. . 例如,游戏策略的原始适应值是策略取胜的次数。例如,游戏策略的原始适应值是策略取胜的次数。l最常用的个体原始适应值度量方法是:首先建立若干测最常用的个体原始适应值度量方法是:首先建立若干测试实例,然后用所演化程序的输出与预期的输出之间的试实例,然后用所演化

19、程序的输出与预期的输出之间的误差来度量个体的好坏。误差来度量个体的好坏。4.3.34.3.3适应函数适应函数l当用误差度量原始适应值时,若个体(程序)的输出是当用误差度量原始适应值时,若个体(程序)的输出是整数或实数整数或实数, ,可用下列公式计算个体的原始适应值:可用下列公式计算个体的原始适应值: 其中其中s s为样本的个数,为样本的个数, 表示个体表示个体i i在第在第j j个输入时的个输入时的输出,输出, 表示第表示第j j个输入值对应的预期输出。个输入值对应的预期输出。 sjjCjiOir1)(),()(),(jiO)( jC4.3.34.3.3适应函数适应函数l若个体的适应值为布尔值

20、或符号值时,误差可用个体输若个体的适应值为布尔值或符号值时,误差可用个体输出与预期输出不匹配的个数来度量。出与预期输出不匹配的个数来度量。l依赖于问题,可能是原始适应值越大,个体越好;也可依赖于问题,可能是原始适应值越大,个体越好;也可能是原始适应值越小,个体越好。能是原始适应值越小,个体越好。 (2) (2) 标准适应值标准适应值 标准适应值对原始适应值作简单变换,使得标准适应值标准适应值对原始适应值作简单变换,使得标准适应值越小,个体越好。越小,个体越好。4.3.34.3.3适应函数适应函数l若原始适应值若原始适应值 越小,个体越小,个体i i越好,则个体越好,则个体i i的标准的标准适应

21、值可定义为适应值可定义为l可通过加或减一个常数,使得最好个体的标准适应值可通过加或减一个常数,使得最好个体的标准适应值为为0 0。l若原始适应值若原始适应值 越大,个体越大,个体i i越好,则个体越好,则个体i i的标准的标准适应值可定义为适应值可定义为 , ,其中其中 是最大原始是最大原始适应值或原始适应值的一个上界。适应值或原始适应值的一个上界。)(ir)()(iris )(ir)()(maxirris maxr4.3.34.3.3适应函数适应函数 (3) (3) 调整适应值调整适应值 调整适应值调整适应值 用下式计算:用下式计算: 其中其中 为个体为个体i i的标准适应值。的标准适应值。

22、 调整适应值调整适应值 。调整适应值越大,个体越好。调整适应值越大,个体越好。)(ia)(11)(isia )(ia 1 , 0()( ia4.3.34.3.3适应函数适应函数 (4) (4)正规化适应值正规化适应值 正规化适应值正规化适应值 用下式计算:用下式计算: 其中其中N N为种群的规模,为种群的规模, 为个体为个体i i的调整适应值。的调整适应值。l正规化适应值在基于适应值比例的选择策略中可直接正规化适应值在基于适应值比例的选择策略中可直接用作选择概率。用作选择概率。)(in Nkkaiain1)()()()(ia4.3.44.3.4父体选择策略父体选择策略l通常,遗传程序设计使用基

23、于适应值比例的选择策略。通常,遗传程序设计使用基于适应值比例的选择策略。l若种群规模在若种群规模在10001000以上,则经常使用一种称之为贪婪过以上,则经常使用一种称之为贪婪过度选择策略。度选择策略。l该策略首先将种群中的个体按适应值排序,然后将种群该策略首先将种群中的个体按适应值排序,然后将种群中的个体分为两部分。第一部分包含种群中的个体分为两部分。第一部分包含种群 的最好个的最好个体,另一部分包含其它体,另一部分包含其它 的个体。当进行父体选的个体。当进行父体选择时,择时, 的选择在第一部分中进行,的选择在第一部分中进行, 的选择在第的选择在第二部分中进行。二部分中进行。x x的取值以来

24、于种群规模,通常通过实的取值以来于种群规模,通常通过实验确定。验确定。%x)%1(x %80%20下表给出了下表给出了x x取值的一种方式。取值的一种方式。贪婪过度选择总是从第一部分选择贪婪过度选择总是从第一部分选择 的个体。从上表的个体。从上表可以看出,随着种群规模的增加,可以看出,随着种群规模的增加,x x不断减小,因而选择不断减小,因而选择压力逐步增大。压力逐步增大。4.3.44.3.4父体选择策略父体选择策略种群规模x1000200040008000321684%804.3.54.3.5遗传算子遗传算子l遗传程序设计中的遗传算子主要有复制、杂交和变异。遗传程序设计中的遗传算子主要有复制

25、、杂交和变异。变异算子的作用不及遗传算法中重要。变异算子的作用不及遗传算法中重要。 1.1.复制复制 复制算子首先按照某种基于适应值比例的选择策略从种复制算子首先按照某种基于适应值比例的选择策略从种群中选择一个个体,然后将该个体不加改变地复制到下群中选择一个个体,然后将该个体不加改变地复制到下一代种群。一代种群。l 复制算子有一个参数复制算子有一个参数 。通常取。通常取rp1 . 0 rp4.3.54.3.5遗传算子遗传算子 2. 2. 杂交杂交 杂交算子分别从两个父体中随机地选择一个杂交点,然杂交算子分别从两个父体中随机地选择一个杂交点,然后交换父体中以杂交点为根结点的子树产生两个后代。后交

26、换父体中以杂交点为根结点的子树产生两个后代。(a) 父体父体1+*6x10 x12杂交点杂交点+*x6x10 x+(b) 父体父体2杂交点杂交点(b) 后代后代2*6x10+x6杂交点杂交点4.3.54.3.5遗传算子遗传算子 (c) 后代后代1杂交点杂交点+x12*xx10+4.3.54.3.5遗传算子遗传算子l杂交算子有两个参数杂交算子有两个参数 和和 。 是按概率选择遗传是按概率选择遗传算子时选择杂交算子的概率,而算子时选择杂交算子的概率,而 是在进行杂交时,是在进行杂交时,在父体中选择内结点作为杂交点的概率。通常取在父体中选择内结点作为杂交点的概率。通常取 和和 。l在对父体进行杂交后

27、,后代树的深度有可能加大。为了在对父体进行杂交后,后代树的深度有可能加大。为了有效地利用计算机资源,防止产生巨型个体,遗传程序有效地利用计算机资源,防止产生巨型个体,遗传程序设计通常设置一个最大允许深度设计通常设置一个最大允许深度 进行控制。进行控制。l若杂交后,有一个后代的深度超过了最大允许深度,则若杂交后,有一个后代的深度超过了最大允许深度,则随机地选取一个父体代替该后代;若两个后代的深度都随机地选取一个父体代替该后代;若两个后代的深度都超过了最大允许深度,则用两个父体代替这两个后代。超过了最大允许深度,则用两个父体代替这两个后代。cpcnpcpcnp9 . 0 cp9 . 0 cnpcD

28、4.3.54.3.5遗传算子遗传算子 3.3.变异变异 变异算子首先在父体中随机地选择一个结点,然后删除变异算子首先在父体中随机地选择一个结点,然后删除以该结点为根结点的子树,并在该结点处插入一个随机生以该结点为根结点的子树,并在该结点处插入一个随机生成的子树。成的子树。4.3.54.3.5遗传算子遗传算子 变异点变异点+x12*xx10+变异点变异点+x127104.3.54.3.5遗传算子遗传算子l变异算子有两个参数变异算子有两个参数 和和 。 是按概率选择遗传算是按概率选择遗传算子时选择变异算子的概率,而子时选择变异算子的概率,而 是在进行变异时,在是在进行变异时,在父体中选择内结点的概

29、率。父体中选择内结点的概率。l值得注意的是值得注意的是J.R.KozaJ.R.Koza建议建议 ,也就是说在遗传程,也就是说在遗传程序设计中不使用变异算子。近年来的遗传程序设计实践序设计中不使用变异算子。近年来的遗传程序设计实践建议使用变异算子,但是以较低的概率。建议使用变异算子,但是以较低的概率。mpmnp0 mpmpmnp4.44.4应用实例应用实例 1.1. 简单符号回归简单符号回归 问题:给定问题:给定2020个样本点个样本点 ,其中,其中 是区间是区间 中的随机数,而中的随机数,而 求出拟合这些样本点的函数。求出拟合这些样本点的函数。),( ,),(),(20202211yxyxyx

30、)20, 2 , 1( ixi1 , 1 iiiiixxxxy 2344.44.4应用实例应用实例l求解该问题的遗传程序设计如下:求解该问题的遗传程序设计如下: (1)(1)端点集端点集 端点集可取为端点集可取为 。 (2)(2)函数集函数集 函数集可仅由算术运算加法和乘法组成。一个更一般的函数集可仅由算术运算加法和乘法组成。一个更一般的选择是选择是 。 (3)(3)适应值度量适应值度量 个体个体f f 的原始适应值用下式计算:的原始适应值用下式计算:xT lnexp,cos,sin,%, F 201)()(iiiyxfferr4.44.4应用实例应用实例 (4) (4) 父体选择策略父体选择策略 使用轮盘赌选择。使用轮盘赌选择。 (5) (5) 种群初始化和算法终止准则种群初始化和算法终止准则 用混合法产生初始种群。而当用混合法产生初始种群。而当 或算法运行到预先指定的最大演化代数时,终止算法运或算法运行到预先指定的最大演化代数时,终止算法运行。行。), 2 , 1( 01. 0)(niyxfii 4.44.4应用实例应用实例 (6) (6) 参数设置参数设置 种群规模种群规模500最大演化代数最大演化代数 50概率概率pr0.1 概率概率pc0.9概率概率pm0概率概率pcn0.9最大深度最大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论