function [xv,fv]=G_A(fitness,a,b,NP,NG,pc,pm,eps)
%上限a
%上限b
%种群大小NP
%遗传代数NG
%交叉概率pc
%变异概率pm
%离散精度
%第一步产生初始种群x,产生之前需要根据离散精度确定串长
L=ceil(log2((b-a)/eps));
x=Initial(L,NP);
for i=1:NP
xdec(i)=dec(a,b,x(i,:),L);
end
%第二步 选择 交叉 变异 循环
for i=1:NG
%选择 轮盘赌选择法
fx=fitness(xdec);%适应度
fxp=fx/sum(fx);%选择概率
fxa(1)=fxp(1);%累计概率
for j=2:NP
fxa(j)=fxa(j-1)+fxp(j);
end
%开始选择父体
sat=rand();
for k=1:NP
if sat<=fxa(k)
father=k;
break;
end
end
%随机选取母体
mother=ceil(rand()*NP);
nx=x;
%单点交叉
cutp=ceil(rand()*L);
r1=rand();
if r1<=pc
nx(i,1:cutp)=x(father,1:cutp);
nx(i,cutp+1:L)=x(mother,cutp+1:L);
r2=rand();%是否变异
if r2<pm;
cum=ceil(rand()*L);
nx(i,cum)=~nx(i,cum);
end
end
x=nx;
for i=1:NP
xdec(i)=dec(a,b,x(i,:),L);
end
%选择较好的子代
fv=-inf;
for i=1:NP
fitx=fitness(dec(a,b,x(i,:),L));
if fitx>fv
fv=fitx;
xv=dec(a,b,x(i,:),L);
end
end
end
yichuansuanfa.rar_遗传算法
版权申诉
146 浏览量
2022-09-24
08:36:22
上传
评论
收藏 1KB RAR 举报
小波思基
- 粉丝: 72
- 资源: 1万+