ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:138.85KB ,
资源ID:7254063      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7254063.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Ch6遗传算法的改进.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Ch6遗传算法的改进.docx

1、Ch6遗传算法的改进Ch6 遗传算法的改进 6.1遗传算法的基本函数Chrom,Lind,BaseV=crtbp(Nind,Lind,base)objV=1;2;3;4;5;10;9;8;7;6; %十个个体的目标函数值FintV=ranking(objV); %根据目标函数计算各个体的适应度SelCh=select(sus,Chrom,FitV); %根据适应度FitV对现有群体Chrom进行复制NewChrom=recombin(REC_F,Chrom,RecOpt,SUBPOP)REC_F:值为recdis、xovsp,二种不同交叉方式Chrom:待交叉的种群,即染色体的集合RecOpt

2、:交叉概率,缺省时或NAN,取默认值NewChrom=mut(OldChrom,Pm,BaseV)Pm:为变异概率,缺省为0.7/Lind(染色体的长度).baseV:染色体个体元素的变异的基本字符,缺省时为二进制编码Chrom=reins(Chrom,SelCh) % 重插入采用以上算法产生群体,计算适应度,根据适应度进行选择、交叉、变异,再计算适应度等不断循环进化,最后得到需要的解,这是经典遗传算法,尽管可以解决TSP问题,可以解决求最小值或最大值问题,也可以改善BP神经网络的性能,但也存在系列问题。6.2存在问题-早熟 早熟即非成熟收敛,没有迭代完指定的代数,所有个体都趋于同一个体丧失生

3、物多样性,从而再迭代没有任何意义了,无法获取最优解,主要与以下方面相关。(1)选择操作是根据当前群体中,个体适应度值所决定的概率进行的。当群体中存在个别超常个体时(即该个体的适应度远高于其他个体),该个体在选择算子作用下,将会多被选中,强者通吃,强者越强,弱者越弱,下一代很快被该个体控制,变成寡头政治。(2)交叉和变异操作发生的概率Pc与Pe控制,这二个参数其实控制了算法的局部搜索能力,因此算法对这二个参数非常敏感。不同的参数值会有不同的结果。(3)群体规模对遗传算法的优化性能也有较大影响,群体太小了,生物多样性体现不出来,杂交优势没有了,群体太大,计算时间可能太长了,计算效率会降低了。(4)

4、遗传算法的终止判据是,人为设定其迭代次数,可能也会造成未成熟就终止了即收敛了。为了克服以上问题,对遗传算法参数的设置做了精心的校定,提出了自适应的交叉和变异,但多数情况下,要针对具体的问题进行分析、试探,寻找相应的控制参数。6.3多种群遗传算法(multiple population GA MPGA)(1)多个种群同时进行优化搜索,不同种群的控制参数不同,从而实现不同搜索目的。(2)各种群之间通过移民算子进行联系,实现多种群的协同进化。最优解的获取是多个种群协同进化的综合结果。(3)通过人工选择算子,保存各种群每个进化代中的最优个体,并作为判断算法收敛的依据。交叉算子是产生新个体的主要算子,它

5、决定遗传算法的全局搜索能力。变异算子是产生新个体的辅助算子,它决定了遗传算法的局部搜索能力。建议Pc的值大一点(0.70.9),如Pm的值小一点(0.0010.05),为了避免参数的敏感性,多种群协同进化,兼顾全局与局部的平衡性。移民算子将各种群在进化过程中出现的最优个体,定期地(每隔一定的进化代数)引入其他的群中,实现种群之间的信息交换,将目标种群中的最差个体,用源种群中的最优个体代替。精华种群和其他种群有很大不同。在进化的每一代,通过人工选择算子选出其他种群的最优个体,放入到精华种群加以保存。精华种群不进行选择、交叉、变异等遗传操作,保证进化过程中各种群产生的最优个体不被破坏和丢失,同时精

