第五章计算智能(2)
教学内容:遗传算法的基本机理和求解步骤;进化策略的算法模型、进化策略和遗传算法的区别;进化编程的机理与表示和算法步骤;人工生命的起源、发展、定义和研究意义,及其研究内容和方法。
教学重点:遗传算法的基本机理和求解步骤;进化策略的算法模型;进化编程表示和算法步骤;人工生命的定义、研究内容和方法。
教学难点:遗传算法的交叉和变异机制;进化编程的表示。
教学方法:课堂教学为主,结合适当提问,收集学生学习情况。
教学要求:通过对本章的学习,使学生了解三种进化算法和人工生命是如何工作的,并初步了解这些算法研究的进展和应用情况,以及它们的研究意义,掌握主要算法的求解步骤。
生物群体的生存过程普遍遵循达尔文的物竞天择、适者生存的进化准则;生物通过个体间的选择、交叉、变异来适应大自然环境。生物染色体用数学方式或计算机方式来体现就是一串数码,仍叫染色体,有时也叫个体;适应能力用对应一个染色体的数值来衡量;染色体的选择或淘汰问题是按求最大还是最小问题来进行。
20世纪60年代以来,如何模仿生物来建立功能强大的算法,进而将它们运用于复杂的优化问题,越来越成为一个研究热点。进化计算(evolutionary computation)正是在这一背景下蕴育而生的。进化计算包括遗传算法(genetic algorithms,GA),进化策略(evolution strategies) 、进化编程(evolutionary programming) 和遗传编程(genetic programming)。
人类不满足于模仿生物进化行为,希望能够建立具有自然生命特征的人造生命和人造生命系统。对人工生命(Artificial Life,ALife)的研究,自1987年起取得了重要进展。这是人工智能和计算智能的一个新的研究热点。
5.1 遗传算法
教学内容:介绍遗传算法的基本机理和求解步骤,评介遗传算法研究进展和应用情况。
教学重点:遗传算法的基本机理。
教学难点:遗传算法的交叉和变异机制。
教学方法:课堂教学为主,并通过演示程序sga.exe加深对遗传算法的理解。
教学要求:理解遗传算法的基本机理,了解遗传算法的框图,掌握一般遗传算法的主要步骤,初步了解遗传算法研究的进展和应用情况。
遗传算法是模仿生物遗传学和自然选择机理,通过人工方式构造的一类优化搜索算法,是对生物进化过程进行的一种数学仿真,是进化计算的一种最重要形式。
5.1.1 遗传算法的基本机理
霍兰德提出的遗传算法通常称为简单遗传算法(SGA)。现以此作为讨论主要对象,加上适应的改进,来分析遗传算法的结构和机理。在讨论中会结合销售员旅行问题(TSP)来说明。
1、编码与解码
许多应用问题的结构很复杂,但可以化为简单的位串形式编码表示。将问题结构变换为位串形式编码表示的过程叫编码;而相反将位串形式编码表示变换为原问题结构的过程叫解码或译码。把位串形式编码表示叫染色体,有时也叫个体。
GA的算法过程简述如下。首先在解空间中取一群点,作为遗传开始的第一代。每个点(基因)用一个二进制数字串表示,其优劣程度用一目标函数棗适应度函数(fitness function)来衡量。
遗传算法最常用的编码方法是二进制编码。
二进制编码的最大缺点之一是长度较大,对很多问题用其他主编码方法可能更有利。其他编码方法主要有:浮点数编码方法、格雷码、符号编码方法、多参数编码方法等。
举例:对于销售员旅行问题,按一条回路中城市的次序进行编码。从城市w1开始,依次经过城市w2,……,wn,最后回到城市w1,我们就有如下编码表示:
w1w2 …… wn
由于是回路,记wn+1=w1。它其实是1,……,n的一个循环排列。要注意w1,w2,……,wn是互不相同的。
提问:二进制编码存在的缺点是什么?
课后查资料:浮点数编码方法、格雷码、符号编码方法、多参数编码方法
举例:销售员旅行问题采用符号编码方法。
2、适应度函数
为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数(fitness function)。TSP的目标是路径总长度为最短,自然地,路径总长度就可作为TSP问题的适应度函数。
适应度函数要有效反映每一个染色体与问题的最优解染色体之间的差距。适应度函数的取值大小与求解问题对象的意义有很大的关系。
举例:TSP问题的适应度函数。
讨论:适应度函数如何有效反映每一个染色体与问题的最优解染色体之间的差距?
3、遗传操作
简单遗传算法的遗传操作主要有有三种:选择(selection)、交叉(crossover)、变异(mutation)。改进的遗传算法大量扩充了遗传操作,以达到更高的效率。
选择操作也叫复制(reproduction)操作,根据个体的适应度函数值所度量的优劣程度决定它在下一代是被淘汰还是被遗传。
交叉操作的简单方式是将被选择出的两个个体P1和P2作为父母个体,将两者的部分码值进行交换。
变异操作的简单方式是改变数码串的某个位置上的数码。二进制编码表示的简单变异操作是将0与1互换:0变异为1,1变异为0。
5.1.2 遗传算法的求解步骤
1、遗传算法的特点
遗传算法是一种基于空间搜索的算法,它通过自然选择、遗传、变异等操作以及达尔文适者生存的理论,模拟自然进化过程来寻找所求问题的解答。遗传算法具有以下特点:
(1) 遗传算法是对参数集合的编码而非针对参数本身进行进化;
(2) 遗传算法是从问题解的编码组开始而非从单个解开始搜索;
(3)遗传算法利用目标函数的适应度这一信息而非利用导数或其它辅助信息来指导搜索;
(4) 遗传算法利用选择、交叉、变异等算子而不是利用确定性规则进行随机操作。
提问:遗传算法的主要优点有哪些?
2、遗传算法的框图
简单遗传算法框图如图5.2所示。
算法的停止条件最简单的有如下二种:(1)完成了预先给定的进化代数则停止;(2)群体中的最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进时停止。
一般遗传算法的主要步骤如下:
(1) 随机产生一个由确定长度的特征字符串组成的初始群体。
(2) 对该字符串群体迭代的执行下面的步(a)和(b),直到满足停止标准:
(a)计算群体中每个个体字符串的适应值;
(b)应用复制、交叉和变异等遗传算子产生下一代群体。
(3) 把在后代中出现的最好的个体字符串指定为遗传算法的执行结果,这个结果可以表示问题的一个解。
根据遗传算法思想可以画出简单遗传算法框图5.2。
演示:看例子的演示,观察SGA是否收敛,参数对算法有什么影响。
3、遗传算法求解举例
为了便于理解,下面通过一个简单的例子来说明遗传算法的主要内容及其运行步骤。
例:设,用SGA求
首先用程序SGA.exe对例2进行实算。
其求解步骤如下:
(1)方案表示用一个二进制矢量表示一个染色体,由染色体来代表变量x的实数值,每个染色体的每一位二进制数称为遗传因子。
(2)群体初始化随机产生一定数量的染色体,每个染色体为22位字节的二进制数。
(3)适应度函数适应度函数必须有能力计算搜索空间中每个确定长度的特征字符串的适应值。
(4)遗传操作采用的遗传操作分别是复制、交叉和变异。交叉相对于复制和变异的不同之处在于:交叉需要两个父代染色体配合进行,而复制和变异只需要一个父代染色体即可进行。变异可根据一定的变异率来改变一个或多个遗传因子。
(5)算法参数遗传算法的主要参数有群体规模和算法执行的最大代数目,次要参数有复制概率、杂交概率和变异概率等参数。
5.2 进化策略
教学内容:介绍进化策略的算法模型、进化策略和遗传算法的区别。
教学重点:进化策略的算法模型。
教学难点:没有要求。
教学方法:课堂教学为主。
教学要求:了解进化策略的算法模型,一般了解进化策略和遗传算法的区别。
进化策略是一类模仿自然进化原理以求解参数优化问题的算法。它是由雷切伯格(Rechenberg)、施韦费尔(Schwefel)和彼得·比纳特(Peter Bienert)于1964年提出的,并在德国共同建立的。
5.2.1 进化策略的算法模型
最简单形式的进化策略可描述如下:
(1) 问题被定义为寻求与函数的极值相关联的实数n维矢量x,F(x):Rn→R。
(2) 从每个可能的范围内随机选择父矢量的初始群体,初始试探的分布具有典型的一致性。
(3) 父矢量xi,i=1,…,p通过加入一个零均方差的高斯随机变量以及预先选择x的标准偏差来产生子代矢量xi。
(4) 通过对误差 (i=1,…,p)排序以选择和决定保持哪些矢量。那些拥有最小误差的P矢量成为下一代的新的父代。
(5) 产生新的试验数据以及选择最小误差矢量的过程将继续到找到符合条件的答案或者所有的计算已经全部完成为止。(举例说明)
举例:求一个3维问题的最小值。
5.2.2 进化策略和遗传算法的区别
除了研究和应用领域外,进化策略和遗传算法
还有以下区别:
(1) 进化策略和遗传算法表示个体的方式不同,
进化策略在浮点矢量上运行,而遗传算法一般运行在二进制矢量上。
(2) 进化策略和遗传算法的选择过程不同。
(3) 进化策略和遗传算法的复制参数不同,遗传算法的复制参数(交叉和变异的可能性)在进化过程中保持恒定,而进化策略时时改变它们。
随着技术的发展,进化策略和遗传算法以上的差别越来越不明显。
提问:进化策略和遗传算法还有什么区别?
5.3 进化编程
教学内容:介绍进化编程的机理与表示及算法步骤。
教学重点:进化编程的机理与表示。
教学难点:进化编程的表示。
教学方法:课堂教学为主,充分利用网络课程中的有关素材及示例程序阐述抽象概念。
教学要求:了解进化编程的机理与表示,一般了解算法步骤。
进化编程又称为进化规划(Evolutionary Planning),是由福格尔(Fogel)在1962年提出的一种模仿人类智能的方法。他们为有限状态机的演化而提出进化规划来预测问题。这些状态机的状态变换表是通过对应的离散有界集上进行的均匀随机变异来修改的。进化编程根据正确预测的符号数来度量适应值。通过变异,为父代群体中的每个机器状态产生一个子代。父代和子代中最好的部分被选择生存下来。
5.3.1 进化编程的机理与表示
进化编程的过程,可理解为从所有可能的计算机程序形成的空间中,搜索具有高的适应度的计算机程序个体。在进化编程中,可能有几百或几千个计算机程序参与遗传进化。
进化编程最初由一随机产生的计算机程序群体开始,这些计算机程序由适合于问题空间领域的函数所组成,这样的函数可以是标准的算术运算函数、标准的编程操作、逻辑函数或由领域指定的函数。群体中每个计算机程序个体是用适应度来评价的,该适应值与特定的问题领域有关。
5.3.2 进化编程的步骤
进化编程可繁殖出新的计算机程序以解决问题,它分为三个步骤:
(1) 产生出初始群体,它由关于问题(计算机程序)的函数随机组合而成。
(2) 迭代完成下述子步骤,直至满足选种标准为止:
(a)执行群体中的每个程序,根据它解决问题的能力,给它指定一个适应值。
(b)应用变异等操作创造新的计算机程序群体。
(3) 在后代中适应值最高的计算机程序个体被指定为进化编程的结果。
进化编程的基本过程如图5.6所示。
进化计算的三种算法棗遗传算法、进化策略和进化编程都是模拟生物界自然进化过程而建立的鲁棒性计算机算法。在统一框架下对三种算法进行比较,可以发现它们有许多相似之处,同时也存在较大的差别。进化策略和进化编程都把变异作为主要搜索算子,而在标准的遗传算法中,变异只处于次要位置。交叉在遗传算法中起着重要作用,而在进化编程中却被完全省去,在进化策略中与自适应结合使用,起了很重要的作用。标准遗传算法和进化编程都强调随机选择机制的重要性,而从进化策略的角度看,选择(复制)是完全确定的。进化策略和进化编程确定地把某些个体排除在被选择(复制)之外,而标准遗传算法一般都对每个个体指定一个非零的选择概率。
讨论:试考虑进化计算的三种算法棗遗传算法、进化策略和进化编程的相似之处和存在的差别。
5.4 人工生命
教学内容:本节介绍人工生命的起源、发展、定义和研究意义,及其研究内容和方法,并列出几个人工生命的实例。
教学重点:人工生命的定义、研究内容和方法。
教学难点:人工生命的研究方法。
教学方法:课堂教学为主,并及时提问、收集学生学习情况、调整施教手段。
教学要求:了解人工生命的定义、研究内容和方法,一般了解人工生命的起源和发展。
人工生命(Artificial Life,AL)试图通过人工方法建造具有自然生命特征的人造系统。
进化计算的主要方法,即遗传算法、遗传编程和进化策略,是开发人工生命系统的有效工具。
5.4.1 人工生命研究的起源和发展
人类长期以来一直力图用科学技术方法模拟自然界,包括人脑本身。
人工生命的许多早期研究工作也源于人工智能。20世纪60年代罗森布拉特研究感知机,斯塔尔(Stahl)建立细胞活动模型,林登迈耶(Lindenmayer)提出了生长发育中的细胞交互作用数学模型。这些模型支持细胞间的通信和差异。
20世纪70年代以来,康拉德(Conrad)等研究人工仿生系统中的自适应、进化和群体动力学,提出不断完善的“人工世界”模型。
80年代,人工神经网络再度兴起促进人工生命的发展。在1987年第一次人工生命研讨会上,美国圣塔菲研究所(Santa Fe Institute,SFI)非线性研究组的兰顿(Langton)正式提出人工生命的概念,建立起人工生命新学科。此后,人工生命研究进入一个蓬勃发展的新时期。
提问:简述人工生命和人工智能的关系。
5.4.2 人工生命的定义和研究意义
人工生命研究是一项抽象地提取控制生物现象的基本动态原理,并通过物理媒介(如计算机)模拟生命系统动态发展过程的工作。
1、人工生命的定义
通俗地讲,人工生命即人造的生命,非自然的生命。然而,要对人工生命做出严格的定义,却需要对问题进行深入研究。
1987年兰德提出的人工生命定义为:“人工生命是研究能够演示出自然生命系统特征行为的人造系统”。通过计算机或其它机器对类似生命的行为进行综合研究,以便对传统生物科学起互补作用。地球上存在着由进化而来的碳链生命,而人工生命则在“生命之所能”(life-as-it-could-be)的广泛意象中把“生命之所识”(life-as-we-know-it)加以定位,为理论生物学的发展做出贡献。兰德在计算机上演示了他们研制的具有生命特征的软件系统,并把这类具有生命现象和特征的人造系统称为人工生命系统。
从各种不同的自然生命的特征和现象中,可以归纳和抽象出自然生命的共同特征和现象,包括但不限于:
(1)自繁殖、自进化、自寻优。
(2)自成长、自学习、自组织。
(3)自稳定、自适应、自协调。
(4)物质构造。
(5)能量转换。
(6)信息处理。
如果把人工生命定义为具有自然生命现象和(或)特征的人造系统,那么,凡是具有上述自然生命现象和(或)特征的人造系统,都可称为人工生命。
提问:人工生命和自然生命有些什么联系?
2、研究人工生命的意义
人工生命是自然生命的模拟、延伸与扩展,其研究开发有重大的科学意义和广泛的应用价值。
(1)发基于人工生命的工程技术新方法、新系统、新产品。
(2)为自然生命的研究提供新模型、新工具、新环境。
人工生命的研究开发可以为自然生命的研究探索提供新模型、新工具、新环境。
(3)延伸人类寿命、减缓衰老、防治疾病。
(4)扩展自然生命,实现人工进化和优生优育。
(5)促进生命科学、信息科学、系统科学的交叉与发展。
5.4.3 人工生命的研究内容和方法
人工生命的研究对象包括人工动物、人工植物和人工人等,而人工人的研究又涉及人工脑和其它人工器官。
1、人工生命的研究内容
(1)构成生物体的内部系统,包括脑、神经系统、内分泌系统、免疫系统、遗传系统、酶系统、代谢系统等。
(2)生物体及其群体的外部系统,包括环境适应系统和遗传进化系统等。
人工生命的科学框架可由下列主要内容构成:
(1)生命现象仿生系统
(2)生命现象的建模与仿真
(3)进化动力学
(4)人工生命的计算理论和工具
(5)进化机器人
(6)进化和学习等方面的结合
(7)人工生命的应用
讨论:人工生命的研究内容与自然生命有何密切联系。
2、人工生命的研究方法
从生物体内部和外部系统的各种信息出发,可得到人工生命的不同研究方法,主要可分为两类:
(1)信息模型法。(2)工作原理法。
人工生命的研究技术途径也可分为两种:
(1)工程技术途径。 (2)生物科学途径。
5.4.4 人工生命的实例
人工生命的理论可通过有代表性的研究实例来阐述。下面简要介绍几个比较成功的研究和应用范例。
1、人工脑 2、计算机病毒 3、计算机进程
4、细胞自动机 5、人工核苷酸
思考:什么是人工生命?人工生命包括哪些研究内容?其研究方法如何?
5.5 小结
from: http://netclass.csu.edu.cn/jpkc2003/rengongzhineng/rengongzhineng/jiaoan/chapter5.htm