进化算法程序

上传人:pu****.1 文档编号:499050806 上传时间:2023-04-01 格式:DOC 页数:20 大小:431.50KB
返回 下载 相关 举报
进化算法程序_第1页
第1页 / 共20页
进化算法程序_第2页
第2页 / 共20页
进化算法程序_第3页
第3页 / 共20页
进化算法程序_第4页
第4页 / 共20页
进化算法程序_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《进化算法程序》由会员分享,可在线阅读,更多相关《进化算法程序(20页珍藏版)》请在金锄头文库上搜索。

1、进化算法作业 1 全局优化问题(1) , 此问题的全局最优值。一程序(1)主函数: main.mclear all;clc;popsize=60; %种群规模chromlength=34; %二进制编码,编码精度为0.0001,所以串长l为17pc=0.7; %杂交概率pm=0.1; %变异概率t=0; %进化代数初始为0pop=initpop(popsize,chromlength); %随机产生初始种群while ty(t) newpop3(1,:)=bestindividual; %保留最佳个体 end pop=newpop3; %产生新种群endy; %每代的最佳目标函数值x1; %每

2、代的最佳目标函数值对应的自变量x2;gy,k=min(y) %gy为全局最优值,k为最优值对应的进化代数gx1=x1(k) %全局最优值对应的自变量gx2=x2(k)plot(y) %最优值收敛曲线title(收敛性曲线);xlabel(进化代数);ylabel(函数值);axis(0,500,-1.5,1.5);(2)初始种群:initpop.mfunction pop=initpop(popsize,chromlength)pop=round(rand(popsize,chromlength); %rand随机产生0,1区间的一个小数,rand四舍五入取整end(3)计算目标函数值::ca

3、lobjvalue.mfunction objvalue =calobjvalue( pop )temp1=decodechrom(pop,1,14);temp2=decodechrom(pop,15,14);x1=-5+(10*temp1)/(pow2(14)-1); %将二值域中的数转化为变量域中的数x2=-5+(10*temp2)/(pow2(14)-1);objvalue=4*x1.2-2.1*x1.4+1/3*x1.6+x1.*x2-4*x2.2+4*x2.4; %计算目标函数enda二进制转换为十进制:decodechrom.m function temp=decodechrom(

4、pop,spoint,length )pop1=pop(:,spoint:spoint+length-1); %按变量个数分组转换,spoint为起始点,length为一个变量的长度temp=decodebinary(pop1);endb求二进制串对应的十进制数:decodebinary.mfunction temp =decodebinary( pop)px,py=size(pop); %求pop行数和列数for i=1:py pop1(:,i)=2.(py-i).*pop(:,i);endtemp=sum(pop1,2); %每一行求和end(4)计算个体适应度:calfitvalue.m

5、function fitvalue= calfitvalue( objvalue ) fitvalue=1./(1+exp(objvalue);end(5)种群中最大适应度个体及其值:best.mfunction bestindividual,bestfit = best(pop,fitvalue )px,py=size(pop);bestindividual=pop(1,:);bestfit=fitvalue(1);for i=2:px; if fitvaluebestfit bestindividual=pop(i,:); best=fitvalue(i); endendend(6)选择算

6、子:selection.mfunction newpop1=selection(pop,fitvalue)totalfit=sum(fitvalue); %适应度和ps=fitvalue./totalfit; %单个个体被选择的概率pss=cumsum(ps); %前几项累积和px,py=size(pop);ms=sort(rand(px,1); %随机产生px个0,1之间的数,并按升序排列fitin=1;newin=1;while newin=px if(ms(newin)pss(fitin) newpop1(newin,:)=pop(fitin,:); newin=newin+1; els

7、e fitin=fitin+1; endendend(7)交叉算子:crossover.mfunction newpop2 = crossover( pop,pc )px,py=size(pop);newpop2=ones(size(pop);for i=1:2:px-1 if randpc cpoint=round(rand*py); %随机产生一个交叉位 newpop2(i,:)=pop(i,1:cpoint),pop(i+1,cpoint+1:py); %交换相邻两个个体交叉位之后的基因 newpop2(i+1,:)=pop(i+1,1:cpoint),pop(i,cpoint+1:py

8、); else nwepop2(i,:)=pop(i,:); newpop2(i+1,:)=pop(i+1,:); endendend(8)变异算子:mutation.mfunction newpop3 = mutation( pop,pm )px,py=size(pop);newpop3=pop;for i=1:px if(randpm) mpoint=round(rand*py); %随机产生一个变异位 if mpoint=0 mpoint=1; end if (newpop3(i,mpoint)=0) %变为等为基因 newpop3(i,mpoint)=1; else newpop3(i

9、,mpoint)=0; end endend end二独立运行程序30次的结果x10.1590-0.0900-0.0888-0.0894-0.08090.07720.08760.1175-0.1578-0.0778x2-0.70160.71260.71020.64210.7120-0.6247-0.7023-0.71380.70290.7090y-1.0115-1.0316-1.0316-0.9751-1.0313-0.9763-1.0308-1.0287-1.0125-1.0310x10.0900-0.0015-0.1566-0.0888-0.0882-0.00890.10040.0766-

10、0.0900-0.0876x2-0.7126-0.70650.71690.71260.7029-0.6931-0.7029-0.71320.71510.7102y-1.0316-0.9989-0.10147-1.0316-1.0309-0.9922-1.0303-1.0309-1.0316-1.0316x1-0.9190.07780.09060.09060.09310.09060.0906-0.0925-0.0705-0.0919x20.7126-0.7114-0.7138-0.7126-0.7816-0.7132-0.70960.71630.69860.7126y-1.0316-1.0331

11、-1.0316-1.0316-0.9891-1.0316-1.0315-1.0315-1.0288-1.0316最好目标函数值:-1.0316 最差目标函数值:-0.9751平均目标函数值:-0.9914 标准方差:0.0286三最好的一次结果最好解:x1=0.0919 x2=-0.7126 最好值:-1.0316运行结果及收敛性曲线如下图: 运行结果 收敛性曲线(2) , 此问题的全局最优值。一程序(1)主函数: main.mclear all;clcpopsize=40; %种群规模chromlength=28; %二进制编码,编码精度为0.001,所以串长l为14pc=0.8; %杂交概率pm=0.2; %变异概率 t=0;pop=

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 小学课件

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