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

📄 ga_function.m

📁 该算法是综合遗传算法和神经网络算法的综合性算法
💻 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 + -