Heuristiques et Intelligence Collective Série 4

publicité
Heuristiques et Intelligence Collective
Série 4 - Algorithmes Génétiques
Introduction
La dernière fois on a expérimenter quelle est la différence entre un algorithme (tri par sélection) qui
a une complexité de l’ordre de grandeur O(N 2 ) et un autre (tri par fusion) qu’en a une de l’ordre de
O(N (log(N ))). On a aussi vu qu’est qui se passe si on veut trouver la solution d’un problème NP-dur
(voyageur de commerce) par recherche exhaustif, même si on utilise l’ordinateur : c’est pour ça (et
pour tous les cas où l’incertitude fait partie du notre problème du début) qu’on est intéressé à des
méthode des recherche heuristique. Dans la famille des algorithmes qui sont basé sur une population
des solutions, comme premier exemple on a vu le code pour un algorithme génétique adressé au
problème du MaxOne.
Pour ce qui a envie de le voir en façon plus ”agréable”, dans la bibliothèque des modèles de
NetLogo, il y a aussi le même exemple...mais aujourd’hui on continue par des autres petits logiciels : comme ça, ce qui aura besoin d’écrire quelque programme, aura quand même un point
de départ. Le tinyGA faisait partie d’une compétition pour l’algorithme génétique le plus petit http://cswww.essex.ac.uk/staff/rpoli/GECCO2006/tinyga.htm ; les exemples suivants sont
pris de la bibliothèque ”GAlib” qui se trouve à l’adresse http://lancet.mit.edu/ga/. Vous pouvez
trouver une autre bibliothèque très bien faite, encore plus générale et plus orientée objets à l’adresse
http://paradiseo.gforge.inria.fr/.
Algorithme Génétique - démo graphique 2D
Allez sur le site du cours et enregistrez sur votre compte le ficher galib.zip. Ouvrez-le et y-allez
par terminal : si par exemple votre fiche se trouve dans le répertoire Download, tapez
cd Downloads/galib247
Il faut ensuite re-compiler la bibliothèque sur votre ordinateur, par la commande
make clean && make
Attendez la fin de la compilation, puis entrez dans le répertoire examples/graphic.
cd examples/graphic
Ici, compilez les exemples et lancez la première démo par les commandes
make clean && make
./gaview
Il s’agit d’un AG dessiné à la recherche de l’optimum d’une fonction 2D ; vous pouvez voir comme
la population se distribue pendant l’évolution (dans le cas default les optima locaux sont sur des
cercles concentriques avec l’optimum global, soit le maximum, au milieu). Il est aussi possible choisir
différents paramètres et différentes types d’AG :
./gaview ga 1 pour le cas où chaque génération toute la population va être remplacée
./gaview ga 0 pour le cas où chaque génération seulement un individu va être remplacée
./gaview ga 2 pour le cas (default) où la nouvelle population est superposée à l’ancienne et les
individus les moins bons sont remplacés, dans le but d’avoir une taille constante de population.
1
Une simple interface graphique vous permette : d’initialiser l’algorithme (reset), le-faire avancer d’un
pas (one), de dix pas (some) ou de façon continue (all) ; d’imprimer sur le terminal la valeur du
fitness du meilleur individu (score), les paramètres utilisés (params) et certains statistiques (stats).
Comment se déroule l’evolution de la population ?
Quel modèle d’évolution préserve moins de différence entre les individus ?
Qu’est que vous pouvez observer, apparemment, sur la vitesse de convergence et la qualité de la
solution trouvée ?
Algorithme Génétique - démo graphique TSP
Nous allons maintenant voir une solution au problème du voyageur de commerce par AG. Dans
cet exemple on a 20 villes qui sont distribuées sur une grille 4x5 : comme ça pour nous est plus facile
à imaginer quel est le tour le plus court (mais l’ordinateur ne le sait pas ! en plus, il a y a plusieurs
chemins avec la même longueur !). Cette fois l’espace de recherche est celui des tours et notre AG
evolue donc une population de chemins possibles, chacun codifié par un individu.
Dans le même répertoire que avant, lancez la démo :
./tspview.
Encore une fois vous pouvez tester différents modèles ;
./tspview ga 3 pour le cas où chaque génération toute la population va être remplacée (Simple
GA ou Generational GA)
./tspview ga 2 pour le cas où chaque génération les parents, deux par deux, vont être remplacée
par leurs enfants, deux par deux, mais seulement si ceux ont une meilleure fitness (Deterministic
Crowding)
./tspview ga 1 pour le cas (default) où la nouvelle population est superposée à l’ancienne et les
individus les moins bons sont remplacés, dans le but d’avoir une taille constante de population
(Steady-State GA).
Comment se déroule l’evolution de la population ?
Quel modèle d’évolution préserve moins de différence entre les individus ?
Qu’est que vous pouvez observer ?
2
Téléchargement