基于遗传算法的matlab源代码.pdf

基于遗传算法的matlab源代码.pdf

ID:23284619

大小:270.51 KB

页数:11页

时间:2018-11-06

基于遗传算法的matlab源代码.pdf_第1页
基于遗传算法的matlab源代码.pdf_第2页
基于遗传算法的matlab源代码.pdf_第3页
基于遗传算法的matlab源代码.pdf_第4页
基于遗传算法的matlab源代码.pdf_第5页
资源描述:

《基于遗传算法的matlab源代码.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、functionyouhuafuntmprnd=rand;tmpind=tmprnddifind=[0,diff(tD=code;mpind)];N=50;%Tunableif~any(difind)maxgen=50;%Tunabledifind(1)=1;crossrate=0.5;%Tunableendmuterate=0.08;%Tunablechildind(k)=scoreind(logical(difind));generation=1;endnum=length(D);fatherrand=fatherrand(:,childind);fat

2、herrand=randint(num,N,3);generation=generation+1;score=zeros(maxgen,N);endwhilegeneration<=maxgen%scoreind=randperm(N-2)+2;%随机配对交叉maxV=max(score,[],2);A=fatherrand(:,ind(1:(N-2)/2));minV=11*300-maxV;B=fatherrand(:,ind((N-2)/2+1:end));plot(minV,'*');title('各代的目标函数值');%多点交叉F4=D(:,4);

3、rnd=rand(num,(N-2)/2);FF4=F4-fatherrand(:,1);ind=rndtmp=A(ind);FF4=max(FF4,1);A(ind)=B(ind);D(:,5)=FF4;B(ind)=tmp;saveDDataD%%两点交叉functionD=code%forkk=1:(N-2)/2loadyouhua.mat%rndtmp=randint(1,1,num)+1;%propertiesF2andF3%tmp=A(1:rndtmp,kk);F1=A(:,1);%A(1:rndtmp,kk)=B(1:rndtmp,kk);F2

4、=A(:,2);%B(1:rndtmp,kk)=tmp;F3=A(:,3);%endif(max(F2)>1450)

5、

6、(min(F2)<=900)fatherrand=[fatherrand(:,1:2),A,B];error('DATApropertyF2exceedit''srange(900,1450]')%变异endrnd=rand(num,N);%getgrouppropertyF1ofdata,accordingtoF2valueind=rnd[m,n]=size(ind);F4=zeros(size(F1));tmp=randint(m,n,

7、2)+1;forite=11:-1:1tmp(:,1:2)=0;index=find(F2<=900+ite*50);fatherrand=tmp+fatherrand;F4(index)=ite;fatherrand=mod(fatherrand,3);end%fatherrand(ind)=tmp;D=[F1,F2,F3,F4];%评价、选择functionScoreN=scorefun(fatherrand,D)scoreN=scorefun(fatherrand,D);%求得N个个体的评价F3=D(:,3);函数F4=D(:,4);score(gen

8、eration,:)=scoreN;N=size(fatherrand,2);[scoreSort,scoreind]=sort(scoreN);FF4=F4*ones(1,N);sumscore=cumsum(scoreSort);FF4rnd=FF4-fatherrand;sumscore=sumscore./sumscore(end);FF4rnd=max(FF4rnd,1);childind(1:2)=scoreind(end-1:end);ScoreN=ones(1,N)*300*11;fork=3:N%这里有待优化fork=1:N%Name:de

9、codebinary.mFF4k=FF4rnd(:,k);%产生[2^n2^(n-1)...1]的行向量,然后求和,将二进制转化为forite=1:11十进制F0index=find(FF4k==ite);functionpop2=decodebinary(pop)if~isempty(F0index)[px,py]=size(pop);%求pop行和列数tmpMat=F3(F0index);fori=1:pytmpSco=sum(tmpMat);pop1(:,i)=2.^(py-i).*pop(:,i);ScoreBin(ite)=mod(tmpSco,3

10、00);endendpop2=sum(pop1,2)

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

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

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