基于遗传算法的matlab源代码分析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于遗传算法的matlab源代码分析

function youhuafun D=code; N=50;???????? % Tunable maxgen=50;???? % Tunable crossrate=0.5; %Tunable muterate=0.08; %Tunable generation=1;?? num = length(D); fatherrand=randint(num,N,3); score = zeros(maxgen,N); while generation=maxgen ?? ind=randperm(N-2)+2; % 随机配对交叉 ?? A=fatherrand(:,ind(1:(N-2)/2)); ?? B=fatherrand(:,ind((N-2)/2+1:end)); %???? 多点交叉 ?? rnd=rand(num,(N-2)/2); ?? ind=rnd?? tmp=A(ind); ?? A(ind)=B(ind); ?? B(ind)=tmp; % % 两点交叉 %???? for kk=1:(N-2)/2 %???????? rndtmp=randint(1,1,num)+1; %???????? tmp=A(1:rndtmp,kk); %???????? A(1:rndtmp,kk)=B(1:rndtmp,kk); %???????? B(1:rndtmp,kk)=tmp; %???? end ?? fatherrand=[fatherrand(:,1:2),A,B]; ??? ?? % 变异 ?? rnd=rand(num,N); ?? ind=rnd?? [m,n]=size(ind); ?? tmp=randint(m,n,2)+1; ?? tmp(:,1:2)=0; ?? fatherrand=tmp+fatherrand; ?? fatherrand=mod(fatherrand,3); %???? fatherrand(ind)=tmp; ??? ?? %评价、选择 ?? scoreN=scorefun(fatherrand,D);% 求得N个个体的评价函数 ?? score(generation,:)=scoreN; ?? [scoreSort,scoreind]=sort(scoreN); ?? sumscore=cumsum(scoreSort); ?? sumscore=sumscore./sumscore(end); ?? childind(1:2)=scoreind(end-1:end); ?? for k=3:N ?????? tmprnd=rand; ?????? tmpind=tmprnd?????? difind=[0,diff(tmpind)]; ?????? if ~any(difind) ?????????? difind(1)=1; ?????? end ?????? childind(k)=scoreind(logical(difind)); ?? end ?? fatherrand=fatherrand(:,childind);???? ?? generation=generation+1; end % score maxV=max(score,[],2); minV=11*300-maxV; plot(minV,*);title(各代的目标函数值); F4=D(:,4); FF4=F4-fatherrand(:,1); FF4=max(FF4,1); D(:,5)=FF4; save DData D function D=code load youhua.mat % properties F2 and F3 F1=A(:,1); F2=A(:,2); F3=A(:,3); if (max(F2)1450)||(min(F2)=900) ?? error(DATA property F2 exceed its range (900,1450]) end % get group property F1 of data, according to F2 value F4=zeros(size(F1)); for ite=11:-1:1 ?? index=find(F2=900+ite*50); ?? F4(index)=ite; end D=[F1,F2,F3,F4]; function ScoreN=scorefun(fatherrand,D) F3=D(:,3); F4=D(:,4); N=size(fath

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档