II LE CADRE DU STAGE : MAGe

publicité
Vincent SAMILLON
Maître de stage : Guillaume CAVORY
Laboratoire de Génie Informatique et d'Automatique de l'Artois
à Béthune
RAPPORT DE STAGE
CRÉATION D'UN OUTIL DE GÉNÉRATION DE SCÉNARII
ET D'ANALYSE DES RÉSULTATS
POUR UN ALGORITHME GÉNÉTIQUE
Master I Génie Mathématique et Informatique
Université des Sciences et Technologies de Lille
Année 2008-2009
Table des matières
Remerciements ..................................................................................................................................... 3
INTRODUCTION ............................................................................................................................... 4
I Présentation du LGI2A ...................................................................................................................... 6
A . le LGI2A en bref ........................................................................................................................ 6
B . Thèmes de recherche ................................................................................................................. 6
C . Les Algorithmes Génétique ...................................................................................................... 7
1. Qu'est ce qu'un AG ( Algorithme Génétique) ........................................................................ 7
2. Exemple d'opérateurs ............................................................................................................ 7
3. Exemple d'application
.................................................................................................................................................... 8
II LE CADRE DU STAGE : MAGe .................................................................................................... 9
A . Qu'est ce que MAGe ............................................................................................................... 9
Diagramme UML d'une version de MAGe ........................................................................... 10
B. Configuration d'une campagne
....................................................................................................................................................... 11
C. Lancement des Optimisations .................................................................................................. 12
............................................................................................................................................................ 13
III / LES TRAVAUX EFFECTUÉS ET LES APPORTS DU STAGE............................................... 13
A. Analyse des besoins ................................................................................................................. 13
B. Les outils mis à ma disposition................................................................................................. 14
C. Présentation de l'application .................................................................................................... 14
D . Bilan du stage .......................................................................................................................... 22
Problèmes rencontrés ............................................................................................................... 22
Apports du Stage ..................................................................................................................... 22
Conclusion
............................................................................................................................................................ 23
Remerciements
Avant tout développement sur cette expérience professionnelle, il m'apparaît
opportun de commencer ce rapport de stage par des remerciements,
Aussi, je remercie Guillaume CAVORY, mon maître de stage pour le temps qu'il m'a
consacré afin de comprendre le thème et les aboutissements des recherches menées par
son équipe et pour la confiance et la liberté qu'il m'a accordées dans la gestion du projet.
Je remercie également l’ensemble de mes professeurs de l'IUP GMI, pour la diversité et
la qualité de leurs enseignements qui ont facilité mon autonomie et mon adaptation à cette
mission.
INTRODUCTION
Ce stage de un mois effectué dans le cadre du Master I informatique parcours GMI
de Lille m'a permis de découvrir le travail d'une équipe d'un Laboratoire d' Informatique, le
LGI2A à Béthune, et d'y mener une partie du projet du début à la fin.
L'annonce du stage était la suivante :
TITRE: Création d'un outil de génération de scénarii et d'analyse des résultats pour un algorithme
génétique
THEME:
Algorithme génétique, plan d'expériences, analyse de données
OUTILS:
Java, netbeans, XML
ANNONCE :
Le LGI2A développe actuellement un algorithme génétique. L'inconvénient de
cet algorithme génétique (comme de tous les autres) est la création de campagnes
d'essais. Lors d'une campagne, il faut générer beaucoup de fichiers de
configuration (au format XML) et lancer tous les essais.
Une fois les optimisations réalisées, il faut ensuite analyser les résultats.
Le travail demandé consiste à créer une interface graphique permettant de
générer facilement les fichiers de configuration et aussi de lancer les
optimisations. Les optimisations pourront être réparties sur plusieurs machines.
Une deuxième interface d'analyse sera demandée afin d'extraire les résultats
des fichiers d'optimisation (également au format XML). La méthode des plans
d'expériences pourra être une bonne approche, mais d'autres méthodes
pourront être utilisées.
Cette annonce m'a attiré pour le domaine de recherche ainsi que par les
technologies avec lesquels devait être développer le projet,
Hormis la possibilité d'approfondir mes connaissances en Java J2EE et notamment
en programmation d'interface Homme Machine, ce stage m'as permis de concevoir une
application et de la développer, tout en découvrant un domaine de recherche à savoir les
algorithmes génétique.
Dans ce rapport je m'attacherai à mettre en évidence l'expérience et les connaissances
que m'ont apportées la découverte d'un laboratoire informatique, ainsi que les
connaissances que j'ai pu acquérir dans ce domaine.
Pour cela dans une première partie je ferai une présentation du LGI2A( Laboratoire
de Génie Informatique et d' Automatique de l'Artois), puis je décrirai dans une seconde
partie le projet sur lequel j'ai été amené a travailler
afin de permettre au lecteur de
percevoir les difficultés et les objectifs de la mission, que j'ai du faire remplir lors de ce
stage, Dans une troisième partie , je ferai part des travaux que j'ai effectués d'un point de
vue fonctionnelle et en abordant certaines difficultés techniques que j'ai dû surmonter, je
terminerai sur le bilan de cette expérience et les perspectives d'évolution de mon projet au
sein du projet global.
I Présentation du LGI2A
A . le LGI2A en bref
L’objectif du laboratoire multidisciplinaire LGI2A est de fédérer des compétences
informatique et automatique du pôle universitaire de Béthune autour d’une thématique
transversale "Logistique" qui s’est fortement développée avec la création locale de filières
d’enseignement (DUT QLIO, Licence Professionnelle Melog, Master e-log, Master OGP).
La maîtrise des flux physiques, des flux financiers et des flux d’information sont des points
de passage obligés à toute démarche de progrès dans l’entreprise. Les travaux de
recherche concernent l’étude et la conception d’outils pour améliorer le pilotage des
différents maillons de la chaîne logistique globale (Approvisionnement - Production Transport - Distribution).
B . Thèmes de recherche
La thématique de recherche entre dans le cadre du pilotage des systèmes discrets
complexes. Elle cherche à définir de nouveaux modèles pour étudier le comportement des
systèmes considérés ici (systèmes discrets distribués, grande diversité des éléments,
objectifs contradictoires, contraintes multiples, perturbations). Compte tenu de la
complexité intrinsèque de ces systèmes, une modélisation orientée "multi-modèles"
(Simulation - Réseaux de Petri - Multiagents) est bien adaptée. Par ailleurs, compte tenu
de l’imperfection des informations gérées par ces modèles, des approches Fusion
d’informations sont mises en place (théorie des possibilités, théorie de l’évidence...). Elle
propose également de nouvelles méthodes d’ordonnancement qui permettent, à partir de
ces modèles, de coupler les approches par optimisation statique avec les approches
dynamiques issues du domaine du pilotage des systèmes.
Pour répondre en partie à ces problèmes, les travaux de recherche se sont structurés
autour de trois axes complémentaires :



Modélisation des Systèmes Complexes : Evaluation et Commande des Modèles
Discrets et Continus
Fusion d’information : Aide à la Décision et Analyse multi-critère
Optimisation combinatoire : approches évolutionnistes mono et multi
objectifs
C'est dans ce dernier domaine que l'on peut classer les AG (algorithmes génétiques ) et
MAGe (Multi Algorithme Genétique) qui est développé par le LGI2A. Afin de mieux
appréhender le cadre dans lequel s'est déroulé mon stage, j'explique par la suite ce qu'est
un algorithme génétique, les particularités de MAGe, ainsi que son mode
fonctionnement.
C . Les Algorithmes Génétique
1. Qu'est ce qu'un AG ( Algorithme Génétique)
Les algorithmes génétiques appartiennent à la famille des algorithmes évolutionnistes.
Les algorithmes évolutionnistes ou algorithmes évolutionnistes, sont une famille
d'algorithmes s'inspirant de la théorie de l'évolution pour résoudre des problèmes divers.
Ils font ainsi évoluer un ensemble de solutions à un problème donné, dans l'optique de
trouver les meilleurs résultats. Ce sont des algorithmes stochastiques, car ils utilisent
itérativement des processus aléatoires.
Les algorithmes génétiques utilisent la notion de sélection naturelle développée au
XIXe siècle par le scientifique Darwin et l'appliquent à une population de solutions
potentielles au problème donné. On se rapproche par "bonds" successifs d'une solution,
comme dans une procédure de séparation et évaluation, à ceci près que ce sont des
formules qui sont recherchées et non plus directement des valeurs.
Ce type d'algorithme utilise des outils issus de la biologie génétique, essentiellement des
opérations intervenant au sein d'un organisme et entrant en jeu dans les mécanismes de
la sélection naturelle.
2. Exemple d'opérateurs
Ces opérations peuvent être : la sélection , la mutation, enjambement et d'autres encore.
Les algorithmes génétiques, afin de permettre la résolution de problèmes, se basent sur
les différents principes décrits ci-dessus. De manière globale, on commence avec une
population de base qui se compose le plus souvent de chaînes de caractères
correspondant chacune à un chromosome.
Le contenu de cette population initiale est généré aléatoirement. On attribue à chacune
des solutions une note qui correspond à son adaptation au problème. Ensuite, on effectue
une sélection au sein de cette population.
Il existe plusieurs techniques de sélection. Voici les principales utilisées :
Sélection par rang
Cette technique de sélection choisit toujours les individus possédant les meilleurs scores
d'adaptation, le hasard n'entre donc pas dans ce mode de sélection.
Probabilité de sélection proportionnelle à l'adaptation (appelé aussi roulette ou roue
de la fortune)
Sélection par tournoi
Sélection uniforme
La sélection se fait aléatoirement, uniformément et sans intervention de la valeur
d'adaptation. Chaque individu a donc une probabilité 1/P d'être sélectionné, où P est le
nombre total d'individus dans la population.
Lorsque deux chromosomes ont été sélectionnés, on réalise un enjambement. On
effectue ensuite des mutations sur une faible proportion d'individus, choisis
aléatoirement. Ce processus nous fournit une nouvelle population. On réitère le processus
un grand nombre de fois de manière à imiter le principe d'évolution, qui ne prend son sens
que sur un nombre important de générations. On peut arrêter le processus au bout d'un
nombre arbitraire de générations ou lorsque qu'une solution possède une note
suffisamment satisfaisante.
En effectuant ces opérations (sélection de deux individus, enjambement, mutation), un
nombre de fois correspondant à la taille de la population divisée par deux, on se retrouve
alors avec une nouvelle population (la première génération) ayant la même taille que la
population initiale, et qui contient globalement des solutions plus proches de l'optimum. Le
principe des algorithmes génétiques est d'effectuer ces opérations un maximum de fois de
façon à augmenter la justesse du résultat.
3. Exemple d'application
Le problème du voyageur de commerce :
Ce problème est un classique d'algorithmique. Son sujet concerne les trajets d'un
voyageur de commerce. Par le biais d'algorithmes génétiques, il est possible de trouver
des chemins relativement corrects.
Applications industrielles
Optimisation de la chaine de production dans l'industrie automobile.
Informatique décisionnelle
Les algorithmes génétiques sont mis en œuvre dans certains outils d'informatique
décisionnelle ou de data mining par exemple pour rechercher une solution d'optimum à un
problème par mutation des attributs (des variables) de la population étudiée.
Ils sont utilisés par exemple dans une étude d'optimisation d'un réseau de points de vente
ou d'agences (banque, assurance, ...) pour tenter de répondre aux questions :

quelles sont les variables (superficie, effectif, ...) qui expliquent la réussite
commerciale de telle ou telle agence ?

en modifiant telle variable (mutation) de telle agence améliore-t-on son résultat ?
II LE CADRE DU STAGE : MAGe
Pour bien cerner la raison d’être de ma mission, il apparaît nécessaire de développer le
fonctionnement de MAGe.
A . Qu'est ce que MAGe
MAGe (Multi Algorithme Génétique) est un AG ayant les particularités suivantes :

plusieurs populations possible

un individu peut avoir plusieurs chromosomes

chaque chromosome peut avoir son propre fitness (permettant ainsi de faire plus
finement du multi-objectif)

un chromosome est un objet (au sens informatique)

la configuration et les résultats sont en XML
En Rouge les différences entre un AG standard et MAGe :
AG
MAGe
1
population
z populations
N individus
N individus
1 chromosome
y
chromosomes
X gènes
X gènes
1 allèle
t allèles
Diagramme UML d'une version de MAGe
La classe principale de l'application MAGe est multiAG, elle permet de lancer les
optimisations sur un fichier de configuration xml donné en paramètre.
Les classes abstraites et autres classes parentes représentent des types d'opérations
génétiques.
Par exemple : la sélection avec la classe AbstractSelection, on voit ici qu'il y a deux
deux opérateurs génétiques correspondant à la sélection SelectionDeterministe et
SelectionTournoiSchochastique.
Les opérations génétique au sein de MAGe ont été conçus et implémentés en tant
qu'objets ce qui permet de créer et d'ajouter de nouvelles opérations sans avoir à
refondre l'ensemble de l'application. MAGe est vraiment évolutif !
B. Configuration d'une campagne
Le fichier de configuration de MAGe se fait entièrement en XML. Jusqu'ici la configuration
se faisait manuellement, pour une campagne le nombre d'essais pouvant être important
ce travail était fastidieux.
Voici un exemple suivi des explications :
Exemple de fichier de configuration :
1. < ?xml version="1.0" standalone="yes"?>
2. < ?xml-stylesheet href="./mage.xsl" type="text/xsl" ?>
3. < mage interface="true" nombreDeRun="35">
4. < population nom="adjOmote" trace="10" >
5. < converge nom="NGene" > 25000 </converge>
6. < mutation nom="Swap" probabilite="0.0001"/>
7. < crossover nom="Naive" probabilite="0.8"/>
8. < initialisation nom="InitInteger" > 0 4 </initialisation >
9. < evaluation nom="NurseRostering"> instance.dat </evaluation >
10.
< objectif nom="min" />
11.
< elitism value="true"/>
12.
< remplacement nom="RemplaceRang" />
13.
< selection nom="Selection" > 2 </selection >
14.
< individu nombre="30" nombreChromosome="5"
nombreGenesParChromosome="5:10:15:20:25" />
15.
< /population>
16.
< /mage>
Les explications
1. En-tête du fichier xml.
2. Déclaration du fichier de formatage (pour l'affichage dans un navigateur web)
3. Déclaration d'un nouveau MAGe avec
 interface graphique lors de l'optimisation activé à true
 35 runs différents à réaliser
4. Déclaration d'une nouvelle population
 le nom de la population est adjOmote et le fichier résultat sera donc adjOmote.xml
 toute les 10 générations, on place dans le fichier test_runXX.val (ou XX est le
numéro du run en cours) les valeurs du fitness mini, moyen et maxi.
5. L'opérateur de convergence est NGene. Cet opérateur recevra le paramètre 25000
6. La mutation est de type swap et la probabilité de mutation est de 0.0001
7. Le cross-over est de type Naive avec 0.8 de probabilité.
8. L'initialisation des individu se fait grace à l'opérateur InitInteger avec les paramètres 0 et 4
9. L'évaluation des individus utilise la classe NurseRostering. Cette classe recevera le
paramètre instance.dat
10.
L'objectif est de minimiser les individus
11.
On réalisera de l'élitisme durant l'optimisation
12.
Pour réaliser le remplacement des individus on utilisera la classe RemplaceRang
13.
La sélection des individus utilisera la classe Selection avec comme paramètre 2
14.
Le nombre d'individus dans la population est de 30 et chaque individu aura 5
chromosomes ayant respectivement 5, 10, 15, 20 puis 25 gènes.
15.
Fin de déclaration de la population. A ce point, il est possible de déclarer une autre
population.
16.
Fin de déclaration du MAGe. Ne plus rien mettre après.
Si on désire utiliser plusieurs populations en même temps, il suffit de mettre dans le fichier
de configuration plusieurs blocs population.
Pour les opérateurs d'initialisation, de sélection, d'accouplement, d'évaluation, de
croisement, de mutation et de remplacement, on indique dans le paramètre nom le nom
de la classe désirée (il ne faut pas oublier de la compiler !)
L'opérateur d'évaluation est particulier dans le sens où il est spécifique à la résolution d'un
type de problème. Il est nécessaire d'être expert afin de modéliser un problème sous la
forme d'une population au sens génétique. Par exemple NurseRostering est utiliser dans
la résolution de problème de plaining hospitalier, il est toujours associé un fichier
contenant les données utiles a l'opérateur d'évaluation, et correspondant aux informations
sur les gènes des chromosomes des individus d'une population. Il en existe d'autre
comme VRP qui modélise des problèmes du voyageurs de commerce, trouver le chemin
le plus court.
Il est possible de visualiser directement dans un navigateur ce fichier gâce à un autre
fichier de type XSL, qui permet la mise en forme d'un fichier XML en format HTML, c'est
un excellent outil pour la présentation des données XML.
C. Lancement des Optimisations
Fichier de
configuration
en XML !
MAGe
Fichiers
résultats
en XML !
Présentation de la configuration d’une campagne manuellement (sans IHM)
Le lancement des optimisations se faisaient aussi manuellement directement en ligne de
commande , ou à l'aide d'un script l lorsque le nombre de fichiers .xml de configuration
était important.
Un fichier de résultat dont le nom figure dans le fichier de configuration XML balisé de la
façon suivante :
<xml>,,,
...
<fichier_resultat nom="MUTrandom_result_pop1.xml" />
</population>
</mage>
Once the optimizations were launched this results file is created in the execution directory
of MAGe application.
III / LES TRAVAUX EFFECTUÉS ET LES APPORTS DU STAGE
A. Analyse des besoins
Le premier objectif du stage était de concevoir une interface graphique permettant de
générer ces fichiers de configuration
Pour y parvenir il m'a fallu prendre connaissance de l'existant , pour cela j'ai du faire appel
a mes connaissances en java acquise au cours de ma formation afin de procéder a une
analyse de l'existant et pourvoir envisager des solutions
Lors de la création d'une campagne il faut générer beaucoup d'essais au format XML.
Il fallait donc trouver des solutions pour créer une campagne d'essais à partir
d'opérateurs qui ne sont autres que des classes java dans l'application MAGe.
L'algorithme MAGe étant au stade de la recherche cela implique qu'il est amené à
évoluer, et en ce qui concerne l'application que j'ai eu a développer cela implique qu'elle
devait être compatible avec les futurs versions de MAGe qui contiendrait certainement des
opérateurs supplémentaires.
Les opérateurs étant amenés à évoluer en nature et en nombre, il fallait que cette
application puisse elle aussi s'adapter à ces évolutions pour ne pas avoir à être actualiser
(recompilé) à chaque nouvelle version de MAGe ou pire encore s'éffondrer au bout de
quelques versions de MAGe.
Le nombre d'opérateurs pouvant être important il fallait pouvoir les organiser de la façon la
plus claire et la plus facile d'utilisation possible.
J'ai donc suggérer à ce sujet que les opérateurs soient regroupés au sein d'un même
paquetage, cette remarque a été approuvée et sera certainement mise en oeuvre dans
les prochaines versions.
Lors d'une campagne d'essais on peut faire varier un ou plusieurs opérateurs d'un essai à
l'autre soit par leur nom (type d'opération) soit par les valeurs qu'ont leur attribue, les
essais ainsi constitués sont les combinaisons de tous les opérateurs choisis.
En vue de pouvoir lancer les optimisations sur les fichiers de configuration et d'analyser
les résultats, il apparaît nécessaire d'organiser des sauvegardes et de pouvoir les réutiliser
dans le but de procéder à une analyse des résultats.
Il fallait également pouvoir lancer les optimisations à la volé sans avoir à modifier la classe
principale de l'application MAGe.
L'AG étant très gourmand en calcul (des optimisations peuvent parfois prendre des heures
voir des jours d'éxécution), l'application devait rester réactive pendant les optimisations,
B. Les outils mis à ma disposition
Afin de développer l'interface de Mage j'ai eu a ma disposition :
- Le code source de MAGe ansi que le diagramme UML
- un PC sous l'environnement Windows ainsi que les munis des environnements de
développement NetBeans et Eclipse.
NetBeans permet l'utilisation rapide de composant swing, il génère automatiquement le code
associé à ces composants, les classes ainsi créées sont appelés beans , elles sont facilement
réutilisables.
Le travail des premiers jours du stage a consisté à me familiariser avec l'environnement
NetBeans et à approfondir ma connaissance de la bibliothèque java SWING. Ce travail préalable
était un point de passage nécessaire pour prendre connaissance des possibilités qu'offrent ces
outils de développement afin d'élaborer un cahier des charges et pouvoir envisager des solutions
techniquement réalisable. Les projets réalisés dans le cadre de ma licence m'ont permis de
gagner du temps et de m'adapter.
C. Présentation de l'application
A travers quelques écrans je vais expliquer le fonctionnent de l'application que j'ai développée.
Illustration 1: Figure 1 : Menu principal de l'application
Comme on le voit sur la figure 1, on peut à partir de l'application soit ouvrir une nouvelle campagne
soit ouvrir une campagne existante et ayant été créée a partir de cette application.
La figure 2 ci-dessous présente le menu pour la création d'une nouvelle campagne, l'utilisateur doit
tout d'abord saisir le nom de la campagne tel qu'il souhaite qu'elle soit sauvegardée. Puis choisir la
version de MAGe qu'il souhaite. L'utilisation de la version de MAGe par défaut n'entraine pas
d'autre choix supplémentaire, par contre la sélection d'une autre version que celle par défaut
oblige l'utilisateur à choisir le nom du paquetage ainsi que le nom de la classe principale de cette
version de MAGe.
L'application devait permettre de sélectionner les opérateurs nécessaires à la
configuration de scénarii . Ces menus pour la création d'une nouvelle campagne
répondent au problème posé par l'évolution constante de MAGe. J'ai proposé cette
solution afin que mon application soit compatible avec les versions futures et n'a pas
besoin d'être modifiée à chaque ajout ou modification d'opérateurs dans MAGe. J'ai crée
une classe au sein de mon application qui en fonction du jar sélectionné pour le MAGe et
le nom du paquetage va créer une arborescence d'opérateur comme on peut le voir sur
l'écran suivant (figure 3).
On distingue 3 éléments différents sur la figure 3 numéroté de 1 à 3 :
- La partie 1 est un panel contenant L'arborescence d'opérateurs chaque répertoire représente un
type d'opération (exemple : accouplement ) et chaque classe un opérateur pouvant être
sélectionné et paramétré grâce à la partie 3.
3 -2Configuration
d'une campagne
- Figure
La partie
est utile à la configuration
de l'individu (balise individu du fichier xml ) elle est
obligatoire pour toute campagne.
- La partie 3 permet de sélectionner les opérateurs pour les différents essais de la campagne, les
opérateurs sélectionnés par « Sélection Invariante » seront les mêmes pour tous les essais , les
autres seront combinés à raison de un type d'opération par essai.
Par exemple en sélectionnant 2 opérateurs d'accouplement et trois 3 opérateurs de mutation par
« sélection variante » on aura 6 essais différents contenant chacun 1 opérateur d'accouplement
et 1 opérateurs de mutation.
Une fois les opérateurs sélectionnés il faut générer les essais , en cliquant sur le bouton
« Générer populations ». Un nouvel onglet « explorateur » est créé, il contient les différents
essais générés pour la campagne
Les essais sont générés automatiquement par une classe « ConfigGenerator » qui constitue le
coeur des traitements de mon application, elle prend en paramètre les listes d'opérateurs
sélectionnés et génère les fichiers xml correspondant.
Sur la figure 4 ci dessous on peut voir l'explorateur On y voit a gauche une arborescence du
répertoire de sauvegarde de la campagne.
Il est possible grâce a cet interface de visualiser les essais créés dans le panel de droite et de
lancer les optimisations a l'aide des boutons situer en bas de l'ecran.
Comme on peut le voir les optimisations peuvent être lancées une à une ou toutes en même
temps.
Pour chaque essai lorsque l'on lance l'optimisation une fenêtre pop-up est ouverte elle contient
deux onglets le premier ci-dessous (figure 4) récapitule la configuration de l'essai. Le deuxième
onglet (Figure 5) affiche en temps réel l'état d'avancement de l'optimisation en cours.
Figure 5:
fenêtre pour l'optimisation (récapitulatif de la configuration de la population 0 de l'essai 0)
Figure 6 :visualisation en temps réel des fitness pour la population 0 de l'essai 0
D . Bilan du stage
Le bilan est positif selon les mots de mon tuteur au LGI2A :
« Je n'ai qu'une seule remarque à faire pour l'instant : du vrai bonheur !
Je fais des tests plus poussé pour traquer d'éventuels problèmes, mais pour
l'instant, je prends plaisir à utiliser votre projet.
A bientôt, G. »
Le stage étant très court et n'ayant pas eu de binôme sur ce projet , il m'a manqué du temps pour
réaliser la deuxième partie du projet qui était une interface d'analyse des résultats ( ou
optimisations). C'est avec regret que j'ai du renoncer à faire cette seconde partie.
Problèmes rencontrés
Durant ce stage j'ai rencontré certaine difficultés d'ordre technique que j'ai du surmonter :
- Créer une arborescence de classes à partir d'une archive .jar .
- Créer un menus de sélection et de paramètrage d'opérateur génétique pour la
configuration d'essais, car les opérateurs ont des attributs différent voir spécifique.
- ordonnancement des operateurs :
l’agorithme génétique attend les opérateurs dans un certain ordre ce qui implique la
nécessité d'un tri pour ne pas contraindre l'utilisateur a sélectionner les opérateurs dans
un ordre précis
l'inconvénient de cette méthode et que qu'il fallu définir une fonction de tri qu'il faudra
redéfinir si l'on ajoute un nouveau type d'opérateur à MAGe (le problème ne se pose pas
si l'on ajoute un opérateur d'un type existant ).
Afin de pouvoir ouvrir une campagne ayant était créée précédemment, il m'a fallu gérer un
fichier de configuration, sauvegardé dans le répertoire de la campagne afin de mémoriser
la version de MAGe utilisée pour la configuration de la campagne. Ceci permet de lancer
les optimisations sur les essais créés avec la bonne version de MAGe.
Apports du Stage
Ce stage m'as permis :
- De procéder à l'étude d'un projet de petite taille.
- De me familiarisé avec l'environnement netbeans
- D'approfondir ma connaissance de la bibliothèque Swing en Java
- De gérer un projet du début a la fin
- D'acquérir de nouvelle connaissance pour le développement d'interface graphique et de
méthode tel que le design pattern MVC afin de séparer la logique applicative de l'unité
graphique.
- D'acquérir plus d'autonomie : recours à l'auto-documentation.
- De découvrir des travaux de recherche sur les Algorithmes génétiques.
Conclusion
Cette mission m'a donné l'occasion de prendre des initiatives et de proposer des solutions.
Les technologies utilisées sur le projet sont aujourd'hui très répandues , l'expérience acquise
pourra certainement être mise à profit dans mes futures missions.
Je retiens de ce stage un bilan positif, car proposer une solution satisfaisante pour l'utilisateur a
été pour moi une expérience très gratifiante.
Téléchargement