|
avec Alexandre JENNY
Beaucoup de problèmes sont difficilement solubles exactement. La difficulté ne vient pas de la complexité du problème mais de la taille excessive de l'espace des solutions. Par exemple, le problème du voyageur de commerce a une taille de l'espace de solutions qui varie en factorielle (n-1) où n est le nombre de villes où il faut passer. On s'apercoit qu'à seulement 100 villes, il y a 9,3.10153 solutions. Il est alors impensable de pouvoir les tester toutes pour trouver la meilleure.
C'est pourquoi, des heuristiques approchées ont été essayées pour la résolution de tout un tas de problèmes où la recherche systématique n'est pas possible. Ces heuristiques doivent être peu coûteuses en temps machine et doivent permettre de trouver une solution pas trop mauvaise qui justifie leur utilisation à la place d'une recherche par Monte-Carlo (hasard quadrillé) ou par toute autre méthode.
Ainsi sont nés beaucoup d'algorithmes comme le recuit simulé, la méthode tabou, les approches min-max, alpha-beta ou encore les algorithmes génétiques. Nous nous interesserons essentiellement à ces derniers.
Les heuristiques de calcul sont souvent issus d'un processus ou phénomène physique / naturel duquel ils s'inspirent. Les algorithmes génétiques ne dérogent pas à cette règle et sont directement inspirés du mécanisme d'évolution d'une espèce, la génétique.
L'évolution dans la nature survient quand des entités ont la capacité de se reproduire, qu'il existe une population de ces entités, qu'il existe une variété (diversité) à travers ces entités, et que la survie des entités dépend des différences entre elles. Toute entité vivante possède un génotype et le phénotype.
|
|
Le génotype.Le génotype est constitué de gènes situés sur des chromosomes stockés dans le noyau des cellules sous la forme d'une longue chaine d'acide déoxyribonucléique (ADN). Dans la nature, l'ADN est un polymère constitué par l'enchaînement de quatres molécules, les nucléotides adénime (A), cytosime (C), guanine (G) et la thymine (T). On peut donc décrire l'ADN par des chaînes de quatre caractères ACGT. L'ADN constitue l'ensemble des chromosomes, ou le génome d'un individu.
|
|
|
Le phénotype.Le phénotype est l'ensemble des protéines et des enzymes qui peuvent être fabriqués à partir de l'ADN. En fait, l'ADN est copiée par un messager (ARN) qui au niveau du ribosome, se traduit en chaînes d'acides aminés formant les protéines et les enzymes. En général, on compte une protéine (un enzyme) par gène. Ce sont les protéines et les enzymes qui dictent la structure et le comportement des cellules qui permettent à un individu de réaliser des tâches dans son environnement, de survivre et de reproduire à des taux différents. |
La reproduction se traduit par la transmission du génome aux individus de la progéniture ce qui permet de préserver les gènes menant à des performances supérieures. Occasionnellement, un processus naturel, la mutation génétique, introduit une variation dans les chromosomes.
Or les individus les mieux adaptés, c'est-à-dire capables de mieux effectuer les tâches nécessaires à leur survie, se reproduisent à des taux les plus élevés, alors que les individus les moins adaptés se reproduisent à des taux plus faibles. Ce sont les principes de survie et reproduction décrit par Charles Darwin dans « On the Origin of Species By Means of Natural Selection » en 1859. Il s'avère alors qu'une population ayant une grande variété va, de génération en génération, contenir des individus dont le génotype se traduit par une meilleure adaptation, et ceci à cause de la contrainte de la sélection naturelle.
Photographie au microscope électronique d'ADN en réplication
L'algorithme génétique ne fait que transposer ce que fait la nature à des systèmes artificiels. Il simule les processus évolutifs Darwiniens et génétiques s'appliquant aux chromosomes. Il transforme un ensemble d'objets mathématiques, une population d'individus souvent représentés par des chaînes de caractères pour imiter les chaînes d'ADN, chacun ayant une valeur d'adaptation, en une nouvelle population. L'algorithme fait donc appel à quatres opérateurs de base :
Nous disposons d'une fonction à n variables (n pouvant être très grand) pour laquelle il nous faut trouver le minimum. De nombreux problèmes peuvent se rapporter à ce schéma.
But :
Min ( F(n1, n2, n3, ... np) )
ni
La première étape consiste à trouver une représentation d'un individu. En effet, le p-uplet de réels qui représente un point dans l'espace des p variables, est un représentant du phénotype, les paramètres décodées. Il nous faut trouver une fonction qui code à la manière de l'ADN notre problème. Le choix le plus direct est la représentation des réels sous forme de chaînes de bits (un bit est l'unité d'information binaire, 0 ou 1). Un génome est une chaîne de bits (sa longueur est le nombre de bits d'un réel multiplié par p) qui représente les bits des réels mis bout à bout.
Ainsi nous disposons d'une fonction decode qui à partir d'une chaine de bits donne un p-uplet (il est à noter que la fonction code est inutile dans un algorithme génétique).
La deuxième étape consiste à pouvoir calculer pour un individu sa valeur d'adaptation. Supposons que notre fonction a des valeurs comprises entre 0 et 1 (on peut la plupart du temps s'y ramener en faisant un changement d'échelle). La fonction d'adaptation devra être maximum vers 0 et minimum en 1. Voici un choix :
Valeur d'adaptation (individu) = 1 - F( individu )
D'autres solutions sont possibles qui permettent de favoriser plus les faibles valeurs ( (1-F)1/2 ) ou bien de laisser plus de choix pour la diversité comme (1-F)2. Il faut trouver un juste équilibre entre la sélection et la diversité.
Ainsi nous disposons d'une fonction valuation qui donne pour chaque individu un nombre réel.
Ces deux étapes étant faites, nous pouvons maintenant décrire l'algorithme génétique :
|
// C'est la génération d'un ensemble de génomes (individus) Faire pour un certain nombre de générations Evaluation (population)// pour chaque individu Fin pour |
Nous n'avons pas donné de critère d'arrêt dans l'algorithme. Ce critère peut prendre plusieurs formes :
Le coeur de l'agorithme se situe dans la fonction de choix au hasard mais pondéré d'un individu. Cette fonction prend comme entrée un vecteur de valeurs d'adapation et renvoi un entier. L'illustration du choix pondéré est donné par la roue de la fortune, chaque case représentant un individu et la taille de la case est donné par la valeur d'adaptation. Voici un exemple de codage :
|
// La probabilite de tirage d'un individu est } |
Présentation adaptée du livre "La vie
artificielle",
Jean-Claude HEUDIN, Hermes 1994
Un algorithme génétique permet de simuler des mécanismes du vivant. Les principes ci dessous caractérisent cette approche :
La simulation débute par la création d'une
Nous avons déja utilisé des principes voisins dans l'exemple de l'automate cellulaire. Un algorithme génétique se distingue de cet exemple par la prise en compte pour chaque individu :
Les algorithmes génétiques sont fondés sur l'utilisation d'un code individuel universel à l'instar de l'ADN, le génome, et sur l'étude de l'évolution d'une population d'individus, comme dans l'étude du vivant. Peut-on pour autant parler de l'émergence d'une vie artificielle ?
L'utilisation d'un algorithme génétique nécessite le choix préalable d'un code génétique représentant le problème à traiter. Le choix de ce codage est essentiel car il va déterminer essentiellement les performances de l'algorithme. Le code est représenté sous forme d'une chaîne de bits ou de caractères, chaine analogue à un chromosome. Il y a une nombre fini de chaînes.
Sur ces codes s'appliquent des opérateurs génétiques, dont les principaux sont :
Le cycle de vie se résume alors à ceci :
Cycle de vie
de l'évolution des espèces
régies par les algorithmes génétiques.
Reproduction : copier à l'identique un génome. Ce mécanisme est déclanché pour chaque chromosome sélectionné selon la valeur de la fonction d'adaptation.
Evaluation de la fonction d'adaptation : intuitivement, c'est une sorte de mesure de l'efficacité de la solution considérée. C'est cette fonction que l'algorithme génétique cherche à maximaliser.
Croisement : à partir de deux chromosomes le croisement produit deux nouveaux chromosomes incorporant chacun du matériel génétique pris dans le patrimoine initial. Pour développer un opérateur de croisement, trois étapes sont nécessaires :
Le croisement ne doit pas être appliquée systématiquement, mais en fonction d'une probabilité, paramètre de la simulation. Une probabilités de l'ordre de 0,6 est souvent choisie.
Mutation : opérateur d'importance secondaire, mais qui permet d'éviter une convergence prématurée vers un maximum local, en maintenant une diversité de solution. Pour l'appliquer, choisir au hasard un bit du chromosome et modifier sa valeur. La mutation ne doit pas être appliquée systématiquement, mais en fonction d'une probabilité, paramètre de la simulation. Les probabilités de l'ordre de 0,01 à 0,03 sont généralement choisies.
Cet exercice est tiré de l'ouvrage : L'ordinateur génétique (Jean-Louis DESSALLES, Hermes mai 1996)
Pour aider Thésée à vaincre le Minotaure dans le Labyrinthe de Dédale, Ariane lui donna un fil. La programmation d'un parcours de labyrinthe emprunte classiquement son algorithme au mythe d'Ariane. Un mobile parcourt le labyrinthe en appliquant les principes suivants :
La résolution par un algorithme génétique se base sur une idée différente, celle de la sélection naturelle entre individus. Chaque individu est un chemin dans le labyrinthe, tentative de solution, partant de l'entrée.
Un individu dont le génome est aléatoire a très peu de chances de guider vers une sortie. Ces individus évoluent au rythme des générations. A chaque génération peuvent se produire des mutations, modifiant le patrimoine génétique. En sélectionnant à chaque génération dans la population des individus - chemins ceux qui sont les "meilleurs", c'est à dire qui s'approchent plus de la sortie que les autres, nous pouvons espérer obtenir à terme des individus menant à une solution.
Avant de programmer l'algorithme génétique, il est nécessaire de définir le codage employé, c'est à dire de préciser le lien entre la chaine de bits constituant le génome et un chemin dans le labyrinthe. Voici trois façons d'envisager ce codage d'un chemin :
Voilà trois codage différents. Il y en a encore d'autres possibles. Chacun a ses qualités et ses défauts : il trouve la solution la plus courte, la plus immédiate, la plus à droite, etc.
La fonction d'évaluation de la performance de chaque individu est de guider le robot explorateur le plus près du bord Est du labyrinthe, et de favoriser les chemins sortants les plus courts. Par exemple, nous pouvons accorder 1 point par case qui nous rapproche de l'est, plus 10 points pour chaque étape économisée par rapport au chemin de longueur maximum. La valeur 55 est, de manière arbitraire, la longueur maximale au bout de laquele l'on interrompt le robot s'il n'a pas trouvé la sortie.
Il vous est demandé en TD d'étudier et de concevoir en groupe un algorithme génétique de recherche de solution dans un labyrinthe.
Le travail de programmation et de tests sera à faire par binômes au cours de la semaine.
Une applet Java de résolution de labyrinthe :
Un logiciel de résolution de labyrinthe par
réseau de neurones :
http://www.digitalbiology.com/
L'ouvrage de référence :
Algorithmes génétiques
David Goldberg, Addison Wesley, juin 1994, 417 pagesUne bonne introduction à la vie artificielle :
La vie artificielle
Jean-Claude Heudin, Hermes 9/94, 267 pagesOuvrage sur l'IA ayant de bonne qualités pédagogiques :
Intelligence artificielle et informatique théorique
J.-M. ALLIOT & T. SCHIEX, Cepadues editions mars 1994, 520 pagesL'exercice sur la résolution d'un labyrinthe est tiré de l'ouvrage :
L'ordinateur génétique
Jean-Louis DESSALLES, Hermes mai 1996, 141 pagesUn roman passionnant, par un grand écrivain de science fiction et un grand chercheur en intelligence artificielle :
Le Problème de Turing.
Harry Harrison & Marvin Minsky &emdash; Ailleurs et demain, Collection française de Science-Fiction publiée par Robert Laffont, 8/1994Edition originale : "The Turing Option", Warner Books :What would happen if man's highest technical achievement, the computer, was combined with the most highly evolved organ on the planet, the human brain? For Brian Delaney, theory becomes reality when gunmen storm his high security laboratory and put a bullet in his skull.
Miraculously, Brian survives and scientists reconstruct his brain with the very nerve reprogramming techniques and computer-human connections that Brian himself helped invent. Now, as much machine as man, Brian's challenge is to regain his past and rediscover the scientific knowledge he lost - before his enemies dare to strike again.
In an astonishing blend of science fact and fiction that ranks with Michael Crichton's Jurassic Park and Carl Sagan's Contact, The Turing Option takes us to the furthest edge of tomorrow's computer technology today.
Dossier du magazine Webdo sur la vie artificielle (de nombreux liens) :
http://www.webdo.ch/hebdo/hebdo_1996/hebdo_01/viart_01_sommaire.html« La vie artificielle vous titille les cellules grises ? vous trouverez presque tout à partir de Zooland ! »
Zooland, répertoire sur la vie artificielle, très complet sur algorithmes génétiques, automates cellulaires, etc. :
http://research.de.uu.net:8080/public/zooland/Le projet Tierra de vie artificielle :
http://www.hip.atr.co.jp/~ray/tierra/tierra.html
Logiciel pour créer un élevage de vers dans son PC : ftp://ftp.de.uu.net/pub/research/ci/Alife/tom-ray/
ou dans son Mac : http://www.santafe.edu/~smfr/mactierra.html
Les séparateurs animés de ces pages sont une visulisation de la vie d'une population de vers issue du projet Tierra.« The genetic algorithms archive » nombreux liens sur l'état de la recherche en ce domaine :
http://www.aic.nrl.navy.mil/galist/Scott Robert Ladd - Artificial Life :
http://www.frontier.net/~srladd/alcentral.htmlVivarium, simulation sur Mac :
http://web-hou.iapc.net/~koops/vivarium/giantworld.hqx