⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.m

📁 利用遗传算法训练神经网络的matlab程序
💻 M
字号:
%仿真《西北师范大学学报》的遗传主程序     %计算的染色体均方误差  fitness=8/sum(error.^2)
% tic

clear
Popsize=40;
P_mutation=0.1;
P_cross=0.6;
real chrom;
real currentbest_value;
m=25;                 %权值和阈值的初始化范围
chrom=2*m.*rand(Popsize,21)-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]';      % 输出值


ecope=100;
currentbest=zeros(ecope,21);
currentbest_value=zeros(ecope,1);

fitness_gene=fitness(chrom,p,aim);%计算的染色体均方误差  fitness=8/sum(error.^2)
 
[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

%图表显示

i=1:k;
y=1./currentbest_value(1:k,:);

plot(i,y,'r:');
title(' sum root mean square error');
% toc
y(k)
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -