Algorithmes génétiques ou Darwin appliqué à la programmation
Par -Alexandre LEGOUT aka LAlex- le mardi, août 26 2003, 16:28 - Divers - Lien permanent
Depuis que je sais que Flash MX 2004 est iminent, je ne code pratiquement plus, car je n'ai pas envie de refaire la même chose en ActionScript 2. Donc je me renseigne sur les techniques de programmation, et notamment sur certains algorithmes.
J'ai découvert au travers de quelques articles sur le web la puissance des algorithmes génétiques, et je compte bientôt en faire une implémentation dans Flash. Voici donc ce que j'en ai compris :
Les algorithmes génétiques sont une solution à utiliser lorsque l'on a aucun moyen de déterminer la solution d'un problème de manière "classique". Une manière "classique" de résoudre un problème peut être d'avoir l'équation d'une solution par exemple. Dans ce cas précis, la solution sera trouvée au bout d'un temps donné. Le problème du "voyageur de commerce" est un bon contexte pour l'utilisation des alogrithmes génétiques.
Le concept des algorithmes génétiques est basé sur la théorie de l'évolution et de la sélection naturelle ennoncé par Darwin. Il consiste à créer une population "d'individus", puis d'effectuer sur cette population des croisements et des mutations aléatoires, puis d'évaluer quels sont les individus qui se rapprochent le plus de la solution cherchée, et d'éliminer ceux qui s'en éloignent le plus. On recommence alors les croisements, sur un nombre donné de générations.
Implémenter un algorithme génétique se fait donc en plusieurs étapes :
- Créer un codage génétique : trés souvent, il s'agit d'une chaine de caractères représentants les différents "gènes".
- Créer une méthode d'évaluation : pour évaluer le rapprochement du code génétique par rapport à la solution recherchée. Plus l'évaluation est important, plus l'individu est proche de la solution.
- Créer une méthode de croisement : cette méthode va retourner un individu descendant de deux autres individus.
- Créer une méthode de mutation : cette méthode va opérer une mutation sur un gène de l'individu. Elle a une probabilité peu importante de se faire.
- Imposer une condition de fin : par exemple, "pas plus de 10 générations" ou "les deux meilleurs sont les mêmes depuis 5 générations"
Les modes de séléction pour les croisements sont multiples :
- On croise les individus pris au hasard.
- On croise entre eux les meilleurs individus (stratégie élitiste)
- On choisit toujours le meilleur individu que l'on croise avec un autre pris au hasard (variante de l'élitisme)
- On croise les parents proches de par leur évaluation.
Une fois que tout cela est fait, on crée une population aléatoire, et on lance la première série de reproduction entre des individus pris au hasard, jusqu'à ce que la condition de fin soit remplie. Et voila !!!
Quelques liens qui m'ont servi :
- http://etna.int-evry.fr/~ap/EC-tutoriel/Tutoriel.html
- http://www.mines.inpl-nancy.fr/~tisseran/info1a/seances/genetique/genetique.html
- http://prografix.games-creators.org/document/176
Maintenant, je vais me pencher sur les réseaux de neurones (un ordinateur capable d'apprendre, ca me laisse sans voix).
Commentaires
Ton site est super, bravo, ce serait cool si tu ajoutais un rss. Salut!
Salut lalex
un chtit comment, j'aime bien ce blog, ça promet des trucs bien !
J'en viens à l'objet du message : tiens-moi au courant si tu peux sur tes recherches en ce qui concerne les réseaux de neurones, c'est un des trucs qui m'interessent le plus dans la prog, ça casse le coté deterministe du fait même de coder quelque chose.
Par contre l'implémentation est super-longue.
Genre essyer de faire un système qui apprend à marcher prend plein de temps, faut coder en dur tout l'environnement et ses actions sur le système.
Pense à moi si tu t'y mets, si je fais des tests dessus je t'envoie les fichiers;
a+
Damien
Salut damien !
Je te tiendrai au courant de mon avancement sur les reseaux de neurones sans problèmes. En fait, tout le monde en profitera, puisque je donnerai ma progression dans ce même blog ...
En fait, pour l'instant, je me casse un peu les dents sur l'implémentation en Flash des algos génétiques appliqués au problème du "voyageur de commerce". Etant donné les "faibles performances" de l'ActionScript (comparées a des langages tels que Java ou C#), j'essaie de trouver une fonction de croisement qui ne soit pas trop couteuse en terme de temps processeur, et c'est pas évident ...
A+
Hello
D'autres liens qui peuvent être utiles pour mieux comprendre tout cela :
- http://wwwsi.supelec.fr/yb/projets/algogen/Algogen.htm
- http://www.eudil.fr/~vmagnin/coursag/
J'ai trouvé ces liens sur :
http://cowww.epfl.ch/infmaph/projet/descriptif.html
Moi en ce moment j'étudie surtout les fractales mais c'est lié en fait
bye
Bravo !Ton blog est vraiment intéressant...
Juste un petit conseil d'un vieux passionné; perd pas trop ton temps sur la "tarte a la crème" que sont les ordinateurs de Nième génération et les promesses des réseaux de neurones! (...à moins qu'ils aient vraiment évolué depuis 15 ans ce qui m'étonnerait fort...) ! Dans ce domaine on est comme un boxeur qui se mettrait le vent dans le dos pour espérer un KO et on en est en fait toujours à la pelleté de RAM et de GHz.

Malheureusement, certains chercheurs sont comme des politiciens; il faut qu'ils fasse bander leur auditoire pour avoir leur financement...
Mais c'est juste mon avis
Hello
Moi je ne dirai pas cela... sans ces algos, nous n'aurions jamais eu des génériques comme celui de Fight Club ; pour rappel : il est basé sur une AI génétique qui fait vivre et se développer en temps réel un cerveau (neurones etc..) et qui permet de se balader dedans en temps réel. Sachant que tout est géré par des phénomènes génétiques, biologiques et physiques. Le générique dure quelques minutes et pas grand monde ne voit l'effort des artistes numériques derrières. (il y avait un super reportage un après midi sur la France5 à ce sujet).
Donc pour en revenir à nos moutons utiliser une AI génétique d’un point de vue création artistique, cela a toujours été très important. En fac par exemple en première année ce que l'on apprend à faire c'est une tortue et des fractales, les fractales permettent de créer des applications concrètes sur une IA génétique par la suite... et beaucoup ne cernent pas tout l’attrait créatif de cette technologie. Bien sur il restera toujours des éternels développeurs qui ne se sentiront jamais l’âme d’un graphiste ou d’un artiste mais bon… on ne peut pas faire que des gestions de tableaux toute sa vie.
Pour finir, en réaction sur ce que Kouri dit au dessus, je considère qu'actuellement ce qui apporte le plus d'argent à la recherche reste Hollywood (plus trop la guerre, ni l'aérospatiale ... sur ce dernier point c'est bien dommage). En mettant en avant des productions comme Matrix ou d’autres qui passent plus inaperçues (je pense à un film de Robin Williams : « Au-delà de nos rêves » où il va au paradis et croise un arbre généré par IA génétique…), des développeurs et des artistes utilisent alors des vrais bijoux d'un point de vue technologique donc heureusement que ces gens là peuvent avoir les financement pour prendre le temps de réaliser ce type d’effet.
Au niveau création, l'avenir passe par l'utilisation de + en + d'algo de ce type et des créations de + en + basées sur une forte connaissance des nouveaux outils que sont les AI étendues, utilisant le potentiel de machines de plus en plus rapides. L'AI génétique reste une des plus belle pour ma part, car elle se base sur ce qui fait que l'on existe, la vie.
bye
PS : liens utiles
- "Au-delà de nos rêves" : http://www.allocine.fr/film/fichefilm_gen_cfilm=17994.html
- "FightClub" : http://www.allocine.fr/film/fichefilm_gen_cfilm=21189.html
- Matrix... je crois que tout le monde connais
Bonjour,Je suis etudiant à paris et je prepare une these sur l'application des algorithme genetique,programmation genetique appliquer sur le traitement d'image
Je Cherche de la documentation sur le sujet ,si vous bien me les trasmettre sur ma boite e-mail
(Je suis en grand besoin)
Salut à tous !!!
Pour répondre à Kouri un peu plus haut qui dénigre les réseaux de neurones et autres algorithmes génétiques, évidement on ne peut pas résoudre tous les problèmes avec ce genre d'algo et mettre le monde entier en équation... Néanmoins, ayant effectué un DESS en Traitement de l'Information et Exploitation des données dans lequel j'ai pu aprécier la puissance des réseaux de neurones qd ils sont bien utilisés. Il n'est pas nécessaire d'avoir un calculateur du CNRS pour résoudre des problèmes qui paraîssent complexe à première vue, il est surtout nécessaire d'avoir une bonne sensibilité sur le fonctionnement d'un réseau de neurone, connaître ses limites afin de choisir les bons paramètres à mettre en entrée du réseau.
On peut faire énormément de chose avec un réseau de neurone, c'est d'ailleurs l'algorithme qui a été retenue par LA POSTE pour la reconnaissance des chiffres manuscrit des codes postaux sur les enveloppes (en effet La Poste avait en sa possession une base de données de chiffre manuscrit ENORME !!! et plus on a d'exemple pour un réseau de neurone, plus il sera précis). D'aprés ce que j'avais lu, ils arrivaient à un taux d'erreur de 3 ou 4% !!!! INCROYABLE !!!!
En ce qui me concerne, j'utilise ces algos sous Matlab, beaucoup plus facile à manipuler... Mais je compte bien transfèrer mes travaux en C++ afin de faire une jolie interface utilisable sur n'importe quelle plateforme... SVP essayer de ne pas trop développer en C#, .NET ou ASP sinon on va jamais s'en sortir de microsoft!!! Selon moi, si on continue de développer pour plateforme MICROSOFT Windows, on n'aura, à terme, plus le choix de son système d'exploitation et cela reviendra à mettre en place le système COMMUNISTE du home PC!!! REVOLUTION!!!
Ciao
bonjour;
exellant, contuner
salut
c'est très intéressant votre blog!!! ça donne une idée sur les algorithme génétique ...mais est ce que t'a une idée sur l'hybridation flou génétique !!! je cherche à optimisé la base des règles avec un algorithme génétique et je suis coincé au niveau de codage vu que l'optimisation sera multicritère c à d que j'ai plusieurs paramètre à optimisé ........j'espère que tu peut me fournir de quelque idée qui m'orient un peu dans ce sens(le codage !!)...en plus comment je peut introduire les notion de motif de similarité ou schème dans le prog !?? si quelqu’un a une idée je serais ravi !
ciao
salut
c'est très intéressant votre blog!!! ça donne une idée sur les algorithme génétique ...mais est ce que t'a une idée sur l'hybridation flou génétique !!! je cherche à optimisé la base des règles avec un algorithme génétique et je suis coincé au niveau de codage vu que l'optimisation sera multicritère c à d j'ai plusieurs paramètre à optimisé ........j'espère que tu peut me fournir de quelque idée qui m'orient un peu dans ce sens(le codage !!)...en plus comment je peut introduire les notion de motif de similarité ou schème dans le prog !?? si quelqu’un a une idée je serais ravi !
ont peu calcule' une probabilite' de probabilite' de cheques problemes present dans la nature grace aux equations appliquèe a l'algorithme du probleme x a traite,ont peu tout calcule'? la formule de base applicable pour leemps ou autre merci attend reponse prof del zio "cheques algorithme par cheques problemes a resoudre;
Bonjour, je suis un élève ingénieur à Tunis, les AG c mon rêve, j'ai lu que vous en faite de en premiere année alors j'ai aimé savoir, si ça ne vous dérange pas, c quoi ce que vous faites.
Merci pour vous.
je suis débutant en sujet de thèse,je voudrais que vous m'envoyer si c'est possible des exemples de programmation des algorithmes génétiques sous matlab ou en langage C
bonjour all
Moi aussi je débute mon sujet de thèse sur les algorithmes génétique en vue de minimiser une fonction ...
pour les gens qui veulent utiliser les AG sur Matlab il existe une bibliothèque qui s'appelle gtool elle vous donne une interface pour les calculs
si non vous pouvez passer en ligne de commande la commande :
[x fval]=ga(@fitness,Nbvariables)
c'est simple sur Matlab mais pour programmer je vous recommande vivement de programmer avec un langage objet ou bien une programmation modulaire avec le Makefile..
Bonsoir,
Je suis étudiante en ecole d'ingénieur et je souhaiterais avoir des informations sur les algorithmes génétiques car je dois faire une présentation de 20 mns dessus en cours, le but étant d'expliquer de façon claire et simple ce sujet...
Je vous remercie pour toutes les infos que vous pouvez me donner (sites ou docs..) .
Les contes fantastiques de Monsieur Hasard
Il était une fois il y a des milliards d’années, un monsieur qui sait tout faire venue d’un royaume inconnu, avait sans but précis réunie des morceaux d’un immense puzzle. De façon inconsciente, les yeux fermés, il les plaça parfaitement au bon endroit. Ce monsieur est ingénieux et imaginatif qui ne veut pas être identifié. Ses amis lui donnèrent le nom de Monsieur Hasard. Il plaça à la bonne place le soleil, la lune et la terre. Puis après plusieurs dodos, M. Hasard réussit à réunir au même endroit, tous les ingrédients nécessaires pour faire son immense soupe secrète. Pourquoi il a choisit la terre? C’est qu’il y avait déjà sur place une cuisinière dernier cri qui allait faire des merveilles. Il fit venir la soupe à ébullition. Puis, dans ce potage bouillant, M. Hasard poussa un bouton secret de sa cuisinière. Tout à coup pouf! La vie apparue dans la soupe! Avec la vitesse de l’éclair, le gentil Hasard l’avait déjà programmée. C’était une maman car elle a eut très vite des bébés. Car si non, elle n’aura pas pu exister la pauvre. Qu’il est vite M. Hasard tout de même! Il l’appela bactérie. À sa naissance, elle était déjà très futée. Car dans sa tête, il y avait des centaines de livres pleines d’informations très, très compliquées. Elle a eut des bébés et après beaucoup de dodo, des centaines de milliers de formes de vie sont venu dans la mer.
Mais un jour, une maman et un papa poisson plus curieux que les autres, voulurent profiter de leurs vacances, pour explorer la terre. Tout à coup le gentil hasard voyant cela leurs fit pousser des pattes. Ils durent attendre encore plusieurs dodos. Finalement, les pattes de maman et de papa poisson ont poussées en même temps. Ils ont sortie de l’eau, se sont débarrassés de leurs branchies et on acheté d’un marchant qui les attendaient tout près, une paire de poumons faits sur mesures. Les repas étaient gratuits, car ils n’étaient pas encore vite sur leurs pieds pour trouver leurs nourritures les pauvres. Ils se sont acheté une maison. Ils vécurent heureux et eurent beaucoup de poissons à pattes. Mais une fois rendu ados, les jeunes poissons à pattes et leur parents vécurent un terrible conflit de générations. Les ados ont fugués et se sont transformés en d’autres animaux. Ils ont formés des clans appelés lézards et leur enfants délinquants ont fugués à leur tous. Adeptes de drogue hallucinogènes, ils voulurent flotter dans l’espace. Ils perdirent après plusieurs dodos l’usage de leurs pattes avant. Heureusement leur parent été là pour les nourrirent! M. Hasard vint et fit pousser des plumes et une paire d’ailes. D’autres clans se formèrent comme le gang des mammifères. Ces derniers ont décidé que les œufs n’étaient plus à la mode! Mais, certains d’entres eux attirés par la natation, avaient le mal du pays. Après encore beaucoup de dodos ont décidé de retourner à la mer.
La grande majorité ne voulait pas passer leur vie à faire de longues baignades. Un groupe en particulier, exprima le désir de grimper. M. Hasard qui avouons le, fit preuve de favoritisme leur fit pousser après plusieurs dodos, des mains sans pouce (faux pas exagérer) aux extrémités de leurs pattes. Ces animaux ne couraient pas très vite. Beaucoup d’autres dodos sont passé avant que les mains poussent à la place des pattes. Ne pouvant pas encore se cacher dans les arbres, ni tenir leur nourritures. Comment ils se sont sauvez des gros méchants loups? M. Hasard est un petit cachetier, il n’a pas voulu le dire. Mais nous savons tous, qu’il a plusieurs tours dans son sac n’est-ce pas? Il faut lui faire confiance les yeux fermés, car il n’aime pas qu’on doute de ses tours de passe-passe. Vous vous êtes assoupi à la lecture d’une autre histoire de M. Hasard? Ne soyez pas peiné, rien ne lui fait le plus plaisir que de vous endormir....
Fil des commentaires de ce billet