6、华种群也是判断算法终止的依据。6.4实例max f(x,y)=21.5+xsin(4 x)+ysin(204 y),-3.0 x 12.1,4.1 x 5.8,x=-3.0:0.01:12.1;len=length(x);y1=(5.8-4.1)/len;y=4.1:y1:5.8;y=y(1:len);X,Y=meshgrid(x,y);Z=21.5+X.*sin(4*pi*X)+Y.*sin(20*pi*Y);mesh(X,Y,Z)有很多的局部极值,常见的寻优算法可能很容易陷入局部极值,或在局部值极值之间振荡。移民算子function Chrom,ObjV=immigrant(Chrom,O

7、bjV)%Chrom 是各种群的集合,应是3维数组,%1维是哪个种群,2维是种群中某染色体,3维是某染色体的基因位 %OjbV 是各种群中各染色体的目标函数值MP=length(Chrom); %种群的个数for i=1:MP MaxO,maxI=max(ObjVi); % 找出第i种群中最优的个体 next_i=i+1; % 目标种群(移民操作中,循环迁移) if next_iMP next_i=mod(next_i,MP); %超过MP则模MP end MinO,minI=min(ObjVnext_i); %找出目标种群中最劣的个体 % 目标种群最劣个体替换为源种群最优个体 Chromne

8、xt_i(minI,:)=Chromi(maxI,:); ObjVnext_i(minI)=ObjVi(maxI);end人工选择算子函数function MaxObjV,MaxChrom=EliteInduvidual(Chrom,ObjV,MaxObjV,MaxChrom)%Chrom:移民前各种群的编码集,3维数组%ObjV:移民前各种群中各染色体的目标函数值%MaxObjV:移民前各种群最优个体的目标函值。%MaxChrom:移民前各种群的最优个体的编码MP=length(Chrom); %种群数for i=1:MP MaxO,maxI=max(ObjVi); %找出第i种群中最优个体

