张鹏 遗传算法作业Word下载.docx

上传人:b****4 文档编号:17576756 上传时间:2022-12-07 格式:DOCX 页数:13 大小:117.87KB
下载 相关 举报
张鹏 遗传算法作业Word下载.docx_第1页
第1页 / 共13页
张鹏 遗传算法作业Word下载.docx_第2页
第2页 / 共13页
张鹏 遗传算法作业Word下载.docx_第3页
第3页 / 共13页
张鹏 遗传算法作业Word下载.docx_第4页
第4页 / 共13页
张鹏 遗传算法作业Word下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

张鹏 遗传算法作业Word下载.docx

《张鹏 遗传算法作业Word下载.docx》由会员分享,可在线阅读,更多相关《张鹏 遗传算法作业Word下载.docx(13页珍藏版)》请在冰豆网上搜索。

张鹏 遗传算法作业Word下载.docx

 

附录一

functionGACS

%UNTITLEDSummaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

%p表示适应度百分数;

L系列表示任何不保留数据

P=0;

%P表示适应度之和;

r表示函数值;

M表示复制数

%nx表示x的总个数

%ny表示y的总个数

%I系列是i系列的保留变量组

I1=0;

I2=0;

MAX2R=0;

N=20;

%表示每一代染色体数

n1=3;

%表示生成二进制数整数的位数

n2=5;

%表示生成二进制数小数的位数

N1=15;

%表示遗传的代数

Rstx=0:

0.001:

8;

%x的值

Rsty=0:

%y的值

nx=length(Rstx);

ny=length(Rsty);

Rstxnx=Rstx(randperm(nx));

%对x排序

Rstyny=Rsty(randperm(ny));

%对y排序

PB=0.01;

%变异的概率

M1=(n1+n2)*N;

%M1表示染色体总的二进制位数

XMAX2R=1:

1:

N1;

%m1表示变异的位置

%选择初始种群

fori=1:

N

ssx(i)=Rstxnx(i);

ssy(i)=Rstyny(i);

end

x=ssx;

y=ssy;

%选择结束

forj=1:

N1

%计算适应度

r=f(x,y);

xx(j,:

)=x;

yy(j,:

)=y;

R(j,:

)=r;

U2R=R(j,:

);

nU2R=length(U2R);

forui=1:

nU2R

ifMAX2R>

U2R(ui)

MAX2R=MAX2R;

else

MAX2R=U2R(ui);

end

YMAX2R(j)=MAX2R;

%适应值计算完毕,计算相应百分数得到转轮

fori=1:

P=r(i)+P;

p(i)=r(i)/P;

M(i)=round(N*p(i));

%转轮结束

%选择,复制开始

%被化简的程序

fori1=1:

switchM(i)

casei1

I1=i1;

fori2=1:

I1

ssx(I2+i2)=x(i);

ssy(I2+i2)=y(i);

break

I2=length(ssx);

%选择,复制结束

%单点交叉开始

Rssx=ssx(randperm(N));

Rssy=ssy(randperm(N));

forii=1:

RstJssx2(ii)=ZPTTo2B1(Rssx(ii),n1,n2);

RstJssy2(ii)=ZPTTo2B1(Rssy(ii),n1,n2);

%制作掩码

L=1:

n1+n2-1;

L1=L(randperm(n1+n2-1));

%L1

(1)作为交叉点

L1

(1)

y(i)=1;

L2=n1+n2-L1

(1);

L2

y(L1

(1)+i)=0;

YMT=ZP2BToT(y,n1,n2);

%掩码十进制

YMTQ=ZPTTo2B1(YMT,n1,n2);

%掩码二进制,加上权重的十进制掩码

2:

N-1

ANDxL(i)=bitand(RstJssx2(i),YMTQ);

%1左边留下

ANDxR(i)=RstJssx2(i)-ANDxL(i);

%1右边

ANDxL(i+1)=bitand(RstJssx2(i+1),YMTQ);

%2左

ANDxR(i+1)=RstJssx2(i+1)-ANDxL(i+1);

%2右边

LJxQ=ANDxL(i)+ANDxR(i+1);

LJxQ2B=dec2bin(LJxQ,n1+n2);

LJx=ZP2BToT1(LJxQ2B,n1,n2);

RstJx(i)=LJx;

LJxQ1=ANDxR(i)+ANDxL(i+1);

LJxQ2B1=dec2bin(LJxQ1,n1+n2);

LJx1=ZP2BToT1(LJxQ2B1,n1,n2);

RstJx(i+1)=LJx1;

ANDyL(i)=bitand(RstJssy2(i),YMTQ);

ANDyR(i)=RstJssy2(i)-ANDyL(i);

ANDyL(i+1)=bitand(RstJssy2(i+1),YMTQ);

