运用遗传算法求解函数f(x)=x^2.docx

运用遗传算法求解函数f(x)=x^2.docx

ID:62234940

大小:18.54 KB

页数:9页

时间:2021-04-22

运用遗传算法求解函数f(x)=x^2.docx_第1页
运用遗传算法求解函数f(x)=x^2.docx_第2页
运用遗传算法求解函数f(x)=x^2.docx_第3页
运用遗传算法求解函数f(x)=x^2.docx_第4页
运用遗传算法求解函数f(x)=x^2.docx_第5页
资源描述:

《运用遗传算法求解函数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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。