运用遗传算法求解函数f=x^2

上传人:ni****g 文档编号:563873416 上传时间:2022-10-07 格式:DOCX 页数:4 大小:12.99KB
返回 下载 相关 举报
运用遗传算法求解函数f=x^2_第1页
第1页 / 共4页
运用遗传算法求解函数f=x^2_第2页
第2页 / 共4页
运用遗传算法求解函数f=x^2_第3页
第3页 / 共4页
运用遗传算法求解函数f=x^2_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《运用遗传算法求解函数f=x^2》由会员分享,可在线阅读,更多相关《运用遗传算法求解函数f=x^2(4页珍藏版)》请在金锄头文库上搜索。

1、遗传算法的基本原理遗传算法是模拟生物遗传学和自然选择机理,通过人工方式构造的一类优化搜索算法,是对生物进化过程进行的一种数学仿真,是进化计算的一种重要形式。其搜索过程是从问题解的一个随机产生的集合开始的,而不是从单个个体开始的,具有隐含并行搜索特性,也就大大减少可陷入局部极小值的可能。在解决可能在求解过程中产生组合爆炸的问题时会产生很好的效果。遗传算法需选择一种合适的编码方式表示解,并选择一种评价函数用来每个解的适应值,适应值高的解更容易被选中并进行交叉和变异,然后产生新的子代。选择、交叉和变异的过程一直循环,直到求得满意解或满足其他终止条件为止。本例运用遗传算法求解函数f(x)=xA2,x0

2、,31上的整数,的最大值。首先随机选择五位二进制编码,设定初始种群个数为4,产生初始种群。随后确定适配度,本例就是目标值。然后根据适配值的大小,按照一定的概率进行复制。连续10代最大值结果保持一致,则遗传算法结束运行。二Matlab程序运行结果:由运行结果可以看出,经过2代以后,遗传算法的结果达到最优。N1=111oON2=1O1D1N3=1O111N4=111111人值兰MaMl=Matlab程序如下:*clear遗传算法主程序*clctotal=1;%总的进化代数Num=O;MaN1=0;MaN2=0;flag=0;N1=initialize();N2=initialize();N3=in

3、itialize();N4=initialize();%复制while1while1DecN1=BinToDec(NI);%计算适配度DecN2=BinToDec(N2);DecN3=BinToDec(N3);DecN4=BinToDec(N4);f1=DecN1A2;f2=DecN2A2;f3=DecN3A2;f4=DecN4A2;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=round(f1/

4、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(N4,n4);M=temp1;temp

5、2;temp3;temp4;N1=M(1,:);N2=M(2,:);N3=M(3,:);N4=M(4,:);%交叉while1p=floor(1000*rand);ifp1break;elsecontinue;endendk=mod(p,3);switchkcase0N1,N2,N3,N4,ps=crossover(N1,N2,N3,N4);case1N1,N2,N3,N4,ps=crossover(N1,N3,N2,N4);case2N1,N2,N3,N4,ps=crossover(N1,N4,N2,N3);end%变异U=N1,N2,N3,N4pos=mod(floor(1000*rand

6、),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);ifNum=10disp(total-10disp(N1N2N3N4disp(MaN1break;%遗传算法结束条件:连续10代最大值均保持一致进化代数:)现在的种群:)最大值:)endflag=mod(flag+1,2);total=total+1;end子程序1:initialize.mfunctionX=initialize()X=zeros(1,5);forj=1:5X(1,j)=ro

7、und(rand);end子程序2:BinToDec.mfunctionsum=BinToDec(X)sum=0;fori=5:-1:1sum=sum+X(1,i)*2A(5-i);end子程序3:cal.mfunctiontemp=cal(X,n)temp=zeros(n,5);fori=1:ntemp(i,:)=X;子程序4:crossover.mfunctionA1,A2,A3,A4,position=crossover(t1,t2,t3,t4)while1p=floor(1000*rand);ifp1break;elsecontinue;endendposition=mod(p,4)+1;A1=t1(1:position),t2(position+1:5);A2=t2(1:position),t1(position+1:5);A3=t3(1:position),t4(position+1:5);A4=t4(1:position),t3(position+1:5);end

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号