第十一章 遗传算法.docx
- 文档编号:16916008
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:30
- 大小:187.06KB
第十一章 遗传算法.docx
《第十一章 遗传算法.docx》由会员分享,可在线阅读,更多相关《第十一章 遗传算法.docx(30页珍藏版)》请在冰豆网上搜索。
第十一章遗传算法
第十一章遗传算法
11.1遗传算法发展简史及现状
遗传算法起源于对生物系统所进行的计算机模拟研究。
早在本世纪40年代,就有学者开始研究如何利用计算机进行生物模拟的技术,他们从生物学的角度进行了生物的进化过程模拟、遗传过程模拟等研究工作,但由于缺乏一种通用的编码方案,只能依赖变异而非交叉来产生新的基因结构,因而收效甚微。
60年代中期,美国Michigan大学的JohnHolland等人提出了位串编码技术,创造了一种基于生物遗传和进化机制的适合于复杂系统优化计算的自适应概率优化技术,这种编码既适于变异操作,又适于交叉操作,并且强调将交叉作为主要的遗传操作。
该算法于70年代中期正式定名为遗传算法。
遗传算法的通用编码技术及简单有效的遗传操作为其广泛的应用和成功奠定了基础。
在遗传算法的发展进程中一些学者做出了重要的贡献。
60年代,Holland认识到了生物的遗传和自然进化现象与人工自适应系统的相似关系,运用生物遗传和进化的思想来研究自然和人工自适应系统的生成以及它们与环境的关系。
提出在研究和设计人工自适应系统时,可以借鉴生物遗传的机制,以群体的方法进行自适应搜索,并且充分认识到了交叉、变异等运算策略在自适应系统中的重要性。
70年代初,Holland教授提出了遗传算法的基本定理——模式定理(SchemaTheorem),从而奠定了遗传算法的理论基础。
模式定理揭示出了群体中的优良个体(较好的模式)的样本数将以指数级规律增长,因而从理论上保证了遗传算法是一个可以用来寻求最优可行解的优化过程。
1975年,Holland出版了第一本系统论述遗传算法和人工自适应系统的专著《自然系统和人工系统的自适应性(AdaptationinNaturalandArtificialSystems)》。
80年代,Holland教授实现了第一个基于遗传算法的机器学习系统——分类器系统(ClassifierSystems,简称CS)。
开创了基于遗传算法的机器学习的新概念,为分类器系统构造出了一个完整的框架。
1967年,Holland的学生Bagley在其博士论文中首次提出了“遗传算法”一词,并发表了遗传算法应用方面的第一篇论文。
他发展了复制、交叉、变异、显性、倒位等遗传算子,在个体编码上使用了双倍体的编码方法。
这些都与目前遗传算法中所使用的算子和方法相类似。
他还敏锐地意识到了在遗传算法执行的不同阶段可以便用不同的选择率,这将有利于防止遗传算法的早熟现象,从而创立了自适应遗传算法的概念。
1975年,DeJong在其博士论文中结合模式定理进行了大量的纯数值函数优化计算实验,树立了遗传算法的工作框架,得到了一些重要且具有指导意义的结论。
例如,对于规模在50~100的群体,经过10~20代的进化,遗传算法都能以很高的概率找到最优或近似最优解。
他推荐了在大多数优化问题中都较适用的遗传算法的参数,还建立了著名的DeJong五函数测试平台,定义了评价遗传算法性能的在线指标和离线指标。
1989午,Goldberg出版了专著《搜索、优化和机器学习中的遗传算法(GeneticAlgorithmsinSearch,OptimizationandMachineLearning)》。
该书系统总结了遗传算法的主要研究成果,全面而完整地论述了遗传算法的基本原理及其应用。
可以说这本书奠定了现代遗传算法的科学基础,为众多研究和发展遗传算法的学者所瞩目。
1991年,Davis编辑出版了《遗传算法手册(HandbookofGeneticAlgorithms)》一书,书中包括了遗传算法在科学计算、工程技术和社会经济中的大量应用实例。
这本书为推广和普及遗传算法的应用起到了重要的指导作用。
1992年,Koza将遗传算法应用于计算机程序的优化设计及自动生成,提出了遗传编程(GeneticProgramming,简称GP)的概念。
他将一段LISP语言程序作为个体的基因型,把问题的解编码为一棵树,基于遗传和进化的概念,对由树组成的群体进行遗传运算。
最终自动生成性能较好的计算机程序。
Koza成功地把他提出的遗传编程的方法应用于人工智能、机器学习、符号处理等方面。
20余年来,遗传算法的应用无论是建模还是用来解决实际问题,其范围不断扩展,这主要依赖于遗传算法的逐渐成熟。
近年来,出现许多遗传算法的改进方法,它们使用不同的遗传基因表达方式,不同的交叉和变异算子,使用特殊算子,以及不同的再生和选择方法,但总的说来,这些改进方法产生的灵感都来自于大自然的生物进化。
20世纪80年代中期以来是演化计算和遗传算法的蓬勃发展期。
以演化计算、遗传算法为主题的多个国际会议在世界各地定期召开。
1985年在美国卡耐基·梅隆大学召开了第一届国际遗传算法会议ICGA(InternationalConferenceAlgorithms),以后每隔一年召开一次。
演化计算会议IEEEConferenceonEvolutionaryComputation。
自1994年开始每年召开一次。
第一届遗传算法理论基础与分类系统研讨会FOGA/CS(FoundationsofGeneticAlgorithm/ClassifierSysterm)于1990年在美国印第安那大学召开,以后每隔两年召开一次。
日本新的计算机发展规划RWC计划也把遗传算法、演化计算作为其主要支撑技术之一用来进行信息的集成、学习及组织等。
许多世界知名的学术研究机构都在进行着遗传算法及其相关方面的研究。
英国乔治马松大学遗传算法研究组主要从事协同进化遗传算法、并行遗传算法、遗传机器学习、遗传算法分析等方面的研究;美国伊利诺斯遗传算法实验室在遗传算法理论研究和应用方面取得成果;美国密歇根州立大学遗传算法研究与应用组主要从事遗传算法、复杂自适应系统、人工生命等方面的研究;英国布鲁内大学计算机系神经和进化系统研究中心主要从事神经网络、遗传算法、遗传程序设计、自适应系统、人工生命等方面的研究;英国谢费尔德大学自动控制系统工程系将多目标遗传算法应用在生产调度、控制系统设计等方面;澳大利亚公益科学和工业科学组织信息技术部高性能计算项目组的主要研究内容是并行遗传算法和时间表问题等;荷兰利穆伯格大学知识系统研究所主要从事协同进化遗传算法、约束满足问题和过程控制等方面的研究;日本名古屋大学信息电子学系在遗传算法、模糊控制方面有所研究;美国加州大学圣地哥分校认知科学研究组在遗传算法方面有所研究;美国南安普顿大学机械工程系优化研究组将其在遗传算法、模拟退火、进化规划等方面的研究应用到结构动力学、飞机机翼设计和船舶设计中。
我国有关遗传算法、演化计算等方面的研究虽然起步较晚,但近年来一直处于不断上升的阶段。
武汉大学刘勇、康立山等于1995年出版了《非数值并行计算——遗传算法》;陈国良、王熙法等于1996年出版了《遗传算法及其应用》;潘正君、康立山等于1998年出版了《演化计算》;周明、孙树栋于1999年出版了《遗传算法原理及其应用》。
中国科技大学肖勇等人提出利用遗传算法构造决策树的方法;复旦大学季文赟等人提出了一种通过遗传算法对单个分类器进行优化及对多个分类器进行组合优化的方法;天津大学在评价遗传算法的性能方面和使用遗传算法求解约束优化问题方面有所研究;中国科学技术大学、中国人民解放军炮兵学院、东南大学、中国科学院的陶卿等人提出了一种基于约束区域神经网络的动态遗传算法,将遗传算法的全局搜索和约束区域神经网络模型的局部搜索相结合,利用动态遗传算法确定神经网络模型的初始点,同时使用神经网络确定动态遗传算法的适应度函数;武汉大学在并行演化计算、推销商问题等方面进行了深入研究;北京系统工程研究所、大庆石油学院的何新贵等人提出一种改进适应度函数的遗传算法,将函数在搜索点的变化率信息加入适应度函数,使得按概率选择的染色体不但具有较小的函数值(对极小化问题而言),而且具有较大的函数值变化率,从而提高收敛速度;浙江大学的杨启文等人提出用二元变异算子代替传统的变异算子,使遗传算法的优化速度得到提高。
遗传算法提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于很多学科,下面是遗传算法的一些主要应用领域:
(1)函数优化。
函数优化是遗传算法的经典应用领域,也是对遗传算法进行性能评价的常用算例。
很多人构造出了各种各样的复杂形式的测试函数,有连续函数也有离散函数,有凸函数也有凹函数,有低维函数也有高维函数,有确定函数也有随机函数,有单峰值函数也有多峰值函数等。
用这些几何特性各具特色的函数来评价遗传算法的性能,更能反映算法的本质效果。
而对于一些非线性、多模型、多目标的函数优化问题,用其他优化方法较难求解,而遗传算法都可以方便地得到较好的结果。
(2)组合优化。
随着问题规模的增大,组合优化问题的搜索空间也急剧扩大,有时在目前的计算机上用枚举法很难或甚至不可能求出其精确最优解。
对这类复杂问题,人们己意识到应把主要精力放在寻求其满意解上,而遗传算法是寻求这种满意解的最佳工具之一。
实践证明,遗传算法对于组合优化中的NP完全问题非常有效。
例如,遗传算法已经在求解旅行商问题、背包问题、装箱问题、图形划分问题等方面得到成功的应用。
(3)生产调度问题。
生产调度问题在很多情况下所建立起来的数学模型难以精确求解,即使经过一些简化之后可以进行求解,也会因简化得太多而使得求解结果与实际相差甚远。
而目前在现实生产中也主要是靠—些经验来进行调度。
现在遗传算法已成为解决复杂调度问题的有效工具,在单件生产车间调度、流水线生产车间调度、生产规划、任务分配等方面遗传算法都得到了有效的应用。
(4)自动控制。
在自动控制领域中有很多与优化相关的问题需要求解,遗传算法已在其中得到了初步的应用,并显示出了良好的效果。
例如用遗传算法进行航空控制系统的优化、使用遗传算法设计空间交会控制器、基于遗传算法的模糊控制器的优化设计、基于遗传算法的参数辨识、基于遗传算法的模糊控制规则的学习、利用遗传算法进行人工神经网络的结构优化设计和权值学习等,都显示出了遗传算法在这些领域中应用的可能性。
(5)机器人学。
机器人是一类复杂的难以精确建模的人工系统,而遗传算法的起源就来自于对人工自适应系统的研究,所以机器人学理所当然地成为遗传算法的一个重要应用领域。
例如,遗传算法已经在移动机器人路径规划、关节机器人运动轨迹规划、机器人逆运动学求解、细胞机器人的结构优化和行为协调等方面得到研究和应用。
(6)图像处理。
图像处理是计算机视觉中的一个重要研究领域。
在图像处理过程中,如扫描、特征提取、图像分割等不可避免地会存在些误差,这些误差会影响图像处理的效果。
如何使这些误差最小是使计算机视觉达到实用化的重要要求。
遗传算法在这些图像处理中的优化计算方面找到了用武之地,日前已在模式识别、图像恢复、图像边缘特征提取等方面得到了应用。
(7)人工生命。
人工生命是用计算机、机械等人工媒体模拟或构造出的具有自然生物系统特有行为的人造系统。
自组织能力和自学习能力是人工生命的两大主要持征。
人工生命与遗传算法有着密切的关系,基于遗传算法的进化模型是研究人工生命现象的重要基础理论。
虽然人工生命的研究尚处于启蒙阶段.但遗传算法已在其进化模型、学习模型、行为模型、自组织模型等方面显示出了初步的应用能力,并且必将得到更为深入的应用和发展。
人工生命与遗传算法相辅相成.遗传算法为人工生命的研究提供了一个有效的工具,人工生命的研究也必将促进遗传算法的进一步发展。
(8)遗传编程。
Koza发展了遗传编程的概念,他使用了以LISP语言所表示的编码方法,基于对一种树型结构所进行的遗传操作来自动生成计算机程序。
虽然遗传编程的理论尚未成熟,应用也有一些限制.但它已成功地应用于人工智能、机器学习等领域。
(9)机器学习。
学习能力是高级自适应系统所应具备的能力之一。
基于遗传算法的机器学习,特别是分类器系统,在很多领域中都得到了应用。
例如,遗传算法被用于学习模糊控制规则,利用遗传算法来学习隶属度函数,从而更好地改进了模糊系统的性能;基于遗传算法的机器学习可用来调整人工神经网络的连接权,也可用于人工神经网络的网络结构优化设计;分类器系统也在学习式多机器人路径规划系统中得到了成功的应用。
11.2基本遗传算法及实现技术
11.2.1基本遗传算法的运算过程
在遗传算法中,将
维决策向量
用
个记号
所组成的符号串表示
。
称为一个遗传基因,
称为由
个遗传基因构成的染色体或个体,此过程称为个体编码过程。
基因
的表示方法即编码方法主要有二进制编码方法、浮点数编码方法和符号编码方法等。
遗传算法的运算对象是由
个个体组成的群体。
在遗传算法的运算过程中,群体按照优胜劣汰的法则进行遗传和进化,将适应度较高的个体更多地遗传到下一代,经过若干代进化后,在群体中会得到一个或一批优良的个体,它们即对应问题的最优解。
生物的进化主要是通过染色体之间的交叉和染色体的变异来完成的。
遗传算法模拟这个进化过程,对群体使用遗传算子,从而得出新一代群体。
遗传算法使用的遗传算子有:
①选择(selection)——根据处各个个体的适应度,按照一定的规则或方法,从当前群体中选择了一些优良的个体遗传到下一代。
②交叉(crossover)——将群体中的每两个个体随机组合成一对,以某个概率(交叉概率Pc)交换它们之间的部分染色体。
③变异(mutation)——对群体中的每个个体,以某个概率(变异概率Pm)改变某一个或几个基因值。
基本遗传算法的运算过程如下:
①选取合适的群体大小
、个体编码长度
、进化代数
、交叉概率
、变异概率
等参数,随机生成
个个体作为初始群体
,
;
②解码并进行选择运算;
③交叉运算;
④变异运算,此时已产生新一代群体
;
⑤若
,则
,转②,否则取当前最优个体为最优解,停机。
为了更好地理解遗传算法的运算过程,下面用手工计算来简单地模拟遗传算法的各个主要执行步骤。
例11.1、求二元函数的最大值
现对其主要运算过程作如下解释:
①个体编码。
遗传算法的运算对象是表示个体的符号串,所以必须把变量
编码为一种符号串。
在本例中,
取0~7之间的整数,可分别用3位无符号二进制整数来表示,将它们连接在一起组成的6位无符号二进制整数就形成了个体的基因型,表示一个可行解。
例如,基因型X=101110所对应的表现型为:
。
个体的表现型和基因型可通过编码和解码程序相互转换。
②初始群体的产生。
遗传算法是对群体进行的进化操作,需要给其准备一些表示起始搜索点的初始群体数据。
本例中,群体规模的大小取为4,即群体由4个个体组成,每个个体可通过随机方法产生。
一个随机产生的初始群体如表中第
(2)栏所示。
③适应度计算。
遗传算法中以个体适应度的大小来评定各个个体的优劣程度,从而决定其遗传机会的大小。
本例中,目标函数总取非负值,并且是以求函数最大值为优化目标,故可直接以目标函数值作为个体的适应度。
为了计算函数的目标值,需先对个体基因型X进行解码。
表中第(3)、(4)栏所示即为初始群体中各个个体的解码结果,第(5)栏所示为各个个体所对应的目标函数值,它也是个体的适应度,第(5)栏中还给出了群体中适应度的最大值和平均值。
④选择运算。
选择运算(或称为复制运算)把当前群体中适应度较高的个体按某种规则或模型遗传到下一代群体中。
一般要求适应度较高的个体将有更多的机会遗传到下一代群体中。
本例中,采用与适应度成正比的概率来确定各个个体复制到下一代群体中的数量。
其具体操作过程是:
先计算出群体中所有个体的适应度的总和
;其次计算出每个个体的相对适应度的大小
,如表中第(6)栏所示,它即为每个个体被遗传到下一代群体中的概率,每个概率值组成一个区域,全部概率值之和为1;最后再产生一个0到1之间的随机数,依据该随机数出现在上述哪一个概率区域内来确定各个个体被选中的次数。
如表中第(7)、(8)栏所示为一随机产生的选择结果。
⑤交叉运算。
交叉运算是遗传算法中产生新个体的主要操作过程,它以某一概率相互交换某两个个体之间的部分染色体。
本例采用单点交叉的方法,其具体操作过程是:
先对群体进行随机配对,如表中第(9)栏所示为一种随机配对情况;其次随机设置交叉点位置,如表第(10)栏所示为一随机产生的交叉点位置,其中的数字表示交叉点设置在该基因座之后;最后再相互交换配对染色体之间的部分基因。
表中第(11)栏所示为交叉运算的结果。
⑥变异运算。
变异运算是对个体的某一个或某一些基因座上的基因值按某一较小的概率进行改变,它也是产生新个体的一种操作方法。
本例中,采用基本位变异的方法来进行变异运算,其具体操作过程是:
首先确定出各个个体的基因变异位置,如表中第(12)栏所示为随机产生的变异点位置,其中的数字表示变异点设置在该基因座处;然后依照某一概率将变异点的原有基因值取反。
表中第(13)栏给出了变异运算的结果。
对群体
进行一轮选择、交叉、变异运算之后可得到新一代的群体
,如表第(14)栏所示。
表中第(15)、(16)、(17)、(18)栏还分别表示出了新群体的解码值、适应度和相对适应度,并给出了适应度的最大值和平均值等。
从表中可以看出,群体经过一代进化之后,其适应度的最大值、平均值都得到了明显的改进。
事实上,这里已经找到了最佳个体“111111”。
需要说明的是,这里为了更好地说明问题,表中特意选择了一些较好的数据以便能得到较好的结果,而在实际运算过程中有可能需要一定的循环次数才能达到这个最优结果。
(1)
个体编号i
(2)
初始群体
(3)
(4)
(5)
(6)
1
2
3
4
011101
101011
011100
111001
3
5
3
7
5
3
4
1
0.24
0.24
0.17
0.35
(7)
选择次数
(8)
选择结果
(9)
配对情况
(10)
交叉点位置
(11)
交叉结果
(12)
变异点
(13)
变异结果
1
1
0
2
011101
101011
111001
111001
1-3
2-4
1-3:
2
2-4:
4
011001
111101
101001
111011
4
5
2
6
011101
111111
111001
111010
(14)
子代群体
(15)
(16)
(17)
(18)
011101
111111
111001
111010
3
7
7
7
5
7
1
2
0.14
0.42
0.21
0.23
11.2.2基本遗传算法的实现技术
采用固定长度二进制编码、比例选择算子、单点交叉算子、基本位变异算子的遗传算法称为基本遗传算法(SGA)。
下面给出基本遗传算法的具体实现过程。
①解码
设某参数的取值范围是
,个体的编码是
,则对应的解码公式为
,精度为
。
②适应度函数的构造
在遗传算法中,可以根据具体问题构造相应的适应度函数,也可用下列方法构造统一的适应度函数:
(1)对于求最大值问题
,适应度函数
;
(2)对于求最小值问题
,适应度函数
。
其中,
分别为当前代群体中的最大、最小目标函数值。
③比例选择(复制)
比例选择也称轮盘赌选择,是指个体被选中而遗传到下一代群体中的概率与该个体的适应度大小成正比。
比例选择的过程如下:
(1)求出群体中所有个体的适应度总和;
(2)求出每个个体的适应度在总适应度中所占的比例,它实际上即为个体被遗传到下一代群体中的概率;
(3)用模拟轮盘赌确定每个个体被选中的次数。
④单点交叉
将群体中的个体两两随机配对,对每一对个体以交叉概率Pc决定其是否交叉,对需交叉的配对个体,随机指定交叉点,然后交叉。
⑤基本位变异
对个体中的每一个基因,以变异概率Pm决定其是否变异,对变异位取反(0变1,1变0)。
11.3遗传算法的特点
遗传算法已经成为众多搜索算法中的佼佼者,与其他类型的算法相比,它主要有以下几个特点:
(1)遗传算法以决策变量的编码作为运算对象。
传统的优化算法往往直接利用决策变量的实际值本身来进行优化计算,但遗传算法不是直接以决策变量的值,而是以决策变量的某种形式的编码为运算对象。
这种对决策变量的编码处理方式,使得我们在优化计算过程中可以借鉴生物学中染色体和基因等概念,可以模仿自然界中生物的遗传和进化等机理,也使得我们可以方便地应用遗传操作算子。
特别是对—些无数值概念或很难有数值概念,而只有代码概念的优化问题,编码处理方式更显示出了其独特的优越性。
(2)遗传算法直接以目标函数值作为搜索信息。
传统的优化算法不仅需要利用目标函数值,而且往往需要目标函数的导数值等其他一些辅助信息才能确定搜索方向。
而遗传算法仅使用由目标函数值变换来的适应度函数值,就可确定进一步的搜索方向和搜索范围,无需目标函数的导数值等其他一些辅助信息。
这个特性对很多目标函数是无法或很难求导数的函数,或导数不存在的函数的优化问题,以及组合优化问题等,应用遗传算法时就显得比较方便,因为它避开了函数求导这个障碍。
再者,直接利用目标函数值或个体适应度,也可使得我们可以把搜索范围集中到适应度较高的部分搜索空间中,从而提高了搜索效率。
(3)遗传算法同时使用多个搜索点的搜索信息。
传统的优化算法往往是从解空间中的一个初始点开始最优解的迭代搜索过程。
单个搜索点所提供的搜索信息毕竟不多,所以搜索效率不高,有时甚至使搜索过程陷于局部最优解而停滞不前。
遗传算法从由很多个体所组成的一个初始群体开始最优解的搜索过程、而不是从一个单—的个体开始搜索。
对这个群体所进行的选择、交叉、变异等运算,产生出的乃是新—代的群体,在这之中包括很多群体信息。
这些信息可以避免搜索一些不必搜索的点,所以实际上相当于搜索了更多的点,这是遗传算法所特有的一种隐含并行性。
(4)遗传算法使用概率搜索技术。
很多传统的优化算法往往使用的是确定性的搜索方法,一个搜索点到另一个搜索点的转移有确定的转移方法和转移关系,这种确定性往往也有可能使得搜索永远达不到最优点,因而也限制了算法的应用范围。
而遗传算法属于一种自适应概率搜索技术,其选择、交叉、变异等运算都是以一种概率的方式来进行的,从而增加了其搜索过程的灵活性。
虽然这种概率特性也会使群体中产生一些适应度不高的个体,但随着进化过程的进行,新的群体中总会更多地产生出许多优良的个体,实践和理论都已证明了在一定条件下遗传算法总是以概率1收敛于问题的最优解。
当然,交叉概率和变异概率等参数也会影响算法的搜索效果和搜索效率,所以如何选择遗传算法的参数在其应用中是一个比较重要的问题。
而另一方面,与其它—些算法相比,遗传算法的鲁棒性又会使得参数对其搜索效果的影响会尽可能地低。
遗传算法的缺陷:
(1)目前,遗传算法的理论基础还较为薄弱。
尽管遗传算法中的新技术、新策略层出不穷,但它们几乎都是针对特定问题求解而言的,对它们的评估也都是基于对比实验,缺乏深刻而具普遍意义的理论分析;
(2)遗传算法全局搜索能力强而局部搜索能力相对较弱。
大量计算实践表明:
遗传算法可用极快的速度达到最优解的90%左右,但要达到真正的最优解却要花费很长的时间。
若兼顾收敛速度和解的品质两个指标,单纯的遗传算法未必比其它方法优越。
因此,如何将遗传算法与其它方法相结合是遗传算法研究中十分有意义的工作;
(3)由于选择、交叉、变异等遗传操作的随机性,会降低群体中个体的多样性,从而会使算法停留在局部最优解附近,无法达到全局最优,出现早熟。
预防早熟现象的方法有多种,主要基于维持种群多样性的思想,小生境技术就是其中较为成功的一种方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十一章 遗传算法 第十一 遗传 算法