投影寻踪 遗传算法MATLAB程序.doc

上传人:飞****9 文档编号:133702821 上传时间:2020-05-29 格式:DOC 页数:5 大小:23.50KB
返回 下载 相关 举报
投影寻踪 遗传算法MATLAB程序.doc_第1页
第1页 / 共5页
投影寻踪 遗传算法MATLAB程序.doc_第2页
第2页 / 共5页
投影寻踪 遗传算法MATLAB程序.doc_第3页
第3页 / 共5页
投影寻踪 遗传算法MATLAB程序.doc_第4页
第4页 / 共5页
投影寻踪 遗传算法MATLAB程序.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《投影寻踪 遗传算法MATLAB程序.doc》由会员分享,可在线阅读,更多相关《投影寻踪 遗传算法MATLAB程序.doc(5页珍藏版)》请在金锄头文库上搜索。

1、clcclearclose allAlpha=0.1;X=load(d:data.txt);for k=1:21 eval(sprintf(syms a%d,k);enda=a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21;n,p=size(X);x=zeros(n,p);Xjmax=max(X);Xjmin=min(X);for i=1:n x(i,:)=(X(i,:)-Xjmin)./(Xjmax-Xjmin);end %构造投影指标for i=1:n Z(i)=sum(a.*x(i,:);

2、end%计算投影指标函数meanZ=mean(Z);Sa=0;for k=1:n sa=(Z(i)-meanZ).2; Sa=Sa+sa; Sa=sqrt(Sa/n);endR=Alpha*Sa;Da=0;for k=1:n rik=abs(Z(i)-Z(k); %if Rrik Da=Da+rik; %endendQa=Sa*Da; %选择操作function ret =select(individuals,sizepop)individuals.fitness=1./(individuals.fitness);sumfitness=sum(individuals.fitness);sumf

3、=individuals./fitness;index=;for i =1:sizepop pick=rand; while pick=0 pick=rand; end for j =1:sizepop pick =pick-sumf(j); if pickpcross continue; end flag=0; while flag=0 pick=rand; while pick=0 pick=rand; end pos=ceil(pick.*sum(lenchrom); pick=rand; v1=chrom(index(1),pos); v2=chrom(index(2),pos); c

4、hrom(index(1),pos)=pick*v2+(1-pick)*v1; chrom(index(2),pos)=pick*v1+(1-pick)*v2; flag1=test(lenchrom,bound,chrom(index(1),:),fcode); flag2=test(lenchrom,bound,chrom(index(2),:),fcode); if flag1*flag2=0 flag=0; else flag=1; end endendret= chrom; % 变异操作 function ret=Mutation(pmutation,lenchrom,chrom,s

5、izepoppop,bound)pick=rand;while pick=0 pick=rand;endindex=ceil(pick*sizepop);pick=rand;if pickpmutation continue;endflag=0;while flag=0 pick =rand; while pick=0 pick=rand; end pos=ceil(pick*sum(lenchrom); v=chrom(i,pos); v1=v-bound(pos,1); v2=bound(pos,2)-v; pick=rand; if pick0.5 delta=v2*(1-pick(1-

6、pop(1)/pop(2)2); chrom(i,pos)=v+delta; else delta=v1*(1-pick(1-pop(1)/pop(2)2); chrom(i,pos)=v-delta; end flag=test(lenchrom,bound,chrom(1,:),fcode);endendendret=chrom;endend主函数clcclear maxgen=200;sizepop=20;pcross=0.6;pmutation=0.01;lenchrom=1 1 1 1 1;bound=0 0.9*pi;0 0.9*pi;0 0.9*pi;0 0.9*pi;0 0.9

7、*pi; individuals=struct(fitness,zeros(1,sizepop),chrom,);avgfitness=;bestfitness=;bestchrom=;for i =1:sizepop individuals.chrom(1,:)=code(lenchrom,bound); x=individuals.chrom(i,:); individuals,fitness(i)=fun(x);end bestfitness, bestindex=max(individuals.fitness);bestchrom=individuals.chrom(bestindex

8、,:);avgfitness=sum(individuals.fitness)/sizepop;trace=; for i=1:maxgen individuals=Select(individuals,sizepop); avggitness=sum(individuals.fitness)/sizepop; individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound); individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizep

9、op,i maxgen,bound); if mod(i,10)=0 individuals.chrom=nonlinear(individuals.chrom,sizepop); end for j=1:sizepop x=individuals.chrom(j,:); individuals.fitness(j)=fun(x); end newbestfitness,newbestindex=max(individuals.fitness); if bestfitnessnewbestfitness; bestfitness=newbestfitness; bestchrom=individuals.chrom(newbestindex,:); end avgfitness=suindividuals.fitness/sizepop; trace=trace;avgfitness bestfitness;end

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

当前位置:首页 > IT计算机/网络 > 其它相关文档

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