遗传算法基本理论及实例.docx
- 文档编号:27027282
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:20
- 大小:165.80KB
遗传算法基本理论及实例.docx
《遗传算法基本理论及实例.docx》由会员分享,可在线阅读,更多相关《遗传算法基本理论及实例.docx(20页珍藏版)》请在冰豆网上搜索。
遗传算法基本理论及实例
一、遗产算法得由来1
二、遗传算法得国内外研究现状....2
三、遗传算法得特点3
四、遗传算法得流程5
五、遗传算法实例9
六、遗传算法编程13
七、总结15
附录一:
运行程序16
遗传算法基本理论与实例
一、遗产算法得由来
遗传算法(GeneticAlgorithm,简称GA)起源于对生物系统所进行得计算机模拟研究。
20世纪40年代以来,科学家不断努力从生物学中寻求用于计算科学与人工系统得新思想、新方法。
很多学者对关于从生物进化与遗传得激励中开发出适合于现实世界复杂适应系统研究得计算技术——生物进化系统得计算模型,以及模拟进化过程得算法进行了长期得开拓性得探索与研究。
JohnH、Holland教授及其学生首先提出得遗传算法就就是一个重要得发展方向。
遗传算法借鉴了达尔文得进化论与孟德尔、摩根得遗传学说。
按照达尔文得进化论,地球上得每一物种从诞生开始就进入了漫长得进化历程。
生物种群从低级、简单得类型逐渐发展成为高级复杂得类型。
各种生物要生存下去及必须进行生存斗争,包括同一种群内部得斗争、不同种群之间得斗争,以及生物与自然界无机环境之间得斗争。
具有较企生存能力得生物个体容易存活下来,并有较多得机会产生后代;具有较低生存能力得个体则被淘汰,或者产生总代得机会越来越少。
直至消亡。
达尔文把这一过程与现象叫做“自然选择,适者生存”。
按照孟德尔与摩根得遗传学理论,遗传物质就是作为一种指令密码封装在每个细胞中,并以基因得形式排列在染色体上,每个基因有特殊得位置并控制生物得某些特性。
不同得基因组合产生得个体对环境得适应性不一样,通过基因杂交与突变可以产生对环境适应性强得后代。
经过优腔劣汰得自然选择,适应度值高得基因结构就得以保存下来,从而逐渐形成了经典得遗传学染色体理论,揭示了遗传与变异得基本规律。
遗传算法由美国得JohnH、Holland教授1975年首先提出,其主要特点就是直接对结构对象进行操作,不存在求导与函数连续性得限定;具有内在得隐并行性与更好得全局寻优能力;采用槪率化得寻优方法,能自动获取与指导优化得搜索空间,自适应地调整搜索方向,不需要确定得规则。
遗传算法得这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制与人工生命等领域。
它就是现代有关智能计算中得关键技术。
二、遗传算法得国内外研究现状
遗传算法得鼻祖就是美国Michigan大学得HolIand教授及其学生。
她们受到生物模拟技术得启发,创造了一种基于生物遗传与进化机制得适合于复杂系统优化得自适应概率优化技术——遗传算法。
1967年,Holland得学生Bagley在其博士论文中首次提出了“遗传算法”一词,她发展了复制、交叉、变异、显性、倒位等遗传算子,在个体编码上使用双倍体得编码方法。
Holland教授用遗传算法得思想对自然与人工自适应系统进行了研究,提出了遗传算法得基本理论——模式定理(SchemaTheorem)并于1957年出版了第一本系统论述遗传算法与人工自适应系统得专著《AdaptationinNaturaIandArtificialSystems》。
20世纪80年代,Holland教授实现了第一个总于遗传算法得机器学习系统,开创了遗传算法得机器学习得新概念。
1975年,DeJong基于遗传算法得思想在计算机上进行了大量得纯数值函数优化计算实验,建立了遗传算法得工作框架,得到了一些重要且具有指导意乂得结论o1989年,Goldberg出版了《GeneticAlgorithminSearch,OptimizationandMachineLearning》一书,系统地总结了遗传算法得主要研究成果,全而完整得论述了遗传算法得基本原理及其应用。
1991年,David出版了《HandbookofGeneticAlgorithms》一书,介绍了遗传算法在科学计算、工程技术与社会经济中得大量实例。
1992年,Koza将遗传算法应用于计算机程序得优化设计及自动生成,提出了遗传编程(GeneticProgramming,简称GP)得槪念。
在控制系统得离线设计方面遗传算法被众多得使用者证明就是有效得簾略。
例如,Krishnakumar与GoIdberg以及Bramlette与Gusin已证明使用遗传优化方法在太空应用中导出优异得控制器结构比使用传统方法如LQR与PowelI(鲍威尔)得增音机设计所用得时间要少(功能评估)。
Porter与Mohamed展示了使用本质结构分派任务得多变量飞行控制系统得遗传设计方案。
与此同时,另一些人证明了遗传算法如何在控制器结构得选择中使用。
从遗传算法得整个发展过程来瞧,20世纪70年代就是兴起阶段,20世纪80年代就是发展阶段,20世纪90年代就是高潮阶段。
遗传算法作为一种实用、高效、鲁棒性强得优化技术,发展极为迅速,已引起国內外学者得高度重视。
近些年来,国内外很多学者在遗传算法得编码表示、适应度函数、遗传算子、参数选择、收敛性分析、欺骗问题与并行遗传算法上做出了大量得研究与改进。
还有很多学者将遗传算法与其她只能算法结合,进一步提高局部搜索能力。
在遗传算法得应用上也有很多改进。
由于遗传算法具有全局并行搜索、简单通用、鲁棒性强等优点,使得遗传算法广泛地应用于计算机科学、自动控制、人工智能、工程设计、制造业、生物工程与社会科学等领域。
针对遗传算法得一些问题,还有一些问题需要进一步得探究,将大大促进遗传算法理论与应用得发展,遗传算法必将在智能计算领域中展现出更加光明得前景。
三、遗传算法得特点
遗传算法就是一种借鉴生物界自然选择与自然遗传机制得随机搜索算法。
它与传统得算法不同,大多数古典得优化算法就是基于一个单一得度量函数(评估函数)得梯度与较高次统计,以产生一个确定性得试验解序列;遗传算法不依赖梯度信息,而就是通过模拟自然进化进程来搜索最优解,它利用某种编码技术,作用于称为染色体得数字串,模拟由这些串组成得群体得进化过程。
遗传算法通过有组织得、随机得信息交换来重新组合那些适应性好得串,生成新得串得群体。
遗传算法有以下优点:
(1)对可行解表示得广泛性。
遗传算法得处理对象不就是参数本身,而就是针对那些通过参数集进行编码得基因个体,此编码操作使得遗传算法可以直接对结构对象进行操作。
所谓结构对象,泛指集合、序列、矩阵、树、链、表等各种一维或二维甚至多维结构形式得对象。
这一特点使得遗传算法具有广泛得应用领域。
比如通过对连接矩阵得操作,遗传算法可用来对神经网络或自动机得结构或参数加以优化;通过对集合得操作,遗传算法可实现对规则集合与知识库得精炼而达到高质量得机器学习目得;通过对树结构得操作,用遗传算法可得到用于分类得最佳决策树;通过对任务序列得操作,遗传算法可用于任务规划,而通过对操作序列得处理,可自动构造顺序控制系统。
(2)群体搜索特性。
许多传统得搜索方法都就是单点搜索,这种点对点得搜索方法,对于多峰分布得搜索空间常常会陷于局部得某个单峰得极值点。
相反,遗传算法采用得就是同时处理群体中多个个体得方法,即同时对搜索空间中得多个解进行评估。
这一特点使遗传算法具有较好得全局搜索性能,也使得算法本身易于并行化。
(3)不需要辅助信息。
遗传算法仅用适应度函数来得数值来评估基因个体,并在此基础上尽心遗传操作。
更重要得就是,遗传算法得适应度函数不仅不受连续可微得约束,而且其定狡域可以任意设定。
对适应度函数得唯一要求就是,编码必须与可行解空间对应,不能有死码。
由于限制条件得缩小,使得遗传算法得应用范围大大扩展。
(4)内在启发式随机搜索特性。
遗传算法不就是釆用确定性规则,而就是采用概率得变迁规则来指导它得搜索方向。
概率不仅仅就是作为一种工具来引导其搜索过程朝着搜索空间得更优化得解区域移动得。
虽然瞧起来它就是一种盲目搜索方法,实际上它有明确得搜索方向,具有内在得并行搜索机制。
(5)遗传算法在搜索过程中不容易陷入局部最优,即时在所定艾得适应度函数就是不连续得、非规则得或有噪声得情况下,也能以很大得概率找到全局最优解。
(6)遗传算法采用自然进化机制来表现复杂得现象,能够快速可靠地解决求解非常困难得问题。
(7)遗传算法具有固有得并行性与并行计算得能力。
(8)遗传算法具有可扩展性,易于同别得技术混合使用。
遗传算法作为一种优化算法,也有它自身得局限性:
(1)编码不规范及编码存在表示得不准确性。
(2)单一得遗传算法编码不能全面地将优化问题得约束表示出来。
考虑约束得一个方法就就是对不可行解采用阈值,这样,计算得时间必然增加。
(3)遗传算法通常得效率比其她传统得优化方法低。
(4)遗传算法容易出现过早收敛。
(5)遗传算法对算法得精度、可信度、计算复杂性等方面,还没有有效得定量分析方法。
遗传算法得基本内容如下:
个体与种群。
个体就就是模拟生物个体而对问题中得对象(一般就就是问题得解)得一种称呼,一个个体也就就是搜索空间中得一个点。
种群(population)就就是模拟生物种群而由若干个体组成得群体,它一般就是整个搜索空间得一个很小得子集。
适应度与适应度函数。
适应度(fitness)就就是借鉴生物个体对环境得适应程度,而对问题中得个体对象所设计得表征其优劣得一种测度。
适应度函数(fitnessfunction)就就是问题中得全体个体与其适应度之间得一个对应关系。
它一般就是一个实值函数。
该函数就就是遗传算法中指导搜索得评价函数。
染色体与基因。
染色体(chromosome)就就是问题中个体得某种字符串形式得编码表示。
字符串中得字符也就称为基因(gene)。
例如个体上9,染色体得表示形式就是1001,0与1就是染色体上得基因。
遗传操作。
也称为遗传算子,就就是关于染色体得运算。
遗传算法中有三种遗传操作:
选择-复制,交叉与变异。
4.遗传算法得流程
遗传算法在整个进化过程中得遗传操作就是随机得,但它所呈现出得特性并不就是完全搜索,它能有效地利用历史信息来推测下一代期望性能有所提高得寻优点集。
这样一代代得不断进化,最后收敛到一个最适应环境得个体上,求得问题得最优解。
遗传算法所涉及得五大要素就是:
参数编码.初始种群得设定.适应度函数得设计.遗传操作得设计与控制参数得设定。
流程如图1所示。
生成初始种群
计算适应度
选择■复制
交叉变异
生成新一代种群
图1遗传算法基本流程
简单遗传算法得运行过程为一个典型得迭代过程,其必须完成得工作内容与基本步骤如下:
1)选择编码策略,把参数集合X与域转换为位串结构空间So
2)定艾适应度函数。
3)确定遗传策略,包括选择群体大小n,选择、交叉、变异方法,以及确定交叉概率、变异概率等遗传参数。
4)随机初始化生成种群P。
5)计算群体中个体位串解码后得适应度值。
6)按照遗传策略,运用选择、交叉与变异算子作用与群体,形成下一代群体。
7)判断群体性能就是否满足某一目标,政者已完成预定迭代次数,不满足则返回步骤6),或者修改遗传策略再返回步骤6)o
下而对基本步骤进行分解,进一步详细介绍流程中一些细节。
编码表示。
在许多问题求解中,编码就是遗传算法中首要解决得问题,对算法得性能有很重要得影响。
Holland提出得二进制编码就是遗传算法中最常用得一种编码方法,它采用最小字符编码原则,编/解码操作简单易行,利于交叉、变异操作得实现,也可以采用模式定理对算法进行理论分析。
但二进制编码用于多维、高精度数值问题优化时,不能很好地克服连续函数离散化时得映射误差;不能直接反映问题得固有结构,精度不高,并且个体长度大、占用内存多。
针对二进制编码存在得不足,人们提出了多种改进方法,比较典型得有以下几种:
(1)格雷码编码。
为了克服二进制编码在连续函数离散化时存在得不足,人们提出了用格雷码进行编码得方法,它就是二进制编码得变形。
格雷码不仅具有二进制编码得一些优点,而且能够提高遗传算法得局部搜索能力。
假设有一个二进制编码为尤=xaxa_x---x2xv其对应得格雷码为F=ysya_x…y2yv则
-1=Z27—1,/»—2,•••»1
_儿=兀+1㊉兀
(2)实数编码。
该方法适合于遗传算法中表示范围较大得数,使遗传算法更接近问题空间,避免了编码与解码得过程。
它便于较大空间得遗传搜索,提高了遗传算法得精度要求;便于设计专门问题得遗传算子;便于算法与经典优化方法得混合作用,改善了遗传算法得计算复杂性,提高了运算效率。
(3)十进制编码。
该方法利用十进制编码控制参数,缓解了“组合爆炸”与遗传算法得早熟收敛问题。
(4)非数值编码。
染色体编码串中得基因值取一个仅有代码含<而无数值含艾得符号集,这些符号可以就是数字也可以就是字符。
非数值编码得优点就是在遗传算法中可以利用所求问题得专门知识及相关算法。
对于非数值编码,问题得解与染色体得编码要注意染色体得可行性、染色体得合法性与映射得惟一性。
适应度函数。
在遗传算法中,适应度就是描述个体性能得主要指标,根据适应度得大小对个体进行优腔劣汰。
对于求解有约束得优化问题时,一般采用罚函数方法将目标函数与约束条件建立成一个无约束得优化目标函数;然后再将目标函数作适当处理,建立适合遗传算法得适应度函数。
将目标函数转换成适应度函数一般应遵循两个原则:
适应度必须非负;优化过程中目标函数得变化方向应与群体进化过程中适应度函数变化方向一致。
在使用遗传算法求解具体问题时,适应度函数得选择对算法得收敛性以及收敛速度得影响较大,针对不同得问题需根据经验或算法来确定相应得参数。
遗传算子。
在遗传算法中通过一系列算子来决定后代,算子对当前群体中选定得成员进行重组与变异。
(1)选择算子选择操作通过适应度选择优质个体而抛弃劣质个体,体现了"适者生存”得原理。
常见得选择操作主要有以下几种:
a)轮盘赌选择。
选择某假设得概率就是通过这个假设得适应度与当前群体中其她成员得适应度得比值而得到。
此方法就是基于概率选择得,存在统计误差,因此可以结合最优保存策略以保证当前适应度最优得个体能够进化到下一代而不被遗传操作得随机性破坏,保证算法得收敛性。
b)排序选择。
对个体适应度取正值或负值以及个体适应度之间得数值差异程度无特殊要求,对群体中得所有个体按其适应度大小进行排序,根据排序来分配各个体被选中得概率。
c)最优个体保存。
父代群体中得最优个体直接进入子代群体中。
该方法可保证在遗传过程中所得到得个体不会被交叉与变异操作所碇坏,它就是遗传算法收敛性得一个重要保证条件;它也容易使得局部最优个体不易被淘汰,从而使算法得全局搜索能力变强。
d)随机联赛选择。
每次选取N个个体中适应度最高得个体遗传到下一代群体中。
具体操作如下:
从群体中随机选取N个个体进行适应度大小比较,将其中适应度最高得个体遗传到下一代群体中;将上述过程重复执行M(为群体大小)次,则可得到下一代群体。
(2)交叉算子交叉就是指对两个相互交叉得染色体按某种方式相互交换其部分基因,从而形成两个新得个体。
它就是产生新个体得主要方法,决定了遗传算法得全局搜索能力,在遗传算法中起关键作用。
几种常用得适用于二进制编码或实数编码方式得交叉算子如下:
a)单点交叉。
在个体编码串中随机设置一个交叉点E在该点相互交换两个配对个体得部分基因。
b)两点交叉。
在相互配对得两个个体编码串中随机设置两个交叉点,并交换两个交叉点之间得部分基因。
c)均匀交叉。
两个相互配对个体得每一位基因都以相同得概率进行交换,从而形成两个新个体。
d)算术交叉。
由两个个体得线性组合而产生出新得个体。
(3)变异算子变异就是指将个体染色体编码串中得某些基因座上得基因值用该基因座得其她等位基因来替换,从而形成一个新得个体。
它就是产生新个体得辅助方法,决定了遗传算法得局部搜索能力。
变异算子与交叉算子相互配合,可以共同完成对搜索空间得全局搜索与局部搜索,从而使得遗传算法以良好得搜索性能完成最优化问题得寻优过程。
在遗传算法中使用变异算子主要有以下两个目得:
改善遗传算法得局部搜索能力;维持群体得多样性,防止出现早熟现象。
下面就是几种常用得变异操作:
a)基本位变异。
对个体编码串以变异概率P随机指定某一位或某几位基因进行变异操作。
b)均匀变异(一致变异)。
分别用符合某一范围内均匀分布得随机数,以菜一较小得概率来替换个体编码串中各个基因座上得原有基因值。
均匀变异操作特别适合应用于遗传算法得初期运行阶段,它使得搜索点可以在整个搜索空间内自由地移动,从而可以增加群体得多样性,使算法能够处理更多得模式。
c)二元变异。
需要两条染色体参与,通过二元变异操作后生成两条新个体中得各个基因分别取原染色体对应基因值得同或异或。
它改变了传统得变异方式,有效地克服了早熟收敛,提高了遗传算法得优化速度。
d)高斯变异。
在进行变异时用一个均值为L、方差为R2得正态分布得一个随机数来替换
原有基因值。
其操作过程与均匀变异类似。
五、遗传算法实例
例:
利用遗传算法,求解区间[0,31]X得二次函数y=亍得最大值。
分析:
原问题可转化为在区间[0,31]中搜索能使y取最小值得点x得问题。
那么,[0,31]中得点x就就是个体,函数值f(x)恰好就可以作为x得适应度,区
间[0,31]就就是一个(解)空间。
这样,只要能给出个体x得适当染色体编码,该问题就可以用遗传算法来解决。
二次函数得图像如图2所示。
MFigure1
图2二次函数y=得图像
⑴设定种群规模,编码染色体,产生初始种群。
将种群规模设定为4;用5位二进制数编码染色体;取下列个体组成初始种群
S]二13(01101),s:
二24(11000)s3=8(01000),s产19(10011)
(2)定义适应度函数。
取适应度函数:
/"(X)=十。
(3)计算各代种群中得各个体得适应度,并对其染色体进行遗传操作,直到适应度最高得个体(即31(11111))出现为止。
首先计算种群?
中各个体得适应度f(sj。
容易求得,
2
f(s)=f(13)=13=169
1
2
f(s)=f(24)=24=576
2
2
f(s)=f(8)=8=64
3
2
f(s)=f(19)=19=361
4
再计算种群£中各个体得选择概率。
选择概率得计算公式为
/a)
J—1
由此求得,
P(s)=P(13)=0、14
i
P(s)=P(24)二0、49
2
P(s)=P(8)=0、06
3
P(s)=P(19)=0、31
用赌轮选择法可得图3,
图3赌轮选择法示意图
设从区间[0,1]中产生4个随机数如下:
厂二0、450126,
1
厂二0、110347
2
厂二0、572496,
3
厂二0、98503
4
表1
第一代选中次数表
染色体
适应度
选择概率
积累概率
选中次数
sl=01101
169
0、14
0、14
1
s2=11000
576
0'49
0'63
2
s3=01000
64
0'06
0'69
0
s4=10011
361
(H31
1
1
于就是,经复制得群体:
s'=11000(24),s'=01101(13)
s'=11000(24),s'=10011(19)
34
设交叉率p=100%,即S中得全体染色体都参加交叉运算。
设S'与S'配
c112
对,S,与S,配对。
分别交换后两位基因,得新染色体:
34
S''=11001(25),S''=01100(12)
s''=11011(27),s''=10000(16)设变异率Q二0、001o这样,群体S中共有5X4X0.001=0.02位基因可以变异。
e1
0、02位显然不足1位,所以本轮遗传操作不做变异。
于就是,得到第二代种群S:
2
s=11001(25),5=01100(12)
12
s=11011(27),s=10000(16)
34
表2第二代选中次数表
染色体
适应度
选择概率
积累概率
估计得选中次数
sl=11001
625
0、36
0'36
1
s2=01100
144
0、08
0'44
0
s3=11011
729
0'41
0'85
2
s4=10000
256
0・15
1
1
假设这一轮选择-复制操作中,种群亠中得4个染色体都被选中,则得到群体:
■
s'=11001(25),S'=01100(12)
12
S'=11011(27),S'=10000(16)
34
做交叉运算,让s'与s'、s'与s'分别交换后三位基因,得
1234
s''=11100(28),S''二01001(9)
12
S''=11000(24),S…二10011(19)
34
这一轮仍然不会发生变异。
于就是,得第三代种群53:
1100(28),s2=01001(9)
53=11000(24),s4=10011(19)
表3第三代选中次数
染色体
适应度
选择概率
积累槪率
估计得选中次数
sl=11100
784
0'44
0'44
2
s2=01001
81
0'04
0、48
0
s3=11000
576
0、32
0・8
1
s4=10011361|0、2|1|1
设这一轮得选择-复制结果为:
s'=11100(28),s'=11100(28)
12
s'=11000(24),S'=10011(19)
34
做交叉运算,让S'与S',S'与S'分别交换后两位基因,得
1423
s'"=11111(31),S''=11100(28)
12
s''=11000(24),S''=10000(16)
34
这一轮仍然不会发生变异。
于就是,得第四代种群
s,=11111(31),s2=11100(28)
s3=11000(24),s4=10000(16)
显然,在这一代种群中已经出现了适应度最高得染色体s.=11111o于就是,遗传操作终止,将染色体"11111”作为最终结果输出。
然将染色体"11111"解码为表现型,即得所求得最优解:
31。
将31代入函数尸"中,即得原问题得解,即函数尸"得最大值为961o
六、遗传算法编程
MATLAB程序需要解决得问题就是利用遗传算法,求解区间[0,31]X得二次函数y=亍得最大值。
使用得就是matlabR2010A,在WIN7环境下运行。
鉴于此版本得软件不含有遗传算法工具箱,自行安装至路径“D:
\MATLAB\R2010a\toolbox\genetic\gatbx”,并在操作界而上添加路径。
程序见附录一,程序界面如图3所示。
fplotCvariable,^vaciable^
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 遗传 算法 基本理论 实例