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