资源描述:
《运用遗传算法求解函数f(x)=x^2.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一遗传算法的基本原理遗传算法是模拟生物遗传学和自然选择机理,通过人工方式构造的一类优化搜索算法,是对生物进化过程进行的一种数学仿真,是进化计算的一种重要形式。其搜索过程是从问题解的一个随机产生的集合开始的,而不是从单个个体开始的,具有隐含并行搜索特性,也就大大减少可陷入局部极小值的可能。在解决可能在求解过程中产生组合爆炸的问题时会产生很好的效果。遗传算法需选择一种合适的编码方式表示解,并选择一种评价函数用来每个解的适应值,适应值高的解更容易被选中并进行交叉和变异,然后产生新的子代。选择、交叉和变异的过程一直循环,直到求得满意解或满足其他终止条件为止。本例运用遗传算法求解函数
2、f(x)=x^2,x∈[0,31]上的整数,的最大值。首先随机选择五位二进制编码,设定初始种群个数为4,产生初始种群。随后确定适配度,本例就是目标值。然后根据适配值的大小,按照一定的概率进行复制。连续10代最大值结果保持一致,则遗传算法结束运行。二Matlab程序运行结果:由运行结果可以看出,经过2代以后,遗传算法的结果达到最优。Matlab程序如下:%****遗传算法主程序*******clearclctotal=1;%总的进化代数Num=0;MaN1=0;MaN2=0;flag=0;N1=initialize();N2=initialize();N3=initializ
3、e();N4=initialize();%复制while1while1DecN1=BinToDec(N1);%计算适配度DecN2=BinToDec(N2);DecN3=BinToDec(N3);DecN4=BinToDec(N4);f1=DecN1^2;f2=DecN2^2;f3=DecN3^2;f4=DecN4^2;ttt=[f1,f2,f3,f4];ifflag==0MaN1=max(ttt);elseMaN2=max(ttt);endifMaN1==MaN2Num=Num+1;elseNum=0;endsum=f1+f2+f3+f4;aver=sum/4;n1=ro
4、und(f1/aver);%实际得到的复制个数n2=round(f2/aver);n3=round(f3/aver);n4=round(f4/aver);N=n1+n2+n3+n4;%总的复制个数ifN~=4N1=initialize();N2=initialize();N3=initialize();N4=initialize();total=1;Num=0;MaN1=0;MaN2=0;flag=0;continue;elsebreak;endendtemp1=cal(N1,n1);temp2=cal(N2,n2);temp3=cal(N3,n3);temp4=cal(N
5、4,n4);M=[temp1;temp2;temp3;temp4];N1=M(1,:);N2=M(2,:);N3=M(3,:);N4=M(4,:);%交叉while1p=floor(1000*rand);ifp>1break;elsecontinue;endendk=mod(p,3);switchkcase0[N1,N2,N3,N4,ps]=crossover(N1,N2,N3,N4);case1[N1,N2,N3,N4,ps]=crossover(N1,N3,N2,N4);case2[N1,N2,N3,N4,ps]=crossover(N1,N4,N2,N3);end%变
6、异U=[N1,N2,N3,N4]pos=mod(floor(1000*rand),20)+1;ifU(1,pos)==0U(1,pos)=1;elseU(1,pos)=0;endN1=U(1,1:5);N2=U(1,6:10);N3=U(1,11:15);N4=U(1,16:20);%遗传算法结束条件:连续10代最大值均保持一致ifNum==10disp('进化代数:')total-10disp('现在的种群:')N1N2N3N4disp('最大值:')MaN1break;endflag=mod(flag+1,2);total=total+1;end子程序1:initial
7、ize.mfunction[X]=initialize()X=zeros(1,5);forj=1:5X(1,j)=round(rand);end子程序2:BinToDec.mfunctionsum=BinToDec(X)sum=0;fori=5:-1:1sum=sum+X(1,i)*2^(5-i);end子程序3:cal.mfunction[temp]=cal(X,n)temp=zeros(n,5);fori=1:ntemp(i,:)=X;子程序4:crossover.mfunction[A1,A2,A3,A4,p