ANDyR(i+1)=RstJssy2(i+1)-ANDyL(i+1);

LJyQ=ANDyL(i)+ANDyR(i+1);

LJyQ2B=dec2bin(LJyQ,n1+n2);

LJy=ZP2BToT1(LJxQ2B,n1,n2);

RstJy(i)=LJy;

LJyQ1=ANDyL(i)+ANDyR(i+1);

LJyQ2B1=dec2bin(LJyQ1,n1+n2);

LJy1=ZP2BToT1(LJxQ2B1,n1,n2);

RstJy(i+1)=LJy1;

%变异开始

m1=round(M1*PB);

ifm1>

%对x的变异

ssn21=randint(1,m1,n1+n2-2)+1;

%相应二进制数变换的位置

RstNG=randint(1,m1,N)+1;

fori11=1:

m1

ssn2=ssn21(i11);

%第几个染色体变异

di=RstNG(i11);

%变异染色体的第几位

Rstxdi2=ZPTTo2B(RstJx(di),n1,n2);

%di的x染色体的个数准备变异的二进制数

Rstxdissn2T=bin2dec(Rstxdi2(ssn2));

%准备变异ssn2处的编程的十进制数

Rstxdi21=abs(Rstxdissn2T-1);

ifRstxdissn2T>

ifssn2>

n1

RstJx(di)=abs(RstJx(di)-2^(-(ssn2-n1)));

else

RstJx(di)=abs(RstJx(di)-2^(n1-ssn2+1-1));

RstJx(di)=abs(RstJx(di)+2^(-(ssn2-n1)));

RstJx(di)=abs(RstJx(di)+2^(n1-ssn2+1-1));

%对y的变异

Rstydi2=ZPTTo2B(RstJy(di),n1,n2);

Rstydissn2T=bin2dec(Rstydi2(ssn2));

Rstydi21=abs(Rstydissn2T-1);

ifRstydissn2T>

RstJy(di)=abs(RstJy(di)-2^(-(ssn2-n1)));

RstJy(di)=abs(RstJy(di)-2^(n1-ssn2+1-1));

RstJy(di)=abs(RstJy(di)+2^(-(ssn2-n1)));

RstJy(di)=abs(RstJy(di)+2^(n1-ssn2+1-1));

%变异结束

x=RstJx;

y=RstJy;

j=1+j;

xx=unique(xx);

yy=unique(yy);

[X,Y]=meshgrid(xx,yy);

Z=f(X,Y);

figure

(1)

surf(X,Y,Z)

title('

张鹏遗传算法作业三维surf图'

xlabel('

x'

ylabel('

y'

zlabel('

F函数值'

figure

(2)

mesh(X,Y,Z)

张鹏遗传算法作业三维mesh图'

figure(3)

plot(XMAX2R,YMAX2R)

grid;

遗传的代数'

每一代的最大值'

axis([0N1+0.101.1])

set(gca,'

ytick'

[0:

N1+1])

0.1:

1.1])

张鹏遗传算法作业'

functionff=f(x,y)

f1=sin(pi*(x-3)).*(pi*(x-3)).^(-1);

f11=abs(f1);

f2=sin(pi*(y-3)).*(pi*(y-3)).^(-1);

f22=abs(f2);

ff=f11.*f22;

functionDd=ZPTTo2B(y,n1,n2)

yn1=dec2bin(y,n1);

yn11=bin2dec(yn1);

%整数部分的十进制数值

yn21=y-yn11;

%小数部分的十进制数

yn2=ZPx2b(yn21,n2);

%小数不分的二进制数

yn22=bin2dec(yn2);

yn12=yn11*2^n2;

yn1to2=yn12+yn22;

Dd=dec2bin(yn1to2,n1+n2);

functionD=ZPx2b(x,N)%x为小数,N为二进制小数的位数

a=x*2;

ifa>

=1

b=a-1;

c(i)=1;

b=a;

c(i)=0;

a=b*2;

d=0;

d=c(i)*2^(N-i)+d;

D=dec2bin(d,N);

functionDd=ZPTTo2B1(y,n1,n2)

Dd1=dec2bin(yn1to2,n1+n2);

Dd=bin2dec(Dd1);

functiond=ZP2BToT(y,n1,n2)

a=0;

b=0;

a=y(n1-i+1)*2^(i-1)+a;

n2

b=y(i+n1)*2^(-i)+b;

d=a+b;

functiond=ZP2BToT1(y,n1,n2)

forij1=1:

a=bin2dec(y(n1-ij1+1))*2^(ij1-1)+a;

b=bin2dec(y(ij1+n1))*2^(-ij1)+b;

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

当前位置:首页 > 求职职场 > 职业规划

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

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