《MATLAB遗传算法工具箱.ppt》由会员分享,可在线阅读,更多相关《MATLAB遗传算法工具箱.ppt(23页珍藏版)》请在三一办公上搜索。
1、MATLAB遗传算法工具箱,组长:陈晔组员:邱凯 胡仕玉 柯青,一,遗传算法来源和计算步骤,模拟自然进化:遗传-变异-选择适者生存,优胜劣汰,自然进化,人工进化(如GA),1,来源,2,步骤,编码,初始种群,适应度计算,选择,交叉,变异,新种群的生成,是否达到目标,否,解决实际问题,是,二,关键操作,1,适应度计算及标定2,编码二进制,格雷码,十进制,符号编码3,选择轮盘赌选择(rws)均匀排序(ranking)最优保存(代沟)排挤选择(海明距离),4,交叉单点交叉,两点,多点均匀交叉特殊(PMX,CX,EX)5,变异基本位变异均匀变异非均匀变异(高斯变异)逆转变异,交换变异,三,MATLAB
2、遗传算法工具箱,1,三种常见工具箱(1),gatbx工具箱:英国设菲尔德Sheffield大学开发的gatbs工具箱,不是Matlab软件自带的,雷英杰编著Matlab遗传算法工具箱及应用涉及到了这个工具箱,并对它的使用进行了说明。(2),gaot工具箱:这是网上流传的免费的工具箱,网上对它介绍的资料也挺多,也不是Matlab软件自带的,但可以自己配置使用。飞思科技产品研发中心编著Matlab 6.X辅助优化计算与设计第五章对gaot遗传算法工具箱的使用进行了介绍。,三,MATLAB遗传算法工具箱,(3),gads工具箱:matlab 7.0包含了这个工具箱,matlab7.0以前的版本没有这
3、个工具箱,雷英杰编著Matlab遗传算法工具箱及应用对这个工具箱的使用进行了介绍。,遗传算法工具箱的安装,一.下载工具箱二.工具箱文件夹放入matlab文件夹的目录三.在文件/set path/add with subfolders/save/close将该工具箱文件夹放入matlab文件夹的目录四.在filePreferencesGeneral的Toolbox Path Caching里点击update Toolbox Path Cache更新一下,2,gatbx工具箱常见函数,(1)初始种群的创建crtbp二进制编码种群crtrp十进制编码种群(2)适应度计算Scaling比率适应度Ran
4、king排序适应度例1:chrom=crtbp(9,6),Chrom=00 11 00 1001 10 00 0111 11 11 0110 10 10 1111 00 00 1010 01 11 1100 01 01 0000 10 00 0011 01 00 0110 11 00 01,(3,选择rws-轮盘赌选择sus-随机遍历抽样select-高级选择函数(4)交叉xovsp-单点交叉xovdp-两点交叉xovsh-洗牌交叉recombin-高级交叉函数,例2,chrom=crtbp(2,6)chrom=0 1 1 0 0 10 0 1 0 0 0new=xovsp(chrom,1)n
5、ew=0 0 1 0 0 0 0 1 1 0 0 1,(5)变异mut-二进制编码的变异mutbga-十进制的变异mutate-高级变异函数(6)其他有用函数reins-重组(有代沟时)bs2rv-二进制的解码migrate-子种群的支持,例3,chrom=0 1 1 0 0 10 0 1 0 0 0new1=mut(chrom,0.1)new1=1 1 1 0 0 10 0 1 0 1 0,四,应用gatbx工具箱的基本求解步骤,chrom=crtbp(nind,nvar);%创建初始种群var=bs2rv(chrom,fieldd);%解码 obj=functionx(var);%求目标函
6、数值%开始进化while genmaxgen fitnv=ranking(obj);%分配适应度 selch=select(sus,chrom,fitnv);%选择 selch=xovsp(selch,p1);%交叉 selch=mut(selch,p2);%变异 var=bs2rv(selch,fieldd);%生成新种群 obj=functionx(var);end,五,一些实例,1,简单非线性规划2,背包问题3,最小hamirton圈,我们所遇到的一些问题,遗传算法工具箱的安装注意MATLAB编程与C的区别调试过程中出现的一些奇怪的问题尽量的使用工具箱里的函数,我们的思路与方法,XOVR
7、=0.5;NVAR=16;MUTR=0.3;MAXGEN=1000;INSR=0.9;NIND=100;RANGE=1;16;a=0.8;c=1.44*1024;t=1000;u=855 461 432 406 388 372 364 253 164 137 114 108 87 62 55 46;v=B1;B2;B3;B4;B5;B6;B7;B8;B9;B10;B11;B12;B13;B14;B15;B16;SEL_F=sus;XOV_F=recdis;MUT_F=mutbga;OBJ_F=objpush;,FieldDR=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;15
8、 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15;BaseV=16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16;Chrom,NVAR,BaseV=crtbp(NIND,NVAR,BaseV);%建立初始种群,用序列代号的方法,trace=zeros(MAXGEN,2);m=zeros(NIND,MAXGEN);sum=zeros(NIND,NVAR);all=zeros(NIND,1);ObjV=zeros(NIND,1);ObjVOff=zeros(NIND,1);gen=2;,for i=1:NIND
9、for j=1:NVAR for k=1:NVAR if j-1=Chrom(i,k)m(i,1)=m(i,1)+1;break end end endend%统计每个个体所用的盒子数,for i=1:NIND for j=1:NVAR for k=1:NVAR if Chrom(i,k)=Chrom(i,j)sum(i,j)=sum(i,j)+u(k);end end all(i)=all(i)+sum(i,j)-a*max(0,sum(i,j)-c);end ObjV(i,1)=m(i,1)*(m(i,1)*c-all(i);ObjV(i,1)=t-ObjV(i,1);end%定义目标值与
10、盒子数的关系,while genMAXGEN,FitnV=ranking(ObjV,2,1);%根据目标值进行适应度排序 SelCh=select(SEL_F,Chrom,FitnV);%基于适应度选择个体 SelCh=recombin(XOV_F,SelCh,XOVR);%完成种群中个体的重组 SelCh=mutate(MUT_F,SelCh,FieldDR,MUTR);%执行种群个体的变异,并在新种群中返回变异后的个体,for i=1:NIND for j=1:NVAR for k=1:NVAR if j-1=SelCh(i,k)m(i,gen)=m(i,gen-1)+1;break en
11、d end end end for i=1:NIND for j=1:NVAR for k=1:NVAR if SelCh(i,k)=SelCh(i,j)sum(i,j)=sum(i,j)+u(k);end end all(i)=all(i)+sum(i,j)-a*max(0,sum(i,j)-c);end ObjVOff(i,1)=m(i,gen)*(m(i,gen)*c-all(i);ObjVOff(i,1)=t-ObjVOff(i,1);end,Chrom,ObjV=reins(Chrom,SelCh,1,1,INSR,ObjV,ObjVOff);%完成插入子代到当前种群,用子代代替父代
12、并返回结果种群 gen=gen+1;trace(gen,1)=min(m(:,gen);%跟踪最小的盒子数 trace(gen,2)=mean(m(:,gen);%跟踪盒子数的均值end,Y,I=min(t-ObjV);subplot(211);plot(Chrom(I,:),g.);hold on;plot(Chrom(I,:),b-);gridsubplot(212);plot(trace(:,1),g);hold on;plot(trace(:,2),r-);gridlegend(解的变化,种群均值的变化),运行中出现的问题一.for循环和工具箱函数出现矛盾二.遗传过程中种群中的序列号出现小数三.所得图形与预期的很不相同,谢谢!,