1
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 :
),max(),(
,116),(
2
2
2
2
11
BCAC
yxf
yxyxyxf
σσ
=+++=
r
r
σ
AC et
σ
BC, les contraintes normales dans chacune des deux barres, sont données par les relations :
1
2
1620
xy
y
AC +
=
σ
2
2
180
xy
y
BC
+
=
σ
Les paramètres de design sont contraints par les relations suivantes :
,,0
max21
Axx
31
y
A cela s’ajoute également une contrainte relevant de la résistance des matériaux en traction :
max
),max( S
BCAC
σ
σ
Les valeurs choisies pour Smax et pour Amax sont respectivement 105 kPa et 0.01 m2.
2
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 :
3
2
2
21
21
pp
enf
pp
enf
yy
y
xx
x
+
=
+
=
r
r
r
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.
[
]
1,1, +=
εε
avecXX
mut
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 :
),min(
21
XBBXd =
Dans le cas de l’algorithme, les bornes étant fixées à 0 et 1 :
)1,min( XXd
=
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.
4
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.
5
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.
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !