matlab遗传算法求最大值问题例题完整代码_精品文档.txt资料文档下载

上传人:b****1 文档编号:13143103 上传时间:2022-10-06 格式:TXT 页数:5 大小:5.49KB
下载 相关 举报
matlab遗传算法求最大值问题例题完整代码_精品文档.txt资料文档下载_第1页
第1页 / 共5页
matlab遗传算法求最大值问题例题完整代码_精品文档.txt资料文档下载_第2页
第2页 / 共5页
matlab遗传算法求最大值问题例题完整代码_精品文档.txt资料文档下载_第3页
第3页 / 共5页
matlab遗传算法求最大值问题例题完整代码_精品文档.txt资料文档下载_第4页
第4页 / 共5页
matlab遗传算法求最大值问题例题完整代码_精品文档.txt资料文档下载_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

matlab遗传算法求最大值问题例题完整代码_精品文档.txt资料文档下载

《matlab遗传算法求最大值问题例题完整代码_精品文档.txt资料文档下载》由会员分享,可在线阅读,更多相关《matlab遗传算法求最大值问题例题完整代码_精品文档.txt资料文档下载(5页珍藏版)》请在冰豆网上搜索。

matlab遗传算法求最大值问题例题完整代码_精品文档.txt资料文档下载

BitLength=ceil(log2((boundsend-boundsbegin)&

#39;

./precision));

popsize=50;

%��ʼ��Ⱥ��С

Generationnmax=12;

%������

pcrossover=0.90;

%�������

pmutation=0.09;

%�������

%������ʼ��Ⱥ

population=round(rand(popsize,BitLength));

%������Ӧ�ȣ�������Ӧ��Fitvalue���ۻ�����cumsump

[Fitvalue,cumsump]=fitnessfun(population);

Generation=1;

whileGeneration&

lt;

Generationnmax+1

forj=1:

2:

popsize

%ѡ�����

seln=selection(population,cumsump);

%�������

scro=crossover(population,seln,pcrossover);

scnew(j,:

)=scro(1,:

);

scnew(j+1,:

)=scro(2,:

smnew(j,:

)=mutation(scnew(j,:

),pmutation);

smnew(j+1,:

)=mutation(scnew(j+1,:

end

population=smnew;

%�������µ

���Ⱥ

%��������Ⱥ����Ӧ��

%��¼

��ǰ����õ

���Ӧ�Ⱥ�ƽ����Ӧ��

[fmax,nmax]=max(Fitvalue);

fmean=mean(Fitvalue);

ymax(Generation)=fmax;

ymean(Generation)=fmean;

��ǰ�������Ⱦɫ�����

x=transform2to10(population(nmax,:

));

%�Ա���ȡֵ��Χ��[-22]����Ҫ�Ѿ����Ŵ���������Ⱦɫ�����ϵ�[-22]����

xx=boundsbegin+x*(boundsend-boundsbegin)/(power((boundsend),BitLength)-1);

xmax(Generation)=xx;

Generation=Generation+1;

Generation=Generation-1;

%��ʾ���

Bestpoplation=xx

Besttargetfunvalue=targetfun(xx)

%���ƾ����Ŵ���������Ӧ�����ߡ�һ��ģ����������������Ⱥ��ƽ����Ӧ���������Ӧ�������������໥

%��ͬ����̬����ʾ�㷨�������еĺ�˳����û

�г����𵴣

�������ǰ���£

������Ӧ�ȸ���������ɴ���û

�з�������������Ⱥ�Ѿ�����

%��ͼ

figure

(1);

hand1=plot(1:

Generation,ymax);

set(hand1,&

linestyle&

&

-&

linewidth&

1.8,&

marker&

*&

markersize&

6)

holdon;

hand2=plot(1:

Generation,ymean);

set(hand2,&

color&

r&

h&

xlabel(&

��������&

ylabel(&

���/ƽ����Ӧ��&

xlim([1Generationnmax]);

legend(&

�����Ӧ��&

ƽ����Ӧ��&

boxoff;

holdoff;

%�ӳ�������Ⱥ����������������ƴ洢Ϊcrossover.m

functionscro=crossover(population,seln,pc);

BitLength=si

ze(population,2);

pcc=IfCroIfMut(pc);

%���ݽ�����ʾ����Ƿ���н��������1���ǣ�0���

ifpcc==1

chb=round(rand*(BitLength-2))+1;

%��[1,BitLength-1]��Χ���������һ������λ

scro(1,:

)=[population(seln

(1),1:

chb)population(seln

(2),chb+1:

BitLength)];

scro(2,:

)=[population(seln

(2),1:

chb)population(seln

(1),chb+1:

else

)=population(seln

(1),:

)=population(seln

(2),:

%�ӳ���:

������Ӧ�Ⱥ������������ƴ洢Ϊfitnessfun

function[Fitvalue,cumsump]=fitnessfun(population);

popsize=size(population,1);

%��popsize������

fori=1:

popsize

x=transform2to10(population(i,:

%��������ת��Ϊʮ����

%ת��Ϊ[-22]�����ʵ��

Fitvalue(i)=targetfun(xx);

%���㺯��ֵ������Ӧ��

%����Ӧ�Ⱥ�������һ����С��������Ա㱣֤��Ⱥ��ӦֵΪ����

Fitvalue=Fitvalue&

+230;

%����ѡ�����

fsum=sum(Fitvalue);

Pperpopulation=Fitvalue/fsum;

%�����ۻ�����

cumsump

(1)=Pperpopulation

(1);

fori=2:

cumsump(i)=cumsump(i-1)+Pperpopulation(i);

cumsump=cumsump&

;

%�ӳ�������Ⱥ����������������ƴ洢Ϊmutation.m

functionsnnew=mutation(snew,pmutation);

BitLength=size(snew,2);

snnew=snew;

pmm=IfCroIfMut(pmutation);

%���ݱ�����ʾ����Ƿ���б��������1���ǣ�0���

ifpmm==1

chb=round(rand*(BitLength-1))+1;

%��[1��BitLength]��Χ���������һ������λ

snnew(chb)=abs(snew(chb)-1);

%�ӳ����ж��Ŵ������Ƿ���н������죬�������ƴ洢ΪIfCroIfMut.m

functionpcc=IfCroIfMut(mutORcro);

test(1:

100)=0;

l=round(100*mutORcro);

1)=1;

n=round(rand*99)+1;

pcc=test(n);

����Ⱥѡ��������������ƴ洢Ϊselection.m

functionseln=selection(population,cumsump);

%����Ⱥ��ѡ����������

2

r=rand;

%����һ�������

prand=cumsump-r;

j=1;

whileprand(j)&

j=j+1;

seln(i)=j;

%ѡ�и�������

%�ӳ��򣺽

���������ת��Ϊʮ���������������ƴ洢Ϊtransform2to10.m

functionx=transform2to10(Population);

BitLength=size(Population,2);

x=Population(BitLength);

BitLength-1

x=x+Population(BitLength-i)*power(2,i);

�����Ż����ֵ�򼫴

�ֵ�������⣬Ŀ�꺯��������Ϊ��Ӧ�Ⱥ���

%�������ƴ洢Ϊtargetfu

n.m

functiony=targetfun(x);

%Ŀ�꺯��

y=200*exp(-0.05*x).*sin(x);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1