No BSD License  

Highlights from
Genetic Algorithm

image thumbnail
from Genetic Algorithm by MEKHMOUKH Abdenour
Genetic Algorithm

ag.m
%**************************************************************************
%     Programme Algorithme Gntique pour maximiser une fonction  n
%           variables pour notre cas nombre de variable =2
%**************************************************************************
%                   Dvelopp par :MEKHMOUKH Abdenour
%                     1 Anne Post Graduation ATS 
%           Dpartement d'Electronique Universit de Bejaia                                                                     
%                                2005/2006
%**************************************************************************





%**************************************************************************
%                         Programme Principal :
%**************************************************************************
clear all;
load parametres;
clc;
%**************************************************************************
%                  Initialisation des parametres :
%**************************************************************************
nbregeneration = ng;	% Nombre de gnrations
taillepopulation = ni;		% Tailee de la population
probdecroisement = pc;	% Probabilite de croisement
probdemutation = pm;	% Probabilit de mutation
nbredebits = nb;		    % Nombre de bits pour chaque variable
%**************************************************************************
disp('*************************************************************');
disp('            Paramtres de l''Algorithme Gntique            ');
disp('*************************************************************');

disp([' Nombre de Gnrations     =',num2str(ng)]);
disp([' Nombre d''individus       =',num2str(ni)]);
disp([' Probabilite de croisement =',num2str(pc)]);
disp([' Probabilit de mutation   =',num2str(pm)]);
disp([' Nombre de bits (Codage)   =',num2str(nb)]);
disp('*************************************************************');




%**************************************************************************
%                    Le trac de la fonction  maximiser
%**************************************************************************
figure;
blackbg;
obj_fcn = 'mafonc';	
nbredevariable = 2;		% Nombre de variables
intervalle = [-5, 5; -5, 5];	% intervalle pour les variables

fonction;%appel de la fonction pour la tracer

	
%**************************************************************************


%**************************************************************************
%                      Gnration de population alatoirement
%*************************************************************************
popu = rand(taillepopulation, nbredebits*nbredevariable) > 0.5; 

haut = zeros(nbregeneration, 1);
moyen = zeros(nbregeneration, 1);
bas = zeros(nbregeneration, 1);
%**************************************************************************


%**************************************************************************
% Evaluation de la fonction objective (  maximiser) pour chaque individu
%**************************************************************************

disp('*************************************************************');
disp(['         Evaluation de f(x,y) pour ',num2str(nbregeneration),' Gnrations']);
disp('*************************************************************');
for i = 1:nbregeneration;
  

	fcn_evaluation = evalpopu(popu, nbredebits, intervalle, obj_fcn);


	
	haut(i) = max(fcn_evaluation );
	moyen(i) = mean(fcn_evaluation );
	bas(i) = min(fcn_evaluation );
%**************************************************************************
	
%**************************************************************************   
%                        Affiche  l'ecran
%**************************************************************************
	[meilleur, index] = max(fcn_evaluation );
	fprintf('Gnration %i: ', i);
	fprintf('f(%f, %f)=%f\n', ...
			bit2num(popu(index, 1:nbredebits), intervalle(1,:)), ...
			bit2num(popu(index, nbredebits+1:2*nbredebits), intervalle(2,:)), ...
			meilleur);
     
	%----------------------------------------------------------------------
	% Gnration de la nouvelle population  par selection, croisement et mutation
    %----------------------------------------------------------------------
	popu = nextpopu(popu, fcn_evaluation , probdecroisement, probdemutation);

   xopt=bit2num(popu(index, 1:nbredebits), intervalle(1,:));%x optimal
   yopt=bit2num(popu(index, nbredebits+1:2*nbredebits), intervalle(2,:));%y optimal
  
  xopts(i)=xopt ;
  yopts(i)=yopt ;
   savefile = 'resultats.mat';

save(savefile,'xopt','yopt','meilleur')
   
end
disp('*************************************************************');
disp(['       Fin d''valuation de f(x,y) pour les ',num2str(nbregeneration),' Gnrations']);
disp('*************************************************************');
disp( '       Rsultats :  ');
disp(['                       x =',num2str(xopt)]);
disp(['                       y =',num2str(yopt)]);
disp(['                       f(',num2str(xopt),',',num2str(yopt),') =',num2str(meilleur)]);
disp('*************************************************************');

%**************************************************************************
%                        Evolution de x et y  
%**************************************************************************
xevolution =xopts ;
yevolution = yopts;
grid on
subplot(2,1,1); plot(xevolution);xlabel('Gnrations'); ylabel('x');
subplot(2,1,2); plot(yevolution);xlabel('Gnrations'); ylabel('y');
%**************************************************************************


figure;
blackbg;
x = (1:nbregeneration)';
plot(x, haut, 'o', x, moyen, 'x', x, bas, '*');
hold on;
plot(x, [haut moyen bas]);
hold off;
legend('Meilleur', 'Moyenne', 'Faible');
xlabel('Gnrations'); 
ylabel('F(x,y)');
%**************************************************************************

Contact us at files@mathworks.com