第7章 遗传算法.docx
《第7章 遗传算法.docx》由会员分享,可在线阅读,更多相关《第7章 遗传算法.docx(12页珍藏版)》请在冰豆网上搜索。
第7章遗传算法
第七章:
遗传算法
7.1:
概述
一:
起源
遗传算法(GeneticAlgorithm,简称GA)起源于生物系统所进行的计算机模拟研究。
受到生物模拟技术的启发,创造出了一种基于生物遗传和进化机制的适合于复杂系统优化的自适应概率优化技术——遗传算法
●1967美国Michigan大学的Holland教授的学生Bagley在其博士论文中首次提出了“遗传算法”一词,他发展了复制、交叉、变异、显性、倒位等遗传算子,在个体编码上使用双倍体的编码方法。
●Holland教授用遗传算法的思想对自然和人工自适应系统进行了研究,提出了遗传算法的基本定理——模式定理(SchemaTheorem),并于1975年出版了第一本系统论述遗传算法和人工自适应系统的专著《AdaptationinNaturalandArtificialSystems》。
●20世纪80年代,Holland教授实现了第一个基于遗传算法的机器学习系统,开创了遗传算法的机器学习的新概念。
●1975年,DeJong基于遗传算法的思想在计算机上进行了大量的纯数值函数优化计算实验,建立了遗传算法的工作框架,得到了一些重要且具有指导意义的结论。
●1989年,Goldberg出版了《GeneticAlgorithminSearch,OptimizationandMachineLearning》一书,系统地总结了遗传算法的主要研究成果,全面完整地论述了遗传算法的基本原理及其应用。
●1991年,Davis出版了《HandbookofGeneticAlgorithms》一书,介绍了遗传算法在科学计算、工程技术和社会经济中的大量实例。
●1992年,Koza将遗传算法应用于计算机程序的优化设计及自动生成,提出了遗传编程(GeneticProgramming,简称GP)的概念。
从遗传算法的整个发展过程来看:
20世纪70年代是兴起阶段
20世纪80年代是发展阶段
20世纪90年代是高潮阶段
二:
概念
生物的进化过程主要通过染色体之间的交叉和变异来完成的。
基于对自然界中生物遗传和进化机理的模仿,针对不同的问题,很多学者设计了许多不同的编码方法表示问题的可行解,开发出了许多种不同的编码方式来模仿不同环境下的生物遗传特性,这样,由不同的编码方法和不同的遗传算子就构成了不同的遗传算法。
遗传算法是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,它借鉴了达尔文的进化论和孟德尔的遗传学说。
其本质是一种高效、并行、全局搜索的方法,它能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最优解。
遗传算法的操作使用适者生存的原则,在潜在的解决方案种群中逐次产生一个近似最优的方案。
在遗传算法的每一代中,根据个体在问题域中的适应度值和从自然遗传学中借鉴来的再造方法进行个体选择,产生一个新的近似解。
这个过程导致种群中个体的进化,得到的新个体比原个体更能适应环境,就像自然界中的改造一样。
编码:
由字符串组成的串,即染色体,表示个体或当前近似解
三:
遗传算法的特点
传统算法:
基于一个单一的度量函数的梯度或较高次统计,以产生一个确定性的实验解序列。
遗传算法:
借鉴生物界自然选择和自然遗传机制的随机搜索方法,不依赖梯度信息,而通过模拟自然进化过程来搜索最优解。
它利用某种编码技术,作用于称为染色体的数字串,模拟由这些串组成的群体的进化过程。
优点:
1:
对可行解表示的广泛性
●通过对连接矩阵的操作,遗传算法可用来对神经网络和自动机的结构或参数加以优化。
●通过对集合的操作,遗传算法可实现对规则集合和知识库的精炼而达到高质量的机器学习目的。
●通过对树结构的操作,用遗传算法可得到用于分类的最佳决策树
●通过对任务序列的操作,遗传算法可用于任务规划,而通过对操作序列的处理,可自动构造顺序控制系统。
2:
群体搜索特性
传统方法都是单点搜索,
遗传算法采用的是同时处理群体中多个个体的方法
3:
不需要辅助信息
用适应度函数的数值评估基因个体,适应度函数不仅不受连续可微的约束,而且其定义域是可以任意设定的。
对于适应度唯一的要求是:
编码必须与可行解空间对应,不能有死码
4:
内在启发式随机搜索特性
不采用确定性规则,采用概率的变迁规则来指导搜索方向。
5:
遗传算法在搜索过程中不容易陷入局部最优
即使在所定义的适应度函数是不连续的、非规则的或有噪声的情况下,也能以很大的概率找到全局最优解。
6:
遗传算法采用自然进化机制来表现复杂的现象
能够快速可靠地解决求解非常困难的问题。
7:
遗传算法具有固有的并行性和并行计算的能力
8:
具有可扩展性,易于同别的技术混合使用
缺点:
1:
编码不规范及编码存在的不准确性
2:
单一的遗传算法编码不能全面地将优化问题的约束表示出来。
3:
效率低
4:
容易出现过早收敛
5:
对算法的精度、可信度、计算复杂性等方面,还没有有效的定量分析方法
四:
遗传算法与传统算法的比较
五:
遗传算法的基本用语
遗传学和遗传算法中基本用语对照表
自然遗传算法
人工遗传算法
染色体
遗传载体,复数个基因组成
解的编码(数据、数组、位串)
基因
控制生物性状的遗传物质的功能单位和结合单位
解中每一份量的特性(特性、个体、探测器、位)
等位基因
基因所取的值
特性值
基因座
染色体中基因的位置
串中位置
基因型
与表现型密切相关的基因组成
结构
表现型
生物个体所表现出来的性质状态
参数集、解码结构、候选解
遗传隐匿
非线性
个体
解
适者生存
在算法停止时,最优目标值的解有最大的可能被留住
适应性
适应度函数值
群体
选定的一组解(其中解的个数为群体的规模)
复制
根据适应函数值选取的一组解
交配
通过交配原则产生一组新解的过程
变异
编码的某一个分量发生变化的过程
六:
遗传算法的应用
遗传算法的主要应用领域
应用领域
例子
控制
瓦斯管道控制、防避导弹控制、机器人控制
规划
生产规划、并行机任务分配
设计
VLSI(VeryLargeScaleIntegratedcircuites超大规模集成电路)布局、通信网络设计、喷气发动机设计
组合优化
TSP(TravellingSalesmanProblem)问题、背包问题、图划分问题
图像处理
模式识别、特征提取、图像恢复
信号处理
滤波器设计、目标识别、运动目标分割
机器人
路径选择
人工生命
生命的遗传进化
7.2基本遗传算法
一:
遗传算法的运行过程
遗传算法的一般步骤
遗传算法的运算流程
使用选择算子、交叉算子和变异算子的遗传算法的运算过程:
1)编码:
解空间中的解数据x,作为遗传算法的表现型形式。
从表现型到基因型的映射称为编码。
遗传算法在进行搜索之前先将解空间的解数据表示成遗传空间的基因型串结构数据,这些串结构数据的不同组合就构成了不同的点。
2)初始群体的生成:
随机产生N个初始串结构数据,每个串结构数据称为一个个体,N个个体构成了一个群体。
遗传算法以这N个串结构作为初始点开始迭代。
设置进化代数计数器t←0;设置最大进化代数T;随机生成M个个体作为初始群体P(0).
3)适应度值评价检测:
适应度函数表明个体或解的优劣性。
对于不同的问题,适应度函数的定义方式不同。
根据具体问题,计算群体P(t)中各个个体的适应度。
4)选择:
将选择算子作用于群体。
5)交叉:
将交叉算子作用于群体。
6)变异:
将变异算子作用于群体。
群体P(t)经过选择、交叉、变异运算后得到下一代群体P(t+1)。
7)终止条件判断:
若t≤T,则t←t+1,转到步骤2);
若t>T,则以进化过程中所得到的具有最大适应度的个体作为最优解输出,终止运算。
二:
遗传算法的基本操作
三个基本操作:
选择(Selection)、交叉(Crossover)、变异(Mutation)
1)选择
目的是为了从当前群体中选出优良的个体,使它们有机会作为父代为下一代繁殖子孙。
根据各个个体的适应度值,按照一定的规则或方法从上一代群体中选择出一些优良的个体遗传到下一代群体中。
遗传算法通过选择运算体现这一思想,进行选择的原则是适应性强的个体为下一代贡献一个或多个后代的概率大。
这样就体现了达尔文的适者生存原则。
2)交叉
目的是得到新一代个体,新个体组合了父辈个体的特性。
将群体中的各个个体随机搭配成对,对每一个个体,以某个概率(交叉概率)交换他们之间的部分染色体。
交叉体现了信息交换的思想。
3)变异
首先在群体中随机选择一个个体,对于选中的个体以一定的概率随机改变串结构中某一个串的值,即对群体中的每一个个体,以某一概率(变异概率)改变某一个或某一些基因座上基因值为其他的等位基因。
同生物界一样,遗传算法变异发生的概率很低。
变异为新个体的产生提供了机会。
三:
基本遗传算法
SimpleGeneticAlgorithmSGA
以群体中的所有个体为对象,只使用基本遗传算子:
选择算子、交叉算子、变异算子
1.数学模型
其中:
C:
个体的编码方法
E:
个体适应度评价函数
:
初始种群
:
种群大小
:
选择算子
:
交叉算子:
:
变异算子
T:
遗传运算终止条件
2.基本遗传算法的步骤
1)染色体编码
使用固定长度的二进制符号串来表示群体中的个体,其等位基因由二值组成。
初始群体中各个个体的基因可用均匀分布的随机数来生成
如:
X=100111001000101101表示一个个体,染色体长度n=18
●编码:
设某一个参数的取值范围
,长度为k,则总共产生
种不同的编码
其中
●解码:
假设某一个体的编码为
,则对应的解码公式为
如:
设参数
,5位二进制编码对X进行编码,32个二进制串(染色体)
00000000010001000011
00100001010011000111
01000010010101001011
01100011010111001111
10000100011001010011
10100101011011010111
11000110011101011011
11100111011111011111
解码
2)个体适应度的监测评估
基本遗传算法按与个体适应度成正比的概率来决定当前群体中各个个体遗传到下一代群体中的机会多少。
为了正确评估这个概率,要求所有个体的适应度必须为非负数。
所以根据不同种类的问题,需要预先确定好由目标函数值到个体适应度之间的转换规律,特别是要预先确定好当目标函数值为负数时的处理方法。
例如:
目标函数加上一个适当大的正数c
3)遗传因子
●选择运算使用比例选择算子。
比例选择因子是利用比例于各个个体适应度的概率决定其子孙的遗传可能性。
若设种群数为M,个体i的适应度为
,则个体i被选取的概率为
当个体选择的概率给定后,产生[0,1]之间的均匀随机概率来决定哪个个体参加交配,若个体的选择概率大,则能被多次选中,它的遗传因子就会在种群中扩大;若单个的选择概率小,则被淘汰。
●交叉运算使用单点交叉算子
只有一个交叉点位置,任意挑选经过选择操作后种群中两个个体作为交叉对象,随机产生一个交叉点位置,两个个体在交叉点位置互换部分基因码,形成两个子个体。
●变异运算使用基本位变异算子或均匀变异算子。
为了避免问难过早收敛,对于二进制的基因码组成的个体种群,实现基因的小概率反转,即0变为1,1变为0
4)基本遗传算法的运行参数
M为群体大小,群体中所含个体的数量,20~100
T遗传算法的终止进化迭代,100~500
交叉概率0.4~0.99
变异概率0.0001~0.1