quelqu'un aurait il un exemple d'algorithme génétique?
en pascal de préférence (je connais pas de langage qui soit plus facile à lire)
quelqu'un aurait il un exemple d'algorithme génétique?
en pascal de préférence (je connais pas de langage qui soit plus facile à lire)
Le pseudo-code est le "langage" qui me parait le plus facile a comprendre.
Ce n'est pas tres difficile a faire meme si c'est peu long de tout detailler.
Selon moi le principe c'est :
- une population que tu initialises de maniere aleatoire.
- une fonction d'evaluation de la performance des individus de la populations (evaluation des perforamces du phenotype).
- la selection des individus.
- la reproduction des individus avec prise en compte de modification des genotypes.
- un critere pour determiner si la population actuelle est satisfaisante.
Apres il existe pas mal de variation en fonction de ce que tu veux faire en particulier sur la selection et la reproduction.
Pour la selection elle peut etre soit deterministe soit non deterministe. Dans le prmier cas on prend les n meilleurs individus qui vont avoir m enfants afin de garder une population de m*n individus. Dans le second chaque individu a une probabilite de se reproduire qui depend de sa performance. Mais on peut bien sur faire un melange des deux.
Pour la reproduction il faut implementer une fonction de crossing over et de mutation.
Le crossing over consiste a melanger les genotypes de deux parents et les mutations correspondent a une modification aleatoire du genotype. Cette mutation peut elle-meme etre code de differentes facons. Soit elle depend du codage des genes. Par exemple si tu codes tes genes avec des octets tu peux tres bien faire de mutation dites bit a bit qui modifie avec une certaine probabilite la valeur des bits. Sinon tu peux utiliser une mutation gaussienne qui consiste a tirer des decalages avec de l'aleatoire gaussien ce qui permet en jouant sur la largeur de la gaussienne de produire des mutations de plus ou moins grande amplitude. Bien evidemment les taux de mutations et de crossing over peuvent varier en fonction de la performance de l'individu et du stade d'evolution.
Ca c'est un peu le cadre general, apres c'est a toi de voir suivant le cas que tu veux traiter. Par exemple lorsque j'ai travaille dur de la microrobotique evolutionnaire, le crossing over ne servait a rien et on a fait varier le taux de mutation de mabiere decroissante afin de parcourir une bonne partie des genotypes au debut et ensuite stabiliser le patrimoine genotypique afin de ne pas perdre les acquis.
Le seul truc important c'est de faire un code propre qui te permette d'adapter facillement ton programme a un autre probleme d'evolution genetique.
il y a site qui detaille pas mal c'est
http://www.eudil.fr/~vmagnin/coursag/index.html
pour la resolution du voyageur de commerce par les AG , il y a des explication et des sources ici:
http://home.alex.tuxfamily.org/pvc.html
a+
Je pensais qu'un recuit simule suffisait pour le voyageur de commerce.
Partager