📄 gaquzhou.m
字号:
cputime=0;tic;
clc;clear all
%定义遗传算法
NIND=40; %个体数目(Number of individuals)
NVAR=6; %变量数目
MAXGEN=80; %最大遗传代数(Maximum number of generations)
PRECI=20; %变量的二进制位数(Precision of variables)
GGAP=0.9; %代沟(Generation gap)
FieldD=[rep([PRECI],[1,NVAR]);rep([0;100],[1,NVAR]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND, NVAR*PRECI); %初始种群
gen=0; %代计数器
trace=zeros(2,MAXGEN);
x=bs2rv(Chrom, FieldD); %计算初始种群的十进制转换
ObjV=fitness(x); %计算目标函数值
ObjV=ObjV';
while gen<MAXGEN
FitnV=ranking(ObjV); %分配适应度值(Assign fitness values)
SelCh=select('sus', Chrom, FitnV, GGAP); %选择
SelCh=recombin('xovsp', SelCh, 0.7); %重组
SelCh=mut(SelCh); %变异
x=bs2rv(SelCh, FieldD); %子代个体的十进制转换
ObjVSel= fitness(x); %计算子代的目标函数值
ObjVSel=ObjVSel';
[Chrom ObjV]=reins(Chrom,SelCh,1,[1 0.9],ObjV,ObjVSel); %重插入子代的新种
gen=gen+1; %代计数器增加
%输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号
[Y,I]=min(ObjVSel);
trace(1,gen)=min(ObjV); %遗传算法性能跟踪
trace(2,gen)=sum(ObjV)/length(ObjV);
x0=bs2rv(Chrom(I,:),FieldD);
end
figure;
plot(trace(1,:));
hold on;
plot(trace(2,:),'-.');grid
legend('解的变化','种群均值的变化')
x0,Y
toc;
cputime=toc;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -