Conception de Programmes Evolutifs Auteurs: Paul-Kenji Cahier Sylvain Mahé Laurent Toselli Pré Soutenance de TER Année 2004-2005 Conception de Programmes Evolutifs Encadrants : Cathy Escazut et Michel Gautero
Sommaire Introduction (6 min.) Détails de l’application (7 min.) Direction donnée par des problèmes rencontrés. Programmation statique vs programmation évolutive. Présentation du projet. Détails de l’application (7 min.) Moteur de sélection. Application graphique. Risques (2 min.) Planification (1 min.) Questions ( le temps restant )
Introduction Problème qui nous a amené à ce TER: Existe-il des programmes s’auto modifiant qui sont codés une fois pour toute ? Réponse négative à notre connaissance. Réponse positive pour une fonction de la sorte fam : fonction auto modifiante (define (fam x) (let ((g (lambda (x) (* k x)))) (define (modifg) . ) (define (iter) (if (not (= (g x) y)) (modifg) g)) (iter))
Introduction (suite) Modification de la fonction g mais son aspect reste globalement le même à l’intérieur de la fonction f. On est dans une approche « fermée » de l’auto modification (dépendant du problème). D’où utilisé pour des cas particuliers. Notre application générera du code n’ayant peut-être aucun rapport avec le code précédent. On est dans une approche « ouverte » (indépendant du problème). Le cas général sera présenté dans notre projet avec une application représentant un cas particulier.
Sommaire Introduction (6 min.) Détails de l’application (7 min.) Direction donnée par des problèmes rencontrés. Programmation statique vs programmation évolutive. Présentation du projet. Détails de l’application (7 min.) Moteur de sélection. Application graphique. Risques (2 min.) Planification (1 min.) Questions ( le temps restant )
programmes statiques Vs. programmes évolutifs. Les programmes classiques , en général, ne sont pas vus pour être modifiés après compilation. La modification de code à l’extérieur du programme (finalisé) n’est pas possible. D’où notion de patchs correctifs (en cas de bogue). Intérêt de notre part de trouver un mécanisme.
programmes statiques Vs. programmes évolutifs. Programmes dynamiques. (f a m vues précédemment) Programmes 2 en 1. Modification et exécution du programme non dissocié. Pas d’idées pour le moment, pas de connaissances à ce sujet. Projet TER (notre proposition ) Donc un choix de la représentation des programmes personnalisée pour obtenir cette capacité. Modification possible des programmes sans que l’idée soit changée et en temps réel.
Sommaire Introduction (6 min.) Détails de l’application (7 min.) Direction donnée par des problèmes rencontrés. Programmation statique vs programmation évolutive. Présentation du projet. Détails de l’application (7 min.) Moteur de sélection. Application graphique. Risques (2 min.) Planification (1 min.) Questions ( le temps restant )
Projet de colonie de fourmis. Simulation de comportement de fourmis dans un certain environnement. Un seul caste de fourmis au départ (ouvrière). Actions de base (fonctions de base) permises pour chaque fourmis : Chercher de la nourriture. Déplacement. Faire face à une attaque de prédateur (extension) …
Projet de colonie de fourmis. Visibilité via une interface graphique : Suivi du comportement global des fourmis. Obtention d’informations sur l’une d’entre elles. Modifications de paramètres (extension). Génération de programme à l’instant t. (lié au moteur) Extensions: Prédateurs (araignées) Fourmilière(s) avec plus d’une classe de fourmis (ouvrière, soldat, nurse, reine, princesse, …) Notion d’ordres dans les besoins d’une fourmi. Une fourmilière codé statiquement face à une autre évolutive Classeur d’a.g. sur 2 niveaux (suivre l’héritage entre générations) ? Environnement changeant.( utilisation des règles d’inférences ) ?
Sommaire Introduction (6 min.) Détails de l’application (7 min.) Direction donnée par des problèmes rencontrés. Programmation statique vs programmation évolutive. Présentation du projet. Détails de l’application (7 min.) Moteur de sélection. Application graphique. Risques (2 min.) Planification (1 min.) Questions ( le temps restant )
Moteur de sélection Composition du moteur général: moteur d’inférences algorithmes génétiques (générateur de classeurs). Sélection d’un classeur = algorithmes appartenant à une même classe de problèmes (« déplacement », « chercher nourriture », « chercher quelqu’un », …) Vue sur les règles d’inférences: Ensemble de règles de type env -> action (fonctions de base) appelées classeur. Ensemble de règles de type action -> ‘algon‘
Moteur de sélection Les algorithmes génétiques, évolution : Trouver des règles plus convenables pour une fourmi dans un certain environnement. Re-génération de nouveaux classeurs. Possibilité d’avoir plusieurs actions pour un environnement. Le moteur d’inférences se charge de calculer la liste des algorithmes possibles. Choix de l’algorithme pour la fourmi parmi ceux retenues.
Sommaire Introduction (6 min.) Détails de l’application (7 min.) Direction donnée par des problèmes rencontrés. Programmation statique vs programmation évolutive. Présentation du projet. Détails de l’application (7 min.) Moteur de sélection. Application graphique. Risques (2 min.) Planification (1 min.) Questions ( le temps restant )
Application graphique Écrit en langage java: Portabilité du projet Confirmer la capacité du moteur à rester indifférent aux langages de l’application. Interface graphique en Java 2D avec possible extension en Java 3D via JOGL Liaison entre application et moteur Le moteur est en scheme et est converti en C via Chicken/Stalin Il est compile sous forme de librairie ensuite liee au java via JNI Combinaison permet de garder une bonne vitesse sur le partie Scheme qui sera tres solicite Pourquoi pas Bigloo? Bigloo ne gere pas call-cc et bigloo serait trop lent pour un moteur qui risque d’etre appele plusieurs dizaines de fois par seconde.
Application graphique Detail de l’application Chaque fourmi est visionable pour voir ses specificites La fenetre principale presente la vue d’ensemble de la fourmiliere Certaines interactions sont possibles (uniquement a des desseins d’experience) Au debut de l’application la fourmiliere est cree, ainsi que l’environement, puis on fait appel au moteur scheme a chaque fois qu’une fourmi a besoin de prendre une decision (ie a fini d’executer une action) Portabilite A cause des JNI l’execution ne peut se faire dans un applet, et elle requiert des binaires differents pour chaque architecture Le code reste aisement portable de par sa nature, c’est a dire generee depuis le scheme/java
Sommaire Introduction (6 min.) Détails de l’application (7 min.) Direction donnée par des problèmes rencontrés. Programmation statique vs programmation évolutive. Présentation du projet. Détails de l’application (7 min.) Moteur de sélection. Application graphique. Risques (2 min.) Planification (1 min.) Questions ( le temps restant )
Risques Défaut de conception du moteur sélection (moteur inférences + système de classeurs) : Trouver la bonne représentation des classeurs pour les faire interagir avec le moteur d’inférence. Défaut de liaison moteur sélection/GUI Divers problèmes liés aux systèmes d’exploitations. GUI : Lenteur de l’interface. Le nombre de fourmis à gérer ne doit pas ralentir l’application. Environnement dynamique dans l’extension pour simplifier les capacités de gestion et d’altération dans l’environnement.
Sommaire Introduction (6 min.) Détails de l’application (7 min.) Direction donnée par des problèmes rencontrés. Programmation statique vs programmation évolutive. Présentation du projet. Détails de l’application (7 min.) Moteur de sélection. Application graphique. Risques (2 min.) Planification (1 min.) Questions ( le temps restant )
Planification
Sommaire Introduction (6 min.) Détails de l’application (7 min.) Direction donnée par des problèmes rencontrés. Programmation statique vs programmation évolutive. Présentation du projet. Détails de l’application (7 min.) Moteur de sélection. Application graphique. Risques (2 min.) Planification (1 min.) Questions ( le temps restant )
Questions Environnement changeant ? Possibilité d’avoir d’autres comportements de fourmis ? Codes statiques ? …
Conception de programmes évolutifs That's all folks