📄 simtest3.m
字号:
function genetic
global a b oldpop newpop popsize lchrom maxgen pcross pmutation fitu;
global min max minpp maxpp k lc gen s;
a=[0 0 0];
b=[2 2 1];
popsize=6;
lchrom=18;
lc=lchrom/3;
% maxgen=10;
pcross=[0.6 0.6 0.6];
pmutation=0.02;
gen=0;
k=1;
% %********************************群体的初始化*******************************%
for s=1:popsize
oldpop{s}.chrom=randint(1,18);
oldpop{s}.dvalue=decode(oldpop{s}.chrom);
kp=oldpop{s}.dvalue(1);
ki=oldpop{s}.dvalue(2);
kd=oldpop{s}.dvalue(3);
oldpop{s}.fitness=1; %计算每个个体的适应度%
oldpop{s}.parent1=0;
oldpop{s}.parent2=0;
oldpop{s}.xsite=0;
% aa=oldpop{k}.fitness;
end
statistics(oldpop);
% %**************************************************************************
sim('test1')
J
end
%*********************译码*************************************
function dval=decode(x)
global a b;
m=[0 0 0];
for i=1:3
for j=1:6
m(i)=m(i)+x((i-1)*6+j)*(2^(6-j));
end
end
for i=1:3
dval(i)=a(i)+m(i)*(b(i)-a(i))/(2^6-1);
end
end
%**************************************************************
%*******************群体适应度计算******************************
function statistics(pop)
global newpop oldpop popsize min max maxpp minpp;
sumfitness=pop{1}.fitness;
min=pop{1}.fitness;
max=pop{1}.fitness;
maxpp=1;
minpp=1;
for j=1:popsize
sumfitness=sumfitness+pop{j}.fitness;
if (pop{j}.fitness>max)
max=pop{j}.fitness;
maxpp=j;
end
if(pop{j}.fitness<min)
min=pop{j}.fitness;
minpp=j;
end
end
avg=sumfitness/popsize;
end
%************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -