Vous êtes sur la page 1sur 7

ELEC 2311 - Projet Tutoriel Algorithme Génétique Dest.

: Etudiants
27-11-08 v.1 Auteur : JD

Introduction :

L’objectif de ce tutoriel est de se familiariser avec les méthodes d’optimisation de type méta-heuristique et
particulièrement avec la famille des algorithmes génétiques. Les deux avantages principaux de ces algorithmes sont
la possibilité de travailler en multi-objectifs et la particularité d’être un algorithme de type global, c'est-à-dire qu’en
partant de solutions initiales différentes, il est capable de retrouver la même solution finale. Cette particularité lui
donne la capacité de retrouver les minima globaux.

Définition du problème :

Le problème proposé concerne le design de deux barres attachées au plafond par une extrémité et reliées entre-elles
en leur seconde extrémité. A cette liaison s’ajoute une force verticale de 100kN. Les trois paramètres de design sont
x1, x2 et y. Les variables x1 et x2 représentent les sections (en m²) des barres et la variable y représente la hauteur du
point d’intersection (en m). Le schéma ci-dessous représente le problème à étudier.

Le problème consiste à minimiser deux fonctions d’évaluations, le volume des barres et les contraintes en traction
dans celles-ci :

r
f1 ( x , y ) = x1 16 + y 2 + x2 1 + y 2 ,
r
f 2 ( x , y ) = max(σ AC , σ BC )

où σAC et σBC, les contraintes normales dans chacune des deux barres, sont données par les relations :

20 16 + y 2
σ AC =
y ⋅ x1
80 1 + y 2
σ BC =
y ⋅ x2

Les paramètres de design sont contraints par les relations suivantes :

0 ≤ x1 , x2 ≤ Amax ,
1≤ y ≤ 3
A cela s’ajoute également une contrainte relevant de la résistance des matériaux en traction :

max(σ AC ,σ BC ) ≤ S max

Les valeurs choisies pour Smax et pour Amax sont respectivement 105 kPa et 0.01 m2.

1
Structure de l’algorithme génétique :
L’algorithme génétique proposé se base sur un concept classique. Il travail à partir d’une population composée de N
individus sur qui des opérations mathématiques élémentaires de croisement et de mutation sont appliquées.

Chaque individu représente un jeu de paramètre variant entre 0 et 1, x1, x2 et y sous la forme normalisée dans notre
cas, qui sera utilisé dans les fonctions d’évaluation pour estimer l’adaptation de l’individu à son milieu. Le schéma
suivant représente les principales étapes et actions de l’algorithme :

Population Initiale : La population sera définie par un nombre


de N individus la composant et qui sera constant.

Croisement : Cette opération mathématique permettra


d’utiliser les qualités de chaque individu lors de la période de
reproduction.

Mutation : Cette opération mathématique représente


l’opérateur d’exploration en permettant aux paramètres de se
balader dans le domaine de définition [0 ;1].

Population Enfant : La population est définie comme


possédant N individus provenant de N opérations de
reproduction. Le choix des parents peut être répétitif.

Sélection : On regroupe la population Enfant et Initiale pour


former un groupe de 2N individus. On ne sélectionne que les
meilleurs individus selon certains critères.

Population Elite : Représente les N meilleurs individus sortant


de la sélection. En fin de processus d’optimisation, c’est la
population de solution optimale.

L’opération de création d’un individu enfant est la combinaison d’une opération de croisement afin d’obtenir un
résultat provenant des parents et d’une opération de mutation afin d’obtenir une diversification possible selon une
certaine probabilité de mutation.

Croisement

L’opération de croisement se base sur la moyenne arithmétique des 2 individus parents sur chacun des paramètres de
design. Dans notre cas, cela donnera :

2
r r
r x p1 + x p 2
xenf =
2
y p1 + y p 2
y enf =
2

Mutation

L’opération de mutation permet à l’algorithme de générer des solutions originales dans le domaine des solutions.
Afin de ne pas provoquer une convergence trop lente, l’opération de mutation ne s’effectue sur un paramètre
qu’avec une probabilité fixée à Pmut.

La mutation s’effectue simplement en utilisant une variable aléatoire ε comprise entre -1 et 1.

X mut = X + ε , avec ε ∈ [− 1,1]

Cependant cette méthode permet au paramètre d’avoir des valeurs inférieures ou supérieures aux bornes [0,1]. Pour
éviter ce désagrément, le coefficient ε sera multiplié par un facteur de distance α variant entre 0 et 1. Ce facteur de
distance est calculé selon la distance minimale qui existe avec l’une des bornes :

d = min( X − B1 , B2 − X )

Dans le cas de l’algorithme, les bornes étant fixées à 0 et 1 :

d = min( X ,1 − X )

La valeur maximale ou minimale que peut avoir ε est d, ce qui amène à dire que α = d.

Sélection

La sélection des individus va se baser selon deux principes :

− Récupérer les meilleurs individus


− Diversifier au maximum les solutions

Lorsque l’on travaille avec plusieurs fonctions d’évaluation proposant un compromis entre-elles, il n’existe pas de
solution optimale répondant à toutes les fonctions d’évaluation (voir T.42 du cours). Afin de récupérer les meilleurs
individus, un classement par rang de non-dominance est nécessaire. La récupération des individus se fait rang par
rang de manière à recomposer une nouvelle population de N individus. Cependant, arrivé au dernier rang à ajouter,
il arrive souvent que celui-ci soit trop grand pour terminer la composition de la population finale. Un nouveau
facteur de décision intervient pour obtenir les individus les plus intéressants, c'est-à-dire ceux qui permettent de
diversifier les solutions. La méthode permettant d’évaluer cette diversification consiste à calculer la distance qui
existe entre les individus voisins dans le rang de non-dominance au sein du domaine des solutions. Il ne reste alors
qu’à récupérer les individus avec les distances les plus élevées.

Implémentation sur Matlab de l’algorithme génétique :


Structure du programme

Le programme est écrit sur Matlab et composé par une série de fichiers. Seuls deux de ces fichiers, c'est-à-dire
GA.m et evaluationFonction.m sont à modifier pour une simple utilisation du programme, mais rien n’empêche
une modification des autres fichiers pour améliorer les performances de l’algorithme. Celui-ci n’est qu’une version
non optimale au niveau du code, mais permet déjà d’obtenir de très bons résultats en des temps raisonnables.

Le schéma ci-dessous regroupe les fichiers utilisés ainsi que les liaisons entre-eux.

3
L’algorithme en temps que tel nécessite deux types d’intervention de la part de l’utilisateur. Le premier type est la
configuration des paramètres tels que les probabilités de mutation, le nombre de génération à effectuer etc. Ces
modifications sont à faire dans le fichier GA.m qui est le fichier à exécuter pour lancer l’algorithme. Le deuxième
type de modification est l’adaptation au problème. L’algorithme ne connait pas le problème à analyser, il faut donc
le lui soumettre. Pour cela, il suffit simplement de rentrer les fonctions d’évaluation et les contraintes dans le fichier
evaluationFonction.m.

Le schéma de droite représente finalement le fonctionnement de


l’algorithme en considérant les fichiers non-modifiables comme
étant une boite noire.

Il existe un transfert d’information important entre les


différentes boîtes, mais plus particulièrement entre l’algorithme
génétique et le fichier d’évaluation. Au cours de chaque
génération, l’algorithme fait appel N fois au fichier d’évaluation
pour évaluer chaque individu à la fois.

Les valeurs transmises au fichier d’évaluation sont sous la forme


vectorielle dont la taille dépend du nombre de variable réelle
utilisée.

Les valeurs retournées par la fonction d’évaluation Matlab sont


au nombre de deux vecteurs, un premier pour les évaluations et
un deuxième pour les contraintes. Leur dimension dépendant du
nombre de fonction d’évaluation et du nombre de contrainte
nécessaire.

4
GA.m

Les lignes de code suivantes se retrouvent dans le fichier GA.m. Elles permettent de configurer le nombre
d’individus, le nombre de générations, la probabilité de muter, le nombre de paramètres réels, le nombre de
fonctions d’évaluation et le nombre de contraintes.

% Nombre d'individu
nb_ind = 200;

% Nombre de génération (itération à effectuer)


nb_generation = 600;

% Probabilité de mutation
p_mut = 0.1; % ->10% de chance de muter

% Nombre de variables réelles


nb_xReal = 3;

% Nombre de fonction d'évaluation


nb_fitness = 2;

% Nombre de contrainte
nb_cstr = 1;

Tous ces paramètres sont envoyés dans la routine principale du programme :

% on appel le code principal


pop = main_GA(nb_ind, nb_generation, p_mut, nb_xReal, ...
nb_fitness, nb_cstr);

La solution finale est retournée par l’intermédiaire de la variable pop dont la structure est représentée ci-dessous.

5
evolutionFonction.m

Ce fichier permet d’évaluer un individu à la fois. Les paramètres d’entrées sont regroupés dans le vecteur X. La
première étape avant d’exploiter tel quel les informations provenant de ce vecteur, il convient de redimensionner les
valeurs sachant que les éléments X(1), X(2), … varient de 0 à 1. Dans le cas du problème à étudier, il faut considérer
que les paramètres x1 et x2 varient entre 0 et Amax qui vaut 0.01 [m²] et que le paramètre y varie entre 1 et 3.

x1 = X(1) * 0.01;
x2 = X(2) * 0.01;
y = X(3) * 2 + 1;

Il ne reste plus qu’à introduire les équations du problème. C'est-à-dire, d’abord définir les constantes Amax et Smax,
ensuite calculer les valeurs de σAC et σBC, ensuite calculer les fonctions d’évaluation et terminer par le calcul de la
contrainte. La valeur de 1000 pour le non respect de la contrainte est simplement une valeur choisit aléatoirement
servant de pénalité.

Amax = 0.01; % [m²]


Smax = 1e5; % [kPa]

sigmaAC = 20 * sqrt(16+y*y) / (y*x1);


sigmaBC = 80 * sqrt(1+y*y) / (y*x2);

fitness(1) = x1 * sqrt(16+y*y) + x2* sqrt(1+y*y);


fitness(2) = max(sigmaAC, sigmaBC);

cstr = 0;
if (max(sigmaAC, sigmaBC)>Smax)
cstr = 1000;
end

Résultats :

Les graphiques ci-dessous représentent les résultats. Celui de gauche est le front de Pareto obtenu. Les points verts
sont les populations enfants de la dernière génération, les points bleus sont les populations de parents de la dernière
génération et tous les individus sélectionnés sont mis en évidence par un cercle rouge. Les ordonnées représentent la
deuxième fonction d’évaluation et les abscisses représentent la première fonction d’évaluation.

En considérant le ratio suivant représentant le rapport entre le nombre de parent sélectionné et le nombre d’enfant
sélectionné :

6
S parent
r= ,
S enfant

on peut dire que lorsque l’algorithme débute ses générations, la valeur de r tendra plus vers 0 alors qu’en fin de
processus, il tendra vers l’infini. Cela montre l’importance en début de processus d’avoir une diversification de la
population, obtenue grâce aux enfants et à leur mutation. Alors qu’en fin de processus, il est seulement nécessaire de
faire que des recherches locales obtenues grâces aux croisements.

Le graphique de droite représente les valeurs du couple (X(1) ; X(2)) des paramètres pour toutes les solutions
appartenant au front.

Le tableau suivant donne les résultats pour la meilleure solution de la première fonction d’évaluation et la meilleure
solution pour la deuxième fonction d’évaluation, ce qui représente en fait les deux points extrêmes du graphique de
gauche ci-dessus.

Vous aimerez peut-être aussi