遗传算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章
遗传算法及其MATLAB实现
2014年7月
一、遗传算法概述
• 智能优化算法概述 • 遗传算法起源 • 遗传算法生物学基础
智能优化算法概述
智能优化算法又称为现代启发式算法, 是一种具有全局优化性能、通用性强、且 适合于并行处理的算法。这种算法一般具 有严密的理论依据,而不是单纯凭借专家 经验,理论上可以在一定的时间内找到最 优解或近似最优解。
2)参数设计原则 • 种群的规模
当群体规模太小时,会出现近亲交配,产生病态基因, 且会造成有效等位基因先天缺乏,同时遗传算子存在随机 误差,妨碍小群体中有效模式的正确传播,使得种群进化 不能按照模式定理产生所预测的期望数量;种群规模太大, 结果难以收敛且浪费资源,稳健性下降。种群规模的一个 建议值为0-100。
7、复制
复制运算是根据个体适应度大小决定其下代遗 传的可能性。若设种群个体总数为N,个体i的适 应度为fi,则个体i被选取的几率
P i fi
k 1
N
fk
当个体复制的几率决定后,再产生[0,1]区间的 均匀随机数来决定哪些个体参加复制。倘若个体 适应度高,则被选取的几率Pi就大,则可能被多 次选中,它的遗传基因就会在种群中扩散;若个 体的复制几率小,则会被逐渐淘汰。
420 410 400 390 380 370 360 350 340 330 最大适应度 平均适应度
最 大 /平 均 适 应 度
1
2
3
4
5
6 7 进化代数
8
9
10
11
12
四、遗传算法的应用
• 1、遗传算法的应用领域 • 2、遗传算法的应用示例
1、遗传算法的应用领域
(1)组合优化 (3)自动控制 (5)图像处理 (7)人工生命 (2)函数优化 (4)生产调度 (6)机器学习 (8)数据挖掘
来自百度文库
• • • • • • • • • • • • • • • • • • • • • • •
BitLength=ceil(log2((boundsend-boundsbegin)' ./ precision)); popsize=50; %初始种群大小 Generationnmax=12; %最大代数 pcrossover=0.90; %交配概率 pmutation=0.09; %变异概率 %产生初始种群 population=round(rand(popsize,BitLength)); %计算适应度,返回适应度Fitvalue和累积概率cumsump [Fitvalue,cumsump]=fitnessfun(population); Generation=1; while Generation<Generationnmax+1 for j=1:2:popsize %选择操作 seln=selection(population,cumsump); %交叉操作 scro=crossover(population,seln,pcrossover); scnew(j,:)=scro(1,:); scnew(j+1,:)=scro(2,:); %变异操作 smnew(j,:)=mutation(scnew(j,:),pmutation); smnew(j+1,:)=mutation(scnew(j+1,:),pmutation); end population=smnew; %产生了新的种群
2、程序案例
案例一:无约束目标函数最大值遗传算法求解策略 maxf(x)=200e-0.05xsin(x), -2<=x<=2
利用MATLAB进行求解,程序如下: %主程序:用遗传算法求解y=200*exp(-0.05*x).*sin(x)在[-2 2]区间上的最大值 clc; clear all; close all; global BitLength global boundsbegin global boundsend bounds=[-2 2];%一维自变量的取值范围 precision=0.0001; %运算精度 boundsbegin=bounds(:,1); boundsend=bounds(:,2); %计算如果满足求解精度至少需要多长的染色体
6、个体适应度评估
自然界中能够适应环境的生物有更多的机会生存下来, 这种筛选机制类似图所示现象:在正六边形搭建的三角形 区域的顶部投掷一些光滑的木块,这些木块经由白色的边 隙坠落底部,显然落在底部中间的木块要比落在两端的木 块多,因为木块有更多的路径坠落在底部的中央区域,所 以有更大的几率落在中间。落在各个区域的几率对应遗传 算法中各条染色体被遗传到下一代几率,其坠落的位置对 应自变量取值。遗传算法依照与个体适应度成正比的几率 决定当前种群中各个个体遗传到下一代中的机会。个体适 应度大的个体更容易被遗传到下一代。通常,求木变函数 最大值的问题可以直接把目标函数作为检测个体适应度大 小的函数。
变异概率
当变异概率太大时,种群的数量的多样性下降太快,容 易导致有效基因的迅速丢失且不容易修补;当变异概率太 大时,尽管种群的多样性可以得到保证,但是高阶模式被 破坏的概率也随之增大。变异概率一般取0.0001-0.2。
交配概率
交配是生成新种群最重要的手段。与变异概率类似,交 配概率太大容易破坏已有的有利模式,随机性增大,容易 错失最优个体;交配概率太小不能有效更新种群。交配概 率一般取0.4-0.99。
• • • • • • • •
• • • • • • • • • • • • • • • •
[Fitvalue,cumsump]=fitnessfun(population); %记录当前代最好的适应度和平均适应度 [fmax,nmax]=max(Fitvalue); fmean=mean(Fitvalue); ymax(Generation)=fmax; ymean(Generation)=fmean;%记录当前代的最佳染色体个体 x=transform2to10(population(nmax,:)); xx=boundsbegin+x*(boundsendboundsbegin)/(power((boundsend),BitLength)-1); xmax(Generation)=xx; Generation=Generation+1 end Generation=Generation-1; Bestpopulation=xx Besttargetfunvalue=targetfun(xx) figure(1); hand1=plot(1:Generation,ymax); set(hand1,'linestyle','-','linewidth',1.8,'marker','*','markersize',6) hold on; hand2=plot(1:Generation,ymean); set(hand2,'color','r','linestyle','-','linewidth',1.8,... 'marker','h','markersize',6) xlabel('进化代数');ylabel('最大/平均适应度');xlim([1 Generationnmax]); legend('最大适应度','平均适应度'); box off;hold off;
3)适应度函数的调整
• 在遗传算法运行的初期阶段
群里中可能会有少数几个个体的适应度相对其他个体来 说非常高。当群体规模较小时,新的群体由这样的少数几 个个体组成,容易导致遗传算法发生早熟现象,使遗传算 法所求的解停留在某一局部最优点上。因此希望在遗传算 法运行的初期阶段,算法能够对一些适应度较高的个体进 行控制,降低其适应度与其他个体适应度之间的差异程度, 从而限制其复制数量,以维护群体的多样性。
• 进化代数
进化代数太小,算法不容易收敛,种群还没有成熟;代 数太大,算法已经熟练或者种群过于早熟不可能再收敛, 继续进化没有意义,只会增加开支和浪费资源。进化代数 一般取100-500。
• 种群初始化
初始种群的生成时随机的。在初始种群的赋予之前,尽 量进行一个大概的区间估计,以免初始种群分布在远离全 局最优解的编码空间,导致遗传算法的搜索范围受到限制, 同时也为算法减轻负担。
遗传算法应用于组合优化
随着问题规模的增大,组合优化问题的 搜索空间也急剧扩大,有时在计算机上用 枚举法很难甚至不可能求出其最优解。实 践证明,遗传算法已经在求解旅行商问题、 背包问题、装箱问题、布局优化、网络路 由等具有NP难度的组合优化问题上取得了 成功的应用。
2、解码
解码目的是为了将不直观的二进制数据 串还原成十进制。设某一个体的二进制编 码为bkbk-1bk-2…b3b2b1,则对应的解码公式为
k U L x L ( b 2i 1) i 2k 1 i 1
遗传算法的编码在宏观上可以对应生物的 基因型和表现型,在微观上可以对应DNA 的转录和翻译两个过程。
5、倒位
对于复杂的问题可能需要用到“倒位”,其对应的运算 被称为“倒位运算”。倒位是指一个染色体某区段正常排 序发生180°的颠倒,造成染色体的DNA序列重新排列。 倒位纯合体不影响个体的生活力,倒位杂合体则生育力降 低。染色体上的区段可能一次又一次发生倒位,且通过自 交出现的倒位纯合体,致使它们与其原来的物种不能交配, 形成生殖隔离,结果产生新族群或变种。 倒位运算是与倒位概念相似的运算规则,例如,染色体 S’就是S经过倒位运算以后得到的染色体编码,其中倒 位的部分即S中标记下划线的部分。 S=1001011011101110011010101001 S’=1001011001011001110111101001
二、遗传算法的实现步骤
产生初始群体
输出结果并结束 是否满足停止准则
计算个体适应度值
比例选择运算 单点交叉运算 基本位变异运算 产生新一代群体
基本遗传算法的组成
1、 2、 3、 4、 5、 6、 7、 编码 解码 交配 突变 倒位 个体适应度评估 复制
1、编码
GA是通过某种编码机制把对象抽象为由 特定符号按一定顺序排成的串。正如研究 生物遗传是从染色体着手,而染色体则是 由基因排成的串。SGA使用二进制串进行 编码。
• 在遗传算法运行的后期阶段
群体中所有个体平均适应度可能会接近群体中最佳个 体的适应度。也就是说个体之间无竞争力,都会以相近的 概率被遗传到下一代,只是一种随机的选择过程。因此, 在后期,算法应能够对个体的适应度进行适当的放大,扩 大最佳个体适应度与其他个体适应度之间的差异程度,以 提高个体之间的竞争性。
三、程序案例
1、程序设计流程及参数选取 2、应用案例
1、程序设计流程及参数选取
1)程序设计伪代码 遗传算法的原理,伪代码如下: BEGIN t=0; 初始化p(t); 计算p(t)的适应值; while(不满足停止准则) do begin t=t+1 从P(t-1)中选择P(t) //选择过程 重组p(t) //交叉和变异 计算p(t)的适应值 end END
遗传算法起源
遗传算法是由美国的J. Holland教授于
1975年在他的专著《自然界和人工系统的
适应性》中首先提出的,它是一类借鉴生
物界自然选择和自然遗传机制的随机化搜
索算法 。
遗传算法生物学基础
新物种形成的途径和方式有两种:渐变式和爆 发式。渐变式主要通过变异的逐渐积累而形成亚 种,再由亚种形成一个或多个新种,新种又分为 两种类型,即继承式心中形成和分化式新种形成; 爆发式不通过亚种这一阶段而迅速形成新的物种, 其分为三种类型,即杂交产生新种,染色体结构 变化形成新种和多倍体化的新种形式。遗传算法 杂交了渐变式和爆发式的两种思想。
3、交配
“交配运算”是使用单点或多点进行交叉 的算子。首先用随机数产生一个或多个交 配点位置互换部分基因码,形成两个子个 体。如
01001011 01000101 10010101 10011011
图1 染色体基因交配范例
4、突变
“突变运算”是使用基本位进行基因突 变。为了避免在算法迭代后期出现种群过 早收敛,对于二进制的基因码组成的个体 种群,实行基因码的小概率翻转对于二进 制编码即0变为1,而1变为0。
遗传算法及其MATLAB实现
2014年7月
一、遗传算法概述
• 智能优化算法概述 • 遗传算法起源 • 遗传算法生物学基础
智能优化算法概述
智能优化算法又称为现代启发式算法, 是一种具有全局优化性能、通用性强、且 适合于并行处理的算法。这种算法一般具 有严密的理论依据,而不是单纯凭借专家 经验,理论上可以在一定的时间内找到最 优解或近似最优解。
2)参数设计原则 • 种群的规模
当群体规模太小时,会出现近亲交配,产生病态基因, 且会造成有效等位基因先天缺乏,同时遗传算子存在随机 误差,妨碍小群体中有效模式的正确传播,使得种群进化 不能按照模式定理产生所预测的期望数量;种群规模太大, 结果难以收敛且浪费资源,稳健性下降。种群规模的一个 建议值为0-100。
7、复制
复制运算是根据个体适应度大小决定其下代遗 传的可能性。若设种群个体总数为N,个体i的适 应度为fi,则个体i被选取的几率
P i fi
k 1
N
fk
当个体复制的几率决定后,再产生[0,1]区间的 均匀随机数来决定哪些个体参加复制。倘若个体 适应度高,则被选取的几率Pi就大,则可能被多 次选中,它的遗传基因就会在种群中扩散;若个 体的复制几率小,则会被逐渐淘汰。
420 410 400 390 380 370 360 350 340 330 最大适应度 平均适应度
最 大 /平 均 适 应 度
1
2
3
4
5
6 7 进化代数
8
9
10
11
12
四、遗传算法的应用
• 1、遗传算法的应用领域 • 2、遗传算法的应用示例
1、遗传算法的应用领域
(1)组合优化 (3)自动控制 (5)图像处理 (7)人工生命 (2)函数优化 (4)生产调度 (6)机器学习 (8)数据挖掘
来自百度文库
• • • • • • • • • • • • • • • • • • • • • • •
BitLength=ceil(log2((boundsend-boundsbegin)' ./ precision)); popsize=50; %初始种群大小 Generationnmax=12; %最大代数 pcrossover=0.90; %交配概率 pmutation=0.09; %变异概率 %产生初始种群 population=round(rand(popsize,BitLength)); %计算适应度,返回适应度Fitvalue和累积概率cumsump [Fitvalue,cumsump]=fitnessfun(population); Generation=1; while Generation<Generationnmax+1 for j=1:2:popsize %选择操作 seln=selection(population,cumsump); %交叉操作 scro=crossover(population,seln,pcrossover); scnew(j,:)=scro(1,:); scnew(j+1,:)=scro(2,:); %变异操作 smnew(j,:)=mutation(scnew(j,:),pmutation); smnew(j+1,:)=mutation(scnew(j+1,:),pmutation); end population=smnew; %产生了新的种群
2、程序案例
案例一:无约束目标函数最大值遗传算法求解策略 maxf(x)=200e-0.05xsin(x), -2<=x<=2
利用MATLAB进行求解,程序如下: %主程序:用遗传算法求解y=200*exp(-0.05*x).*sin(x)在[-2 2]区间上的最大值 clc; clear all; close all; global BitLength global boundsbegin global boundsend bounds=[-2 2];%一维自变量的取值范围 precision=0.0001; %运算精度 boundsbegin=bounds(:,1); boundsend=bounds(:,2); %计算如果满足求解精度至少需要多长的染色体
6、个体适应度评估
自然界中能够适应环境的生物有更多的机会生存下来, 这种筛选机制类似图所示现象:在正六边形搭建的三角形 区域的顶部投掷一些光滑的木块,这些木块经由白色的边 隙坠落底部,显然落在底部中间的木块要比落在两端的木 块多,因为木块有更多的路径坠落在底部的中央区域,所 以有更大的几率落在中间。落在各个区域的几率对应遗传 算法中各条染色体被遗传到下一代几率,其坠落的位置对 应自变量取值。遗传算法依照与个体适应度成正比的几率 决定当前种群中各个个体遗传到下一代中的机会。个体适 应度大的个体更容易被遗传到下一代。通常,求木变函数 最大值的问题可以直接把目标函数作为检测个体适应度大 小的函数。
变异概率
当变异概率太大时,种群的数量的多样性下降太快,容 易导致有效基因的迅速丢失且不容易修补;当变异概率太 大时,尽管种群的多样性可以得到保证,但是高阶模式被 破坏的概率也随之增大。变异概率一般取0.0001-0.2。
交配概率
交配是生成新种群最重要的手段。与变异概率类似,交 配概率太大容易破坏已有的有利模式,随机性增大,容易 错失最优个体;交配概率太小不能有效更新种群。交配概 率一般取0.4-0.99。
• • • • • • • •
• • • • • • • • • • • • • • • •
[Fitvalue,cumsump]=fitnessfun(population); %记录当前代最好的适应度和平均适应度 [fmax,nmax]=max(Fitvalue); fmean=mean(Fitvalue); ymax(Generation)=fmax; ymean(Generation)=fmean;%记录当前代的最佳染色体个体 x=transform2to10(population(nmax,:)); xx=boundsbegin+x*(boundsendboundsbegin)/(power((boundsend),BitLength)-1); xmax(Generation)=xx; Generation=Generation+1 end Generation=Generation-1; Bestpopulation=xx Besttargetfunvalue=targetfun(xx) figure(1); hand1=plot(1:Generation,ymax); set(hand1,'linestyle','-','linewidth',1.8,'marker','*','markersize',6) hold on; hand2=plot(1:Generation,ymean); set(hand2,'color','r','linestyle','-','linewidth',1.8,... 'marker','h','markersize',6) xlabel('进化代数');ylabel('最大/平均适应度');xlim([1 Generationnmax]); legend('最大适应度','平均适应度'); box off;hold off;
3)适应度函数的调整
• 在遗传算法运行的初期阶段
群里中可能会有少数几个个体的适应度相对其他个体来 说非常高。当群体规模较小时,新的群体由这样的少数几 个个体组成,容易导致遗传算法发生早熟现象,使遗传算 法所求的解停留在某一局部最优点上。因此希望在遗传算 法运行的初期阶段,算法能够对一些适应度较高的个体进 行控制,降低其适应度与其他个体适应度之间的差异程度, 从而限制其复制数量,以维护群体的多样性。
• 进化代数
进化代数太小,算法不容易收敛,种群还没有成熟;代 数太大,算法已经熟练或者种群过于早熟不可能再收敛, 继续进化没有意义,只会增加开支和浪费资源。进化代数 一般取100-500。
• 种群初始化
初始种群的生成时随机的。在初始种群的赋予之前,尽 量进行一个大概的区间估计,以免初始种群分布在远离全 局最优解的编码空间,导致遗传算法的搜索范围受到限制, 同时也为算法减轻负担。
遗传算法应用于组合优化
随着问题规模的增大,组合优化问题的 搜索空间也急剧扩大,有时在计算机上用 枚举法很难甚至不可能求出其最优解。实 践证明,遗传算法已经在求解旅行商问题、 背包问题、装箱问题、布局优化、网络路 由等具有NP难度的组合优化问题上取得了 成功的应用。
2、解码
解码目的是为了将不直观的二进制数据 串还原成十进制。设某一个体的二进制编 码为bkbk-1bk-2…b3b2b1,则对应的解码公式为
k U L x L ( b 2i 1) i 2k 1 i 1
遗传算法的编码在宏观上可以对应生物的 基因型和表现型,在微观上可以对应DNA 的转录和翻译两个过程。
5、倒位
对于复杂的问题可能需要用到“倒位”,其对应的运算 被称为“倒位运算”。倒位是指一个染色体某区段正常排 序发生180°的颠倒,造成染色体的DNA序列重新排列。 倒位纯合体不影响个体的生活力,倒位杂合体则生育力降 低。染色体上的区段可能一次又一次发生倒位,且通过自 交出现的倒位纯合体,致使它们与其原来的物种不能交配, 形成生殖隔离,结果产生新族群或变种。 倒位运算是与倒位概念相似的运算规则,例如,染色体 S’就是S经过倒位运算以后得到的染色体编码,其中倒 位的部分即S中标记下划线的部分。 S=1001011011101110011010101001 S’=1001011001011001110111101001
二、遗传算法的实现步骤
产生初始群体
输出结果并结束 是否满足停止准则
计算个体适应度值
比例选择运算 单点交叉运算 基本位变异运算 产生新一代群体
基本遗传算法的组成
1、 2、 3、 4、 5、 6、 7、 编码 解码 交配 突变 倒位 个体适应度评估 复制
1、编码
GA是通过某种编码机制把对象抽象为由 特定符号按一定顺序排成的串。正如研究 生物遗传是从染色体着手,而染色体则是 由基因排成的串。SGA使用二进制串进行 编码。
• 在遗传算法运行的后期阶段
群体中所有个体平均适应度可能会接近群体中最佳个 体的适应度。也就是说个体之间无竞争力,都会以相近的 概率被遗传到下一代,只是一种随机的选择过程。因此, 在后期,算法应能够对个体的适应度进行适当的放大,扩 大最佳个体适应度与其他个体适应度之间的差异程度,以 提高个体之间的竞争性。
三、程序案例
1、程序设计流程及参数选取 2、应用案例
1、程序设计流程及参数选取
1)程序设计伪代码 遗传算法的原理,伪代码如下: BEGIN t=0; 初始化p(t); 计算p(t)的适应值; while(不满足停止准则) do begin t=t+1 从P(t-1)中选择P(t) //选择过程 重组p(t) //交叉和变异 计算p(t)的适应值 end END
遗传算法起源
遗传算法是由美国的J. Holland教授于
1975年在他的专著《自然界和人工系统的
适应性》中首先提出的,它是一类借鉴生
物界自然选择和自然遗传机制的随机化搜
索算法 。
遗传算法生物学基础
新物种形成的途径和方式有两种:渐变式和爆 发式。渐变式主要通过变异的逐渐积累而形成亚 种,再由亚种形成一个或多个新种,新种又分为 两种类型,即继承式心中形成和分化式新种形成; 爆发式不通过亚种这一阶段而迅速形成新的物种, 其分为三种类型,即杂交产生新种,染色体结构 变化形成新种和多倍体化的新种形式。遗传算法 杂交了渐变式和爆发式的两种思想。
3、交配
“交配运算”是使用单点或多点进行交叉 的算子。首先用随机数产生一个或多个交 配点位置互换部分基因码,形成两个子个 体。如
01001011 01000101 10010101 10011011
图1 染色体基因交配范例
4、突变
“突变运算”是使用基本位进行基因突 变。为了避免在算法迭代后期出现种群过 早收敛,对于二进制的基因码组成的个体 种群,实行基因码的小概率翻转对于二进 制编码即0变为1,而1变为0。