读书报告遗传算法Word文档格式.docx
《读书报告遗传算法Word文档格式.docx》由会员分享,可在线阅读,更多相关《读书报告遗传算法Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
突变算子是指模拟生物在自然的遗传进化环境中由于各种偶然因素引起的基因模式突然改变的个体繁殖方式。
2、遗传算法简介
1)遗传算法主要包括以下内容:
(1)构造适应度函数
(2)群体的初始化
(3)后代群体的繁殖
(4)群体进化收敛判断
(5)最优个体转化为优化解
在优化设计中,设计变量、目标函数、约束
条件是优化模型的三个要素。
一般可以利用编码
技术对设计变量进行编码,将设计变量转化为适
使其蕴含于遗传算法的适应度函数。
这样,在群数。
当群体进化结束后,目标函数数值最小,这样,优化模型可以利用遗传算法来求解。
2)利用遗传算法求解该优化问题的主要过程如下:
(1)构造适应度函数图1遗传算法流程图
取5位二进制数串,这样既满足了优化问题对于设计变量的约束,有实现了对设计变量x1的编码。
(2)群体初始化
值得注意的是,为方便手工计算,群体规模数取的很小,在实际计算的时候群体规模数应该选取较大值。
在后代群体的繁殖过程中,一般要进行个体的选择、杂交、突变等。
(4)群体进化收敛性判别
给出适应度变化许可精度,计算前后两代群体平均适应度变化率,如平均适应度变化率小于许可精度,那么说明群体进化过程基本稳定、群体进化收敛,则可结束群体的进化过程;
否则仍需继续群体的繁殖过程。
(5)最优个体转化为最优解
在最后一代群体中选择最优个体,对最优个体进行转化,就可得出优化问题的最优解和目标函数。
二、遗传算法的基本原理
1、适应度函数的建立
适应度是遗传算法中描述个体性能的主要指标。
一般的个体适应度值越大,个体的性能越好;
反之,个体的适应度值越小,个体性能也越差。
在遗传算法中,适应度的值是必须大于等于0的值。
由于遗传算法是依据适应度的值对个体性优胜劣汰的,因此,将无约束化问题的目标函数与个体的适应度建立映射关系,即可在群体的进化过程中实现对优化问题目标函数的寻优。
将目标函数转换为适应度函数,一般需要遵循如下两个基本原则。
(1)适应度值必须大于等于0
(2)优化过程中目标函数的变化方向(如向目标函数最大值或者是最小值变化)应与群体进化过程中适应度函数变化方向一致。
对于最小值优化问题,可通过下式来建立与目标函数存在映射关系的适应度函数。
f(x)?
c?
f(x)
式中:
f(x)—适应度函数
c—一个可调函数,其取值应该使适应度函数f(x)恒大于等于0(2-1)
f(x)—最小值优化问题的目标函数。
为确保适应度函数f(x)不小于0,一般常采用下式建立适应度函数。
?
cmax?
f(x)当f(x)&
lt;
cmax时f(x)?
?
0当f(x)?
cmax时
cmax—一个可调参数,可取目标函数理论上的最大值。
2、设计变量与个体间的映射
设计变量与个体之间的映射可以通过编码来实现。
编码方法一般应遵循位串定义长度最短、模式阶次最高、模式数目最大等原则。
常用的编码有两种方法,一种是二进制编码,另外一种是k进制编码。
假设二进制编码的位数为t,k进制编码的位数为j,则t与j有如下的关系:
2t?
kj3、群体初始化
群体的初始化一般包括如下内容。
(1)确定群体数目m,群体规模数一般在50以上;
(2)对优化问题的初始解x0?
x1,x2,?
xn?
进行编码,产生与初始解对应的个体;
(3)通过随机方式产生n个l位二进制串作为初始群体的一个群体;
(4)不断产生初始个体,直到初始群体中个体数目为m为止。
4、群体繁殖
(1)选择
从上带群体中选择一定数量的个体,并将为参与下代群体繁殖的父代个体。
选择个体的原则是使适应度大的个体被选择的几率大。
常用的方法主要有轮盘选种法、rsis选种法、线性比例模型法等。
(2)产生后代个体
杂交、突变等基本繁殖算子是依靠随机的方式来选取的。
随机概率在0.6到0.8范围时利用杂交算子来产生后代个体,随机概率在0.01到0.02范围时采用突变算子来产生后代个体,对大多数优化问题比较合适。
利用选择的基本繁殖算子产生个体,直到产生的后代个体数目达到群体
规模数。
5、群体收敛判别
群体进化收敛性可以通过各个代群体平均适应度变化率和最优个体适应度变化率等指标来判别。
如果群体平均适应度变化率和最优个体适应度变化率小于许可精度,则可以认为群体进化处于稳定状态,群体进化基本收敛,可结束群体进化过程,否则继续群体的进化过程。
6、输出最优解
在群体中选择适应度值最大的个体,然后对最优个体进行转化,就可得到优化问题的最优解和目标函数值。
对于约束优化问题,可先将约束优化问题转化为无约束优化问题,然后利用遗传算法来求解。
三、个体适应度值比例变换法
在遗传算法中,有必要对个体的适应度值进行适当的调整。
在对个体的适应度值进行调整的时候应该遵循不可以使得适应度值相差太大,又要使得个体之间保持一定的极差这一原则。
通过对群体中各个个体的适应度值进行调整,可一直保持个体之间的竞争性。
常用的对个体适应度值进行比例变换的方法有线性比例变换法、幂比例变换法、指数比例变换法等几种.
1、线性比例变换法
假设个体的适应度函数为f,经过线性比例变换之后个体的适应度函数为f,则适应度线性比例饿变换关系是为:
f?
af?
b式中,系数a和b的选取应满足以下条件。
(1)线性比例变换后个体的平均适应度值等于原来个体的平均适应度。
(2)线性比例变换后个体的最大适应度值应该是原来个体平均适应度值的一定的倍数,既满足以下关系式:
fmax?
favg式中:
fmax—线性比例变换后个体的最大适应度值;
favg—原个体平均适应度值;
篇二:
遗传算法读书报告
遗传算法介绍
遗传算法(geneticalgorithm,简称ga)是模拟达尔文生物进化论的自然选择和遗传学理论的一种生物进化过程计算模型,是一种将繁殖、杂交、变异、竞争和选择等概念引入算法中通过模拟自然进化过程搜索最优解的方法。
上世纪50年代60年代初,生物学家fraser试图通过计算的方法来模拟生物的“遗传与选择”进化过程,美国michigan大学j.holland教授受此启发于1975年首先提出了遗传算法,并出版了颇有影响的专著《adaptationinnaturalandartificialsystems》,ga这个名称才逐渐为人所知,j.holland教授所提出的ga通常为简单遗传算法(simplegeneticalgorithms,sga)。
遗传算法的基本概念
1.个体与种群
个体就是为模拟生物个体而对问题中的对象(一般就是问题的解)的一种称呼,一个个体也就是搜索空间中的一个点。
种群(population)就是模拟生物种时由群若干个体组成的群体,它一般是整个搜索空间的一个很小的子集。
2.适应度与适应度函数
适应度(fitness)就是借鉴生物个体对环境的适应程度,而对问题中的个体对象所设计的表征其优劣的一种测度。
适应度函数(fitnessfunction)就是问题中的全体个体与其适应度之间的一个对应关系。
它一般是一个实值函数。
该函数就是遗传算法中指导搜索的评价函数。
3.染色体与基因
染色体(chromosome)就是问题中个体的某种字符串形式的编码表示。
字符串中的字符也就称为基因(gene)。
4.遗传操作
也称遗传算子(geneticoperator),就是关于染色体的运算。
遗传算法中有三种遗传操作:
选择、交叉、变异。
遗传算法的基本思想
借助生物优胜劣汰的进化理论,遗传算法的实现为一种计算机模拟。
在求解最优化问题时,通过维持一组可行解,并通过对可行解的重新组合,改进可行解在多维空间内的移动轨迹或趋向,最终走向最优解。
在遗传算法中将可能的解称为个体,由于它不能直接处理问题空间的参数,必须先进行转换操作——编码,把每一个可能的解在遗传空间编码为一个向量,转换为一个染色体。
传统上,解用二进制表示(即0和1的串),但也可以用其他表示方法。
向量的每一个元素就是基因,所有个体组成群体。
算法开始时先随机地产生一些染色体,按预定的目标函数对每个染色体进行评价,计算其适应度,根据适应度对各染色体进行选择、交换、变异等遗传操作,剔除适应度低的染色体,留下适应度高的染色体进行交配。
在以后的每一代中都按预定的目标函数对每个染色体进行评价,根据其结果给出一个适应度的值。
由于新群体的成员是上一代群体的优秀者,因而在总体上优于上一代。
遗传算法就这样反复迭代,每个个体被评价,计算出适应度,选取较优的个体,利用遗传算子对这些个体进行组合,再产生下一代。
直至满足某种预定的优化指标则算法终止。
终止条件一般有如下几种:
迭代次数限制;
个体达到最优值的条件,即最优值已经得到。
适应度已经达到饱和,继续迭代个体适应度和群体适应度不再上升;
人为干预;
计算机配置、计算时间等资源的限制;
以上两种或更多种情况的组合。
简单遗传算法的构成
基本遗传算法(sga)又称为基本遗传算法或标准遗传算法。
该算法只使用选择算子、交叉算子和变异算子这三种基本遗传算子。
其进化操作过程简单,容易理解,是其他遗传算法形成的基础。
它主要由染色体编码、个体适应度评价、遗传算子以及遗传参数构成。
1、染色体编码
遗传算法(ga)通过某种编码机制把对象抽象为由一些特定符号或字符按一定顺序排成串。
基本遗传算法使用固定长度的二进制符号串来表示群体中的个体,其等位基因是由二进制符号集{0,1}所组成。
初始种群中各个个体的基因值是用均匀分布的随机数来生成。
例如:
x=001011011001110010,就可表示一个个体,该个体的染色体长度是n=18。
2、适应度函数
在遗传算法中为了评价一个解的好坏用适应度函数值来评价,适应度函数值越大,解的质量越好。
基本遗传算法是按与个体适应度成正比的概率来决定当前群体中每个个体遗传到下一代群体机会大小的。
为正确计算这个概率,必须要求所有个体的适应度必须为正或零。
所以根据不同种类的问题,必须预先确定好由目标函数到个体适应度之间的转换规则,特别是要预先确定好当目标函数值为负数时的处理方法。
3、遗传算子
简单遗传算法使用下述三种遗传算子:
(1)选择算子
遗传算法使用选择运算按照某种策略对个体进行优胜劣汰的操作。
从父代中挑选适应度高的个体被遗传到下一代,这样可以避免基因缺失,可提高全局收敛性和计算效率。
基本遗传算法中选择算子采用轮盘赌选择方法。
(2)交叉算子
随机地从中间群体中抽取两个个体,并按照某种交叉策略使两个个体相互交换部分染色体码串,从而形成更好的两个新的个体。
最常用的交叉算子为单点交叉,在个体串中随即设定一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两个新个体,例如:
新个体c:
001100101001
交叉点
新个体d:
110001101001
(3)变异算子
变异算子是按照一定的概率改变群体中的染色体上某些基因值,根据个体编码表示方法的不同,变异算子有实值变异和二进制变异。
这样不仅可以使遗传算法具有局部的随机搜索能力,还可以保持物种多样性。
4、基本遗传算法的运行参数
m:
种群规模,即群体中所含个体的数量;
t:
遗传运算的终止迭代次数;
pc:
交叉概率;
pm:
变异概率。
遗传算法应用的步骤
应用前的准备工作:
第一步:
确定决策变量及其各种约束条件,即确定出个体的表现型x和问题的解空间。
第二步:
建立优化模型,即确定出目标函数的类型(是求目标函数最大值还是求目标函数的最小值)及其数学描述形式或量化方法。
第三步:
确定表示可行解的染色体编码方法,也即确定出个体的基因型x及遗传算法的搜索空间。
第四步:
确定解码方法,即确定出由个体基因型x到个体表现型x的对应关系或转换方法。
第五步:
确定个体适应度的量化评价方法,即确定出由目标函数值到个体适应度的转换规则。
第六步:
设计遗传算子,即确定出选择运算、交叉运算、变异运算等遗传算子的具体操作方法。
第七步:
确定遗传算法的有关运行参数,即确定出遗传算法的种群规模m、代次数t、交叉概率pc、变异概率pm等参数。
第八步:
上机编程。
运行过程:
随机生成m个个体作为初始种群pop
(1),t:
=0.
对群体pop(t)中的每一个染色体popi(t)计算它的适应函数
fi=fitness(popi)
从群体体pop(t)中用选择算子选择出n/2对母体(n≥m);
对所选择的n/2对母体按概率pc执行交叉运算形成n个中间个体;
对所形成的n个中间个体分别按变异概率pm,形成n个候选个体;
从形成的n个候选个体依据适应度选择出m个个体组成新一代种群pop(t+1)。
如果已经满足终止条件,则输出pop(t+1)中具有最大适应度的个体作为最优解,终止计算;
否则t:
=t+1再转入第三步。
运行流程图:
篇三:
遗传算法报告
传统优化算法可以解决一些比较简单的问题,但对于一些非线性的复杂问题,往往优化时间很长,并且经常不能得到最优解,甚至无法知道所得解同最优解的近似程度,而一些现代优化算法就能很好地解决这些问题。
20世纪60年代学者开始对遗传进化感兴趣,进而形成了遗传算法。
遗传算法(ga)是由美国michigan大学的holland教授于1975年首先提出的。
它源于达尔文的进化论、孟德尔的群体遗传学说和魏茨曼的物种选择学说;
其基本思想是模拟自然界遗传机制和生物进化论而形成的一种过程搜索最优解的算法。
从公开发表的论文看,我国首先开始研究应用遗传算法的有赵改善和华中理工大学的师汉民等人。
遗传算法最早应用于一维地震波形反演中,其特点是处理的对象是参数的编码集而不是问题参数本身,搜索过程既不受优化函数联系性的约束,也不要求优化函数可导,具有较好的全局搜索能力;
算法的基本思想简单,运行方式和实现步骤规范,具有全局并行搜索、简单通用、鲁棒性强等优点,但其局部搜索能力差,容易出现早熟现象。
遗传算法是模拟生物在自然环境中优胜劣汰、适者生存的遗传和进化过程而形成的一种具有自适应能力的、全局性的概率搜索算法。
它是从代表问题可能潜在解集的一个种群开始,首先将表现型映射到基因型即编码,从而将解空间映射到编码空间,每个编码对应问题的一个解,称为染色体或个体。
初始种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解。
在每一代,根据问题域中个体的适应度大小选择个体,并借助自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。
这个过程使种群像自然进化一样,后代种群比前代更加适应于环境,末代种群中的最优个体经过解码可以作为问题近似最优解。
利用遗传算法求解问题的流程如下。
a)建立数学模型。
b)编码,即用设计好的算法将表现型映射到个体基因型。
c)解码,遗传算子只对编码后的染色体起作用,由个体表现型计算目标函数值后就可以判断染色体的优劣。
d)确定适应度转换规则,染色体所对应的解空间的值可能相差很大,需要一定的转换使其适合定量评估个体的优劣。
e)设计遗传算子,即设计交叉、变异和选择算子等。
遗传算子与待优化问题、染色体的编码方案有很大的关系。
f)确定运行参数,运行参数包括交叉概率、变异概率和种群数目等。
遗传算法本身的参数还缺乏定量的标准,目前采用的多是经验数值,并且遗传参数的选取与编码和遗传算子的设计有很大关系。
目前在遗传算法的应用中,最突出的问题是局部搜索能力差和容易出现早熟现象。
近年来,众多学者围绕这两个核心问题发表了大量有价值的学术论文,从各
方面对遗传算法进行了改进。
在遗传算子方面,pan等人提出自适应变异算子,使得变异能够根据解的质量自适应地调整搜索区域,较明显地提高了搜索能力。
louis等人根据个体之间的海明距离进行非均匀的交叉和变异,在保持群体多样性的同时还防止了早熟。
夏虎等人提出了一种考虑环境作用的协同免疫遗传算法,在该算法中,设计了克隆环境演化算子和自适应探索算子,并构造了三个子种群协同进化来发挥克隆环境演化算子的作用,从而提高了算法的全局搜索能力。
蔡良伟等人提出一种改进的交叉操作,根据种群的多样性和个体的相关性选择不同的交叉策略以减少无效的交叉操作,从而提高了交叉操作的效率并改善了算法的收敛性能。
江雷等人提出的基于并行遗传算法求解tsp,对遗传算法的杂交算子进行改进,探讨了使用弹性策略来维持群体的多样性,使得算法跨过局部收敛的障碍,向全局最优解方向进化。
whitley等人提出了自适应和有指导的变异,这种方法对改进遗传算法的性能起了一定的作用。
一些学者提出了基于多种群的遗传算法,将一个大的种群分成多个小的种群,每个小种群独立地进行进化,进化一定代数后进行种群间的通信。
由于这种方式可以采用并行计算的模式,取得了较好的效果。
贺新等人介绍了一种基于新的变异算子多种群的新遗传算法,该算法引入一种基于主群、附属子群的结构,可避免传统遗传算法难以克服的早熟收敛问题。
叶在福等人引入多种群,对不同种群赋予不同的控制参数,实现不同的搜索目的,通过移民算子联系各种群,通过人工选择算子保存各种群每个进化代中的最优个体,对遗传算法的早熟现象有了很大的改进。
朱灿等人提出了一种考虑性别特征的遗传算法,该方法模拟生物系统多物种同时进化,指出最优种子的获得不但需要一个好的个体(父体),而且需要一个好的进化方向(母体),通过增加母体的方法加速最优物种的进化,从而提高了算法的效率。
遗传算法的控制参数主要有种群数目npop、交叉概率pc和变异概率pm,不同的参数组合对遗传算法的运行性能影响很大。
dejong首先系统地研究了不同的参数组合对遗传算法的性能影响,他对五个函数进行测试后,提出了一组参数选择范围:
npop=50,pc=0.6,pm=0.001,这一组参数值后来被作为标准参数广泛使用。
丁承明等人提出了利用正交试验法去优化选取控制参数,这种方法利用正交试验的均衡分散性,使得通过较少的试验次数就能搜索大部分参数组合空间,而且还可以确定哪个参数对结果影响最显著,然后有针对性地进行精确的搜索,从而使得参数问题得到圆满解决。
李康顺等人提出的改进遗传算法能够根据个体适应度大小和群体的分散程度自动调整遗传控制参数,从而能够在保持群体多样性的同时加快收敛速度,克服了传统遗传算法的收敛性差、易早熟等问题。
还有许多学者从其他方面对遗传算法进行了改进,如设计交互式遗传算法、引入量子理论等。
这些改进都在某种程度上提高了遗传算法的性能,然而这些改进都具有一定的局限性。
因此,提高遗传算法的收敛速度、克服早熟现象将是一个永恒的目标。
由于遗传算法具有全局并行搜索、简单通用、鲁棒性强等优点,使得遗传算法广泛地应用于各个领域。
在计算机科学与人工智能方面遗传算法在计算机科学与人工智能领域中的应用包括数据库查询优化、数据挖掘与知识获取、人工神经网络结构与参数优化、模式识别、专家系统等。
另外,遗传算法在软件测试用例自动生成方面也作出了很大的贡献。
将遗传算法用于知识获取,构成以遗传算法为核心的机器学习系统。
比较经典的是holland设计的用于序列决策学习的桶链算法(bucketbrigade)反馈机制(该系统被称为分类器系统),以及机器人规则、概念学习、模式识别等。
早期的经济学研究采用遗传算法来求解数学公式,取得了不错的效果,但离机器学习还差得很远。
例如,lettau在1997年建立的一个简单的主体模型中就使用了这种方法;
bauer对遗传算法在经济与投资中的应用进行了全面分析。
近年来,商业、金融领域已经成为遗传算法应用热点,目前已经有许多基于遗传算法的软件包应用于金融系统和股票投资分析。
遗传算法的研究归纳起来可分为理论与技术研究和应用研究两个方面。
可以说,遗传算法的应用已经渗透到了各个领域。
但目前遗传算法的算法分析和理论分析还没有跟上,还有很多富有挑战性的课题亟待完善与解决,主要有:
a)算法规模小。
虽然遗传算法模拟了生物的进化过程,但目前遗传算法的运行规模还远小于生物的进化规模。
随着计算机系统性能的不断提高,人们将有可能实现模拟更接近于自然的进化系统,从而充分利用遗传算法的并行性解决更复杂、更有价值的问题。
b)遗传算法的编码问题。
编码是遗传算法求解问题的前提,最基本的是二进制编码。
其他的编码方法有格雷码、实数编码、符号编码、多参数编码和dna编码等。
不同的应用应该采用不同的编码方式,因此基于不同的应用,遗传算法的编码还有待改进与完善。
c)遗传算法控制参数的选择问题。
遗传算法中控制参数的不同选取会对遗传算法的性能产生较大的影响,将影响到整个算法的收敛性。
这些参数包括交叉概率(pc)、变异概率(pm)和种群数目(npop)等。
d)早熟收敛和局部搜索能力差问题。
早熟收敛和局部搜索能力差是遗传算法最突出的两个问题。
有很多学者针对这两个问题发表了大量的学术文章,但从根本上解决这两个问题还有待研究发现。
e)遗传算子的无方向性问题。
基本遗传算子包括选择算子、交叉算子和变异算子。
设计性能优良的遗传算子一直是遗传算法的重要问题,如果能从遗传算子的方向性着手改进遗传算法,有可能会得到意想不到的结果。
对上述问题的深入研究必将大大促进遗传算法理论和应用的发展,遗传算法也必将在智能计算领域中展现出更加光明的前景。
篇四:
遗传算法实验报告
遗传算法实验报告