9、 if MaxOMaxObjV(i) MaxObjV(i)=MaxO; %保存第i个种群的最优目标值 MaxChrom(i,:)=Chromi(maxI,:); %保存第i个种群的精华个体的编码 endend目标函数function obj=ObjectFunction(X)%X:为col行2列的数组,首列为自变量x的值,次列为自变量y的值col=size(X,1);for i=1:col obj(i,1)=21.5+X(i,1)*sin(4*pi*X(i,1)+X(i,2)*sin(20*pi*X(i,2);end我在画图时,采用的X,Y,Z三列数据标准遗传算法SGA% 标准遗传算法SGAc

10、lear all;close all;clc;pc=0.7; % 交叉概率pm=0.05; % 变异概率%定义遗传算法参数NIND=40; %个体数目MAXGEN=500; %最大遗传代数NVAR=2; %变量的维数PRECI=20; %变量的二进制位数GGAP=0.9; %代沟trace=zeros(MAXGEN,1); %记录优化轨迹FieldD=rep(PRECI,1,NVAR);-3,4.1;12.1,5.8;rep(1;0;1;1,1,NVAR); %译码矩阵Chrom=crtbp(NIND, NVAR*PRECI); %创建初始种群gen=0; %代计数器 ObjV=ObjectF

11、unction(bs2rv(Chrom, FieldD);%计算初始种群个体的目标函数值maxY,I=max(ObjV); %目标函数的最优值X=bs2rv(Chrom, FieldD);%初始种群的各染色体的在-3,12.1,4.1,5.8的点maxX=X(I,:);%目标函数最大者对应的坐标值(x,y)while genMAXGEN %迭代 FitnV=ranking(-ObjV); %分配适应度值(最大值问题要加负号) SelCh=select(sus, Chrom, FitnV, GGAP); %选择 SelCh=recombin(xovsp, SelCh, pc); %重组 SelC

12、h=mut(SelCh,pm); %变异 ObjVSel=ObjectFunction(bs2rv(SelCh, FieldD); %计算子代目标函数值 Chrom ObjV=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入 gen=gen+1; %代计数器增加 if maxYmax(ObjV) maxY,I=max(ObjV); X=bs2rv(Chrom, FieldD); maxX=X(I,:); end trace(gen,1)=maxY;end% 进化过程图plot(1:gen,trace(:,1);hold onxlabel(进化代数);

13、ylabel(最优解变化);title(SGA进化过程);% 输出最优解disp(最优值为:,num2str(maxY);disp(对应的自变量取值:,num2str(maxX);运算结果最优值为:38.7454对应的自变量取值:11.6362 5.72468多种群遗传算法MPGAclear all;close all;clcNIND=40; %个体数目NVAR=2; %变量的维数PRECI=20; %变量的二进制位数GGAP=0.9; %代沟MP=10; %种群数目FieldD=rep(PRECI,1,NVAR);-3,4.1;12.1,5.8;rep(1;0;1;1,1,NVAR); %译

14、码矩阵for i=1:MP Chromi=crtbp(NIND, NVAR*PRECI); %创建第i个初始种群endpc=0.7+(0.9-0.7)*rand(MP,1); %在【0.7,0.9】范围i内随机产生交叉概率pm=0.001+(0.05-0.001)*rand(MP,1); %在【0.001,0.05】范围内随机产生变异概率gen=0; %初始遗传代数gen0=0; %初始保持代数MAXGEN=10; %最优个体最少保持代数maxY=0; %最优值for i=1:MP %计算各初始种群个体的目标函数值 ObjVi=ObjectFunction(bs2rv(Chromi, Fiel

15、dD); endMaxObjV=zeros(MP,1); %记录精华种群MaxChrom=zeros(MP,PRECI*NVAR); %记录精华种群的编码while gen0maxY %判断当前优化值是否与前一次优化值相同 maxY=YY(gen); %更新最优值 gen0=0; else gen0=gen0+1; %最优值保持次数加1 endend% 进化过程图plot(1:gen,YY);xlabel(进化代数)ylabel(最优解变化)title(MPGA进化过程)% 输出最优解Y,I=max(MaxObjV); %找出精华种群中最优的个体X=(bs2rv(MaxChrom(I,:),

16、FieldD); %最优个体的解码解disp(最优值为:,num2str(Y)disp(对应的自变量取值:,num2str(X)运算结果最优值为:38.8503对应的自变量取值:11.6255 5.72504MPGA60代就很稳定了,而SGA到500代才稳定!更细致的比较需要将多次的图画出来。多代对比function gen,trace,maxX,maxY=ysga()% 标准遗传算法SGA函数clear all;%close all;%clc;%代码同sga% 进化过程图%plot(1:gen,trace(:,1);%hold on%xlabel(进化代数);%ylabel(最优解变化);%

17、title(SGA进化过程);% 输出最优解%disp(最优值为:,num2str(maxY);%disp(对应的自变量取值:,num2str(maxX)即输出与画图的语句被注释掉主控函数% 执行5次,将每次的结果显示出来%ysgaMain.mclear all;close all;clc;hold on;myColor=r;g;b;y;v;for i=1:5 gen,trace,maxX,maxY=ysga(); plot(1:gen,trace(:,1),myColor(i); disp(num2str(i), ,num2str(maxX), ,num2str(maxY);endxlabe

18、l(进化代数);ylabel(最优解变化);title(SGA进化过程);hold off;运算结果次数xy最优值111.62675.7256938.8444211.625.7249938.8224311.62295.7231438.8029411.62235.7259538.8313511.62335.7234638.8175多种群算法的函数形式ympga()function gen,YY,X,Y=ympga()%函数形式的多种群遗传算法clear all;%close all;%clc %与mpga()算法完全一样end% 进化过程图%plot(1:gen,YY);%label(进化代数)

19、%ylabel(最优解变化)%title(MPGA进化过程)Y,I=max(MaxObjV); %找出精华种群中最优的个体X=(bs2rv(MaxChrom(I,:), FieldD); %最优个体的解码解%disp(最优值为:,num2str(Y)%disp(对应的自变量取值:,num2str(X)主控程序% 执行5次,将每次的结果显示出来%ympgaMain.mclear all;close all;clc;hold on;myColor=r;g;b;y;v;for i=1:5 gen,YY,X,Y=ympga(); plot(1:gen,YY,myColor(i); disp(num2str(i), ,num2str(X), ,num2str(Y);endxlabel(进化代数);ylabel(最优解变化);title(MPGA进化过程);hold off;运算结果次数XY函数值111.62555.7250438.8503211.62555.7250438.8503311.62555.7250438.8503411.62555.7250438.8503511.62555.7250438.8503从上述两个图可知,sga方法不太稳定,进化代数500代还在波动,说明还没有得到最优解,而采用mpga方法,70年代左右就很稳定,说明该方法的优越性。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1