54.237.183.249         CPU usage
0..........50..........100

G a b y ' s   B l o g

 26.03.2008   

La Vie Artificielle (article, reprise)

26 Mars 2008

Un article un peu ancien (que j'avais écrit et publié en 2001, mais qui reste relativement bien explicatif et utilisable actuellement pour toute personne un tant soit peu intéressée par le sujet, tant en modélisation qu'en algorithmique...




Présentation


Un peu d'histoire

Les algoritmes «génétiques» ont été créés dans les années 60 et reviennent «à la mode» depuis les années 80. On en trouve dans des domaines d'application très divers : pour profiler une aile d'avion, faire un diagnostic médical...
Ces algorithmes sont utilisés afin d'avoir des systèmes de recherche plus performants que les programmes traditionnels. Ces derniers n'étant pas très adaptables à tout type de recherche (sauf à y passer beaucoup plus de temps).

Principe

Le but est de trouver la (ou les) meilleure(s) solution(s) à un problème donné grâce à un programme informatique sans que ce dernier ne les contienne explicitement. En d'autres termes, le programme génère une population «d'individus» qui sont autant de solutions potentielles pour le problème. Chaque individu étant codé pour le problème : le chemin pour sortir d'un labyrinthe ou autre application plus sérieuse...
Ensuite ces individus sont classés selon leur capacité à résoudre le problème, ceux en tête de liste seront favorisés (on les duplique au sein de la population) tandis que les derniers disparaissent. Au fil des générations,et de quelques «mutations» (modification aléatoire de leur code), les individus sont ainsi sélectionnés selon leur aptitude à être une (ou de) bonne(s) solution(s). Le problème est ainsi résolu.

Et la «vie» dans tout ça !

Les principales applications étant sans rapport avec la vie : la recherche (profiler la meilleure aile d'avion, ou fabriquer une intelligence artificielle...) et le diagnostic (systèmes experts médicaux ou de réparation automobiles,...). On voit donc mal pourquoi on parle de «vie artificielle».
Les algorithmes génétiques ont donnés des idées à de nombreux théoriciens et programmeurs : simuler la vie dans un ordinateur, à partir d'éléments simples. La première apparition publique de tels programmes a été curieuse : les tamagotchis, petits portes-clefs comportant un écran sur lequel apparait une petite bestiole qu'il faut surveiller, nourrir...

Le jeu de la vie

Ces «portes-clefs vivants» n'ont pas été les premiers dans le domaine des programmes grand public : le jeu sur ordinateurCreatures (simulation, GTInteractive, 1996) simule un monde sur ordinateur, dans lequel l'utilisateur fait naître les premiers individus d'une espèce. Ces charmantes «créatures» demandent peu : communiquer avec l'utilisateur, apprendre à parler et à se nourrir et se reproduire. On peut voir évoluer cette espèce et les individus qui la compose au cours du temps (les «norns» ayant une espérance de vie d'une dizaine d'heures), le programme met à disposition quelques outils d'études pour le biologiste en herbe.
La toute première théorie concernant la vie artificielle (et mise en pratique) a été celle du «jeu de la vie» : des cellules apparaissent à l'écran et ne restent «vivantes» (affichées) que si elles sont entourées d'un certain nombre d'autres cellules. Les créateurs de ce «jeu» ont vu apparaitre des structures non prévues par le programme. Des figures stables ou mouvantes dont le seul but était la stabilité ou le maintien «en vie» des cellules composant ces structures.
Une autre création des débuts de la vie artificielle a été celle des automates cellulaires. Une cellule est figurée à l'écran, avec son code génétique à l'intérieur sous forme de pixels colorés. Celle cellule se duplique en créant une copie de son code et de sa «membrane» : une autre cellule apparaît. Ces cellules vont continuer à se dupliquer en restant en place et meurent si elles ne le peuvent pas, et ainsi de suite... (Ce mécanisme, très joli, crée une structure en fractale sur l'écran).

Utilisation pratique

Mais des propriétés autres que ludiques ont été trouvées pour ces programmes auto-évolutifs : on en retrouve dans certains moteurs de recherche dans le but qu'ilsd soient de plus en plus performants ou comme les agents évolutifs pour dialoguer sur ordinateur ou dans des mondes virtuels en 3D.
Le principal axe de recherche est surtout celui de l'intelligence artificielle : créer une intelligence numérique de manière «naturelle» (les techniques avec les algorithmes traditionnels ayant échoués du fait de la complexité de la chose).





Les principes de base

Reconstituer les principaux mécanismes

On peut définir quatres mécanismes vitaux fondamentaux : la nutrition (recherche de sources d'énergies), l'assimilation (conversion de l'énergie), la croissance (développement et auto-entretien grâce au code de l'individu), la reproduction (avec l'évolution : mutations et croisements (si mâle et femelle)). Ce dernier mécanisme induit la mort par surnombre (manque de nourriture , d'espace...). On peut assimiler le code de l'individu à un code «génétique».

Individualité des «organismes»

Chaque «cellule» ou individu dispose d'un plan (code génétique) individuel et traite ses informations séparément : celles citées au paragraphe précédent, sa connaissance de l'environnement, son code génétique...

Limites de la reconstitution

La complexité de la vie empêche une programmation complète, ou dans les moindres détails, sans compter les lacunes de nos connaissances de nombreux mécanismes biologiques. De plus la programmation doit tout de même être suffisament simple pour fonctionner sans trop d'erreurs, dans cet ordre d'idée le code des individus doit être haploïde (ou assimilable à un code génétique de type haploïde, c'est à dire qu'il n'est présent qu'en un seul exemplaire, contrairement à celui de l'homme, qui a un code diploïde) car cela fait moins d'information à traiter (le code génétique d'un individu pouvant être assez long).
On peut rajouter une «éthique» dans ce domaine : si ce sont bien de nouvelles formes de vie qui apparaissent ainsi sur ordinateur, des espèces pouvant apparaître, évoluer et disparaître : qu'a-t-on le droit de faire ?





Programmation (et voies de recherche)

Les exemples du monde vivant

Un code génétique simple est un atout majeur qui a deux caractéristiques dans le monde que l'on crée : simplicité et universalité. Cela a une influence sur l'organisation en chromosomes et les mutations, qui sont alors plus faciles à mettre en place et permettent de voir les similitudes entre les «espèces» ( groupe d'individus qui se reproduisent entre eux et qui ont un code semblable : nombre de «chromosomes», longueur du code et similitudes majeures entre les codes d'individus distincts). On dispose alors d'une certaine souplesse d'action, alors qu'un code constitué de commandes les unes à la suite des autres n'est pas facile à manipuler (même pour un ordinateur).

La création du code

Il s'agit de déterminer le nombre le plus petit possible de commandes (qui seront équivalentes à des «acides aminés») auquelles on attibuera un caractère (lettre, chiffre...). Le code des individus sera constitué d'une succesion de ces caractères et traduit par le programme principal qui exécutera le code pour l'individu.
Le plus simple pour créer ce code est d'établir le fonctionnement des gènes et de créer le code sur cette base (les gènes n'étant en ce sens qu'une suite de commande), et aussi de penser à un code de début et de fin de gêne.

Les mutations

Une fois le code créé, il est plus facile de concevoir des «erreurs de trancription», plus ou moins au hasard selon les schémas traditionnels : substitution d'un caractère à un autre, addition ou délétion, duplication d'un gène ainsi qu'une éventuelle activation ou désactivation d'un gêne.
La principale difficulté est que le code soit fonctionnel, ou que le programme central élimine les individus comportant un code non fonctionnel (sélection «naturelle») ou rende inactif le gêne concerné.
Le choix du moment où s'effectue la mutation est assez souple : le plus simple est au moment de la reproduction (création d'un nouvel individu), mais rien n'empêche à priori la création d'agents mutagènes, de virus particuliers...

Croisements

Si l'idée vous viens (ou à un programmeur) de concevoir un monde virtuel avec des individus de plusieurs sexes (mâle et femelle pour simplifier, il y a possibilité de croisement des codes parentaux pour obtenir les codes des descendants. Ce croisement peut se définir comme suit : on choisit au hasard pour chaque gêne (ou groupe de gènes) entre les deux parents, qui sont censés en avoir le même nombre (sinon c'est qu'ils sont d'espèces différentes).
Le choix du sexe peut être laissé au hasard ou lié à l'activation/la présence d'un gêne particulier. Dans ce dernier cas, tous les individus possèdent tous les gènes sexuels (tout sexe confondu, transmis comme les autres de ses deux parents dans notre exemple), seuls les gènes liés au sexe choisi sont activés.

La nutrition

Élément essentiel de la vie mais difficile à gérer, cet aspect vital concerne la présence et le renouvellement, dans le monde virtuel considéré, «d'objets» d'une valeur nutritive donnée. Tous les individus peuvent ingurgiter et assimiler ces objets : augmentation d'un taux de «sucre», «d'amidon» ou de «graisse». Ces taux seront bien sûr baissés par la suite lors de leur utilisation : déplacement, reproduction, et autres processus de votre cru (ou apportés par l'évolution).

Limiter le programme

C'est dans un but de recherche et surtout de simplicité que l'on peut limiter différents paramètres : la nourriture, le nombre total d'individus, leur durée de vie, le nombre de génération... Sinon l'ordinateur qui exécute le programme sera très vite saturé. Ces limites ont aussi un avantage : on peut réaliser des expériences répétitives, observer l'évolution sur un nombre de générations donné, étudier comment s'effectue la sélection...





Les «Plus» , recherche de l'aboutissement

Faire «comme de vrai»

Il y en aura sûrement pour penser «Et les virus, bactéries, parasites... ?» Ceux-ci n'auront pas tort : il y en a dans certains programmes de vie artificielle (entre autres : Creatures). Mais cet aspect de la vie peut aussi apparaître «naturellement». Un virus n'est pas très complexe : quelques gènes qui servent à se dupliquer (se transmettre) d'un individu à l'autre, voire à perturber leur comportement.

La difficulté est maintenant le système immunitaire (car en cas de virus létaux, tous les individus finiront par disparaître), c'est une chose à bien considérer, ou à laisser faire par l'évolution... Le plus simple est d'y penser en dernier, ou de ne pas y penser du tout.

Simplifier le programme

Comme pour tout programme informatique, on aboutit parfois à un monstre d'une taille imposante. Comment le faire plus petit et qu'il marche aussi bien : un programmeur peut chercher à le faire. C'est pourtant simple : le programme principal/central gère les «tâches de fond» (enregistrement, gestion de l'interface, les calculs, traduction et exécution des codes des individus...). Le tout est de savoir comment le faire :

  • «Factoriser» les répétitions : créer des fonctions qui seront utilisées avec différentes variables, au lieu de les utiliser x fois dans le programme et de x manières différentes.
  • Utiliser un système «multitâche» ou qui fait tout comme : il exécute les ordres le plus rapidement possible. Ces commandes (simples) arrivent sur une liste et sont executées les unes après les autres, parfois sans rapport les unes avec les autres : tous les processus en cours se déroulent ensembles (y compris une éventuelle attente d'une action de l'utilisateur).
  • Résoudre ce problème par un algorithme génétique (recherche des meilleurs programmes dans ce genre). Belle idée ! Mais qui peut prendre encore plus de temps...



Conclusion

On arrive toujours à quelque chose dans ce domaine : déjà de nouvelles espèces «numériques» (dans le jeu Creatures et ses versions successives) ou des agents intelligents (moteurs de recherche). Les applications concrètes sont peu visibles, mais se retrouvent partout : les jeux (vie artificielle, intelligence artificielle dans certains jeux de stratégie), des systèmes experts (médecine ou tout autre domaine bien spécifique)...
Les principaux intérêts de ce genre de programmes sont bien sûr : obtenir des ordinateurs plus performants, trouver une bonne solution rapidement, créer des objets ou des programmes difficilement concevables par les manières plus «traditionnelles» : l'intelligence artificielle, et plus récemment des robots capables d'évolution «spontanée».



Gabriel Chandesris, le 10 octobre 2000
(mail : gabywald[no-spam]@webmails.com ;
 URL : http://gabriel.chandesris.free.fr/)


Sources :

    Livre(s) :
    • «L'ordinateur génétique», Jean Louis Dessales,
      Hermès, ISBN 2-86601-538-X
    • «3 étapesvers l'intelligence artificielle, pour Amstrad CPC»,
      P.S.I., ISBN 2-86595-278-9
      (Notamment le chapitre 3 : Ashby et les structures adaptatives)
    • «Conscience artificielle et systèmes adaptatifs», Alain Cardon,
      Eyrolles, ISBN?
      (Chapitre XVI : l'évolution des systèmes d'agents)
    Magazines :
    • Le Nouvel Observateur du 22 eu 28 juin 2000, p.109 : «Moteurs Darwiniens»
    • Libération du 1er Septembre 2000, p.22 «Le robot, génération spontanée»
    Jeux :
    • Creatures (2, 3, Aventure) de GTInteractive, 1996 à 2000 (ainsi que l'aide jointe avec le jeu)
    • Life (très nombreux petits programmes du même nom sur «le jeu de la vie» )



Quelques éléments peuvent être rajoutés (comme des liens de références) mais vous en retrouverez l'essentiel dans les billets précédents abordant le sujet : Simulation informatique, Vie Artificielle et Programmation Orientée Objet / Vie Artificielle.



@+
Gaby


Publié dans la catégorie : Biologie


(Publicité)


Connection

Last Update : 30.12.2015

External Links
Gaby's Home
Gaby's Blog
Gaby's Mail

Blog Links
Police
Cossaw
SunFox
Richard
Gilda
MelODye
Esther
Kozlika

Internal Links
Gaby's Blog
Réseau divin
Perso
Actualités
Livres
Commerce sur Internet
Emploi
Sorcier Glouton
Biologie
Cyberdelia

Join Webmaster
Zone Privée

Visitor No : <unknown>
For spam