📄 ga_function.m
字号:
%仿真遗传主程序 %计算的染色体均方误差 fitness=8/sum(error.^2)
function GA_function(uf,sumuf)
% tic
% clear
Popsize=5;%初始化种群数目
P_mutation=0.1;%均匀变异概率
P_cross=0.6;%交叉概率
real chrom;
real currentbest_value;
m=25; %权值和阈值的初始化范围
chrom=2*m.*rand(Popsize,5)-m; % 产生初始种群
temchrom=zeros(size(chrom));
% p=[0 0 0 0 1 1 1 1;0 0 1 1 0 0 1 1;1 0 1 0 1 0 1 0]; %输入值
% aim=[0 1 1 0 1 0 0 1]'; % 输出值
p=[uf;sumuf];
aim=0;
ecope=10;
currentbest=zeros(ecope,5);
currentbest_value=zeros(ecope,1);
%fitness_gene=fitness(chrom,p,aim);%计算的染色体均方误差 fitness=8/sum(error.^2)
fitness_gene=fitness(chrom,p,aim);
[c_value c_order]=max(fitness_gene);
for k=1:ecope
%保留当前最好染色体
[c_value c_order]=max(fitness_gene);
currentbest(k,:)=chrom(c_order,:);
currentbest_value(k)=c_value;
% 选择过程
fit=cumsum(fitness_gene)/sum(fitness_gene);
N=Popsize;
s=select(fit,N);
temchrom=chrom(s,:);
%交叉
P=rand(1,N);
prob=find(P<P_cross);
crosschrom=temchrom(prob,:);
crosschrom=cross_over(crosschrom);
temchrom(prob,:)=crosschrom;
%变异
temchrom=mutation(temchrom,P_mutation,Popsize,ecope);
chrom=temchrom;
% 计算交叉变异之后的染色体的适应度
fitness_gene=fitness(chrom,p,aim);
fit=cumsum(fitness_gene)/sum(fitness_gene);
N=Popsize;
s=select(fit,N-1);
[s_value s_order]=max(fitness_gene);
if s_value<currentbest_value(k) %精因选择
chrom=[chrom(s,:);currentbest(k,:)];
fitness_gene=[fitness_gene(s);currentbest_value(k)];
else
s=[s s_order(1)];
chrom=chrom(s,:);
fitness_gene=fitness_gene(s);
end
% if currentbest_value(k)==1
% break
% end
end
%图表显示
load training_data1 jn
i=1:k;
meansquare(1:k,jn)=1./currentbest_value(1:k,:);
% toc
% y(k)
save GA_data;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -