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

📄 jack_immune.m

📁 遗传免疫是算法的程序 大家可以看看 遗传免疫算法 我也是刚开始学 传上去大家共同学习
💻 M
字号:
function Sol=jack_immune_clonal(w0,pop_size,best_pop_size,clone_size_factor,KImmune_fin,Max_error)
tic
%--------------------------------------------------------------------------
% Djaghloul Mehdi ClonalG Immune Algorithm for Optimiation
%--------------------------------------------------------------------------
% sol=jack_immune(w0,pop_size,best_pop_size,Nbre_var,clone_size_factor,KImmune_fin,Max_error)
% w0 : Solution candidate (initial)
% pop_size : Taille de la population d'antcorps
% best_pop_size : Taille de la meilleur population d'antcorps
% clone_size_factor : Facteur de colnage
% KImmune_fin : Nbre max d'iterations 
% Max_error : Tolerence en erreure pour solution 
% You muste create a fitness function named 'fit_fun' 
%--------------------------------------------------------------------------

%--------------------------------------------------------------------------
% I N I T I A L I S A T I O N 
%------------------------------------------------------------------------

Nbre_var=length(w0);
Ini_Ab=[w0 rand(Nbre_var,pop_size-1)];


%--------------------------------------------------------------------------
% % E N D * I N I T I A L I S A T I O N 
%--------------------------------------------------------------------------


%-------------------------------------------------------------------------- 
% ClonalG 
%--------------------------------------------------------------------------
%--------------------------------------------------------------------------

for kImmune=1:KImmune_fin
     
%-----------%
% Selection % %selection des plus efficace des Ab
%-----------%
for ksel=1:pop_size
    Sel_Ab_cri(ksel)=fit_fun(Ini_Ab(:,ksel));
end
% Order
Min_fit_sel=[];
Min_fit=[];
for ksel=1:pop_size

    [sel index]=min(Sel_Ab_cri);
    
    Min_fit=[Min_fit ,sel];
    Min_fit_sel=[ Min_fit_sel ,Ini_Ab(:,index) ];
    
    if index <= (length(Sel_Ab_cri))
        Sel_Ab_cri(index)=Sel_Ab_cri(end);
    end
    
    Sel_Ab_cri=Sel_Ab_cri(1:end-1);
    
end

Sel_best_pop=Min_fit_sel(:,1:best_pop_size);
Fit_best_pop=Min_fit(:,1:best_pop_size);

%--------------------------------------------------------------------------
%-----------------------%
% Fitness Normalisation % 
%-----------------------% 

Max_Fit=max(Fit_best_pop);
Min_Fit=min(Fit_best_pop);
Fit_best_pop=Fit_best_pop/Max_Fit;

%--------------------------------------------------------------------------

%--------------------------------------------------------------------------
%---------%
% Clonage % clonage des meilleurs anticorps
%---------%     
Nc=[];
for kclone=1:best_pop_size
%----------%
% Maturate % 
%----------%    
   maturat_rate= (1)*exp(-Fit_best_pop(kclone));
   clone_best_pop= Sel_best_pop(:,kclone)+ maturat_rate*((rand(Nbre_var,1)-rand(Nbre_var,1))*Min_Fit);
%--------------------------------------------------------------------------   
   Nci_size=round((clone_size_factor*pop_size)/kclone);
   
   Nci=[];
   
   for kNci=1:Nci_size       
       Nci=[Nci clone_best_pop];
   end
   
   Nc=[Nc Nci];   %Les clones 
end 
%--------------------------------------------------------------------------
%-------------%
%Re-Selection % %selection des plus efficace des Ab
%-------------%

for kNcsel=1:length(Nc)
    Sel_Nc_cri(kNcsel)=fit_fun(Nc(:,kNcsel));
end
% Order
Min_fit_Ncsel=[];

for kNcsel=1:length(Nc)

    [Ncsel index]=min(Sel_Nc_cri);
    
    Min_fit=[Min_fit ,sel];
    Min_fit_Ncsel=[ Min_fit_Ncsel ,Nc(:,index) ];
    
    if index <= (length(Sel_Ab_cri))
        Sel_Nc_cri(index)=Sel_Nc_cri(end);
    end
    
    Sel_Nc_cri=Sel_Nc_cri(1:end-1);
    
end

Re_Sel_best_pop=Min_fit_Ncsel(:,1:best_pop_size);

Sol_tr=Min_fit_Ncsel(:,1);
Sol=Sol_tr;
minF=fit_fun(Sol_tr);

    if  minF < Max_error
          Sol=Sol_tr;
        break
    else 
    Ini_Ab(:,1:best_pop_size)=Re_Sel_best_pop;
    end
%--------------------------------------------------------------------------
kImmune;
%-------------------------------------------------------------------------- 
% END clonalG
%--------------------------------------------------------------------------
end
toc
 



⌨️ 快捷键说明

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