《简单遗传算法课件》由会员分享,可在线阅读,更多相关《简单遗传算法课件(70页珍藏版)》请在金锄头文库上搜索。
1、遗传算法原理与应用,一、遗传算法原理 二、遗传算法的应用,1、遗传算法起源,遗传算法是由美国的J. Holland教授于1975年在他的专著自然界和人工系统的适应性中首先提出的,它是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法 。,遗传算法的搜索机制,遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。,2、基本遗传算法,基本遗传算法(Simple Genetic Algorithms,简称SG
2、A,又称简单遗传算法或标准遗传算法),是由Goldberg总结出的一种最基本的遗传算法,其遗传进化操作过程简单,容易理解,是其它一些遗传算法的雏形和基础。,基本遗传算法的组成,(1)编码(产生初始种群) (2)适应度函数 (3)遗传算子(选择、交叉、变异) (4)运行参数,编码,GA是通过某种编码机制把对象抽象为由特定符号按一定顺序排成的串。正如研究生物遗传是从染色体着手,而染色体则是由基因排成的串。SGA使用二进制串进行编码。,函数优化示例,求下列一元函数的最大值:,x-1,2 ,求解结果精确到6位小数。,SGA对于本例的编码,由于区间长度为3,求解结果精确到6位小数,因此可将自变量定义区间
3、划分为3106等份。又因为221 3106 222 ,所以本例的二进制编码长度至少需要22位,本例的编码过程实质上是将区间-1,2内对应的实数值转化为一个二进制串(b21b20b0)。,几个术语,基因型:1000101110110101000111,表现型:0.637197,编码,解码,个体(染色体),基因,初始种群,SGA采用随机方法生成若干个个体的集合,该集合称为初始种群。初始种群中个体的数量称为种群规模。,适应度函数,遗传算法对一个个体(解)的好坏用适应度函数值来评价,适应度函数值越大,解的质量越好。适应度函数是遗传算法进化过程的驱动力,也是进行自然选择的唯一标准,它的设计应结合求解问题
4、本身的要求而定。,选择算子,遗传算法使用选择运算来实现对群体中的个体进行优胜劣汰操作:适应度高的个体被遗传到下一代群体中的概率大;适应度低的个体,被遗传到下一代群体中的概率小。选择操作的任务就是按某种方法从父代群体中选取一些个体,遗传到下一代群体。SGA中选择算子采用轮盘赌选择方法。,轮盘赌选择方法,轮盘赌选择又称比例选择算子,它的基本思想是:各个个体被选中的概率与其适应度函数值大小成正比。设群体大小为n ,个体i 的适应度为 Fi,则个体i 被选中遗传到下一代群体的概率为:,轮盘赌选择方法的实现步骤,(1) 计算群体中所有个体的适应度函数值(需要解码); (2) 利用比例选择算子的公式,计算
5、每个个体被选中遗传到下一代群体的概率; (3) 采用模拟赌盘操作(即生成0到1之间的随机数与每个个体遗传到下一代群体的概率进行匹配)来确定各个个体是否遗传到下一代群体中。,交叉算子,所谓交叉运算,是指对两个相互配对的染色体依据交叉概率 Pc 按某种方式相互交换其部分基因,从而形成两个新的个体。交叉运算是遗传算法区别于其他进化算法的重要特征,它在遗传算法中起关键作用,是产生新个体的主要方法。 SGA中交叉算子采用单点交叉算子。,单点交叉运算,交叉前: 00000|01110000000010000 11100|00000111111000101 交叉后: 00000|00000111111000
6、101 11100|01110000000010000,交叉点,变异算子,所谓变异运算,是指依据变异概率 Pm 将个体编码串中的某些基因值用其它基因值来替换,从而形成一个新的个体。遗传算法中的变异运算是产生新个体的辅助方法,它决定了遗传算法的局部搜索能力,同时保持种群的多样性。交叉运算和变异运算的相互配合,共同完成对搜索空间的全局搜索和局部搜索。 SGA中变异算子采用基本位变异算子。,基本位变异算子,基本位变异算子是指对个体编码串随机指定的某一位或某几位基因作变异运算。对于基本遗传算法中用二进制编码符号串所表示的个体,若需要进行变异操作的某一基因座上的原有基因值为0,则变异操作将其变为1;反之
7、,若原有基因值为1,则变异操作将其变为0 。,基本位变异算子的执行过程,变异前: 000001110000000010000 变异后: 000001110001000010000,变异点,运行参数,(1)M : 种群规模 (2)T : 遗传运算的终止进化代数 (3)Pc : 交叉概率 (4)Pm : 变异概率,SGA的框图,3、遗传算法的特点,(1)群体搜索,易于并行化处理; (2)不是盲目穷举,而是启发式搜索; (3)适应度函数不受连续、可微等条件的约束,适用范围很广。,%定义遗传算法参数 NIND=40; %个体数目(Number of individuals) MAXGEN=25; %最
8、大遗传代数(Maximum number of generations) PRECI=22; %变量的二进制位数(Precision of variables) GGAP=0.9; %代沟(Generation gap) trace=zeros(2, MAXGEN); %寻优结果的初始值 FieldD=20;-1;2;1;0;1;1; %区域描述器(Build field descriptor) Chrom=crtbp(NIND, PRECI); %初始种群 gen=0; %代计数器 variable=bs2rv(Chrom, FieldD); %计算初始种群的十进制转换 ObjV=varia
9、ble.*sin(10*pi*variable)+2.0; %计算目标函数值,while genMAXGEN FitnV=ranking(-ObjV); %分配适应度值(Assign fitness values) SelCh=select(sus, Chrom, FitnV, GGAP); %选择 SelCh=recombin(xovsp, SelCh, 0.7); %交叉 SelCh=mut(SelCh); %变异 variable=bs2rv(SelCh, FieldD); %子代个体的十进制转换 ObjVSel=variable.*sin(10*pi*variable)+2.0; %计
10、算子代的目标函数值 Chrom ObjV=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入子代的新种群 variable=bs2rv(Chrom, FieldD); gen=gen+1; %代计数器增加 %输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号,Y, I=max(ObjV);hold on; plot(variable(I), Y, bo); trace(1, gen)=max(ObjV); %遗传算法性能跟踪 trace(2, gen)=sum(ObjV)/length(ObjV); end variable=bs2
11、rv(Chrom, FieldD); %最优个体的十进制转换 hold on, grid; plot(variable,ObjV,b*); figure(2); plot(trace(1,:); hold on; plot(trace(2,:),-.);grid legend(解的变化,种群均值的变化),二、遗传算法原理,1、遗传算法的数学基础 2、遗传算法的收敛性分析 3、遗传算法的改进,1、遗传算法的数学基础,(1)模式定理 (2)积木块假设,模式,模式是指种群个体基因串中的相似样板,它用来描述基因串中某些特征位相同的结构。在二进制编码中,模式是基于三个字符集(0,1,*)的字符串,符号*
12、代表任意字符,即 0 或者 1。 模式示例:10*1,两个定义,定义1:模式 H 中确定位置的个数称为模式 H 的阶,记作O(H)。例如O(10*1)=3 。 定义2:模式 H 中第一个确定位置和最后一个确定位置之间的距离称为模式 H 的定义距,记作(H)。例如(10*1)=4 。,模式的阶和定义距的含义,模式阶用来反映不同模式间确定性的差异,模式阶数越高,模式的确定性就越高,所匹配的样本数就越少。在遗传操作中,即使阶数相同的模式,也会有不同的性质,而模式的定义距就反映了这种性质的差异。,模式定理,模式定理:具有低阶、短定义距以及平均适应度高于种群平均适应度的模式在子代中呈指数增长。 模式定理
13、保证了较优的模式(遗传算法的较优解)的数目呈指数增长,为解释遗传算法机理提供了数学基础。,从模式定理可看出,有高平均适应度、短定义距、低阶的模式,在连续的后代里获得至少以指数增长的串数目,这主要是因为选择使最好的模式有更多的复制,交叉算子不容易破坏高频率出现的、短定义长的模式,而一般突变概率又相当小,因而它对这些重要的模式几乎没有影响。,积木块假设,积木块假设:遗传算法通过短定义距、低阶以及高平均适应度的模式(积木块),在遗传操作下相互结合,最终接近全局最优解。 模式定理保证了较优模式的样本数呈指数增长,从而使遗传算法找到全局最优解的可能性存在;而积木块假设则指出了在遗传算子的作用下,能生成全
14、局最优解。,2、遗传算法的收敛性分析,遗传算法要实现全局收敛,首先要求任意初始种群经有限步都能到达全局最优解,其次算法必须由保优操作来防止最优解的遗失。与算法收敛性有关的因素主要包括种群规模、选择操作、交叉概率和变异概率。,种群规模对收敛性的影响,通常,种群太小则不能提供足够的采样点,以致算法性能很差;种群太大,尽管可以增加优化信息,阻止早熟收敛的发生,但无疑会增加计算量,造成收敛时间太长,表现为收敛速度缓慢。,选择操作对收敛性的影响,选择操作使高适应度个体能够以更大的概率生存,从而提高了遗传算法的全局收敛性。如果在算法中采用最优保存策略,即将父代群体中最佳个体保留下来,不参加交叉和变异操作,
15、使之直接进入下一代,最终可使遗传算法以概率1收敛于全局最优解。,交叉概率对收敛性的影响,交叉操作用于个体对,产生新的个体,实质上是在解空间中进行有效搜索。交叉概率太大时,种群中个体更新很快,会造成高适应度值的个体很快被破坏掉;概率太小时,交叉操作很少进行,从而会使搜索停滞不前,造成算法的不收敛。,变异概率对收敛性的影响,变异操作是对种群模式的扰动,有利于增加种群的多样性 。但是,变异概率太小则很难产生新模式,变异概率太大则会使遗传算法成为随机搜索算法。,遗传算法的本质,遗传算法本质上是对染色体模式所进行的一系列运算,即通过选择算子将当前种群中的优良模式遗传到下一代种群中,利用交叉算子进行模式重
16、组,利用变异算子进行模式突变。通过这些遗传操作,模式逐步向较好的方向进化,最终得到问题的最优解。,3、遗传算法的改进,遗传欺骗问题:在遗传算法进化过程中,有时会产生一些超常的个体,这些个体因竞争力太突出而控制了选择运算过程,从而影响算法的全局优化性能,导致算法获得某个局部最优解。,遗传算法的改进途径,(1)对编码方式的改进 (2)对遗传算子 的改进 (3)对控制参数的改进 (4)对执行策略的改进,对编码方式的改进,二进制编码优点在于编码、解码操作简单,交叉、变异等操作便于实现,缺点在于精度要求较高时,个体编码串较长,使算法的搜索空间急剧扩大,遗传算法的性能降低。格雷编码克服了二进制编码的不连续问题 ,浮点数编码改善了遗传算法的计算复杂性 。