La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Par Soumaya Chaffar, Alicia Heraz, Roxane Kouassi, Janice Ng Ka-Yee, Yannick Solari Université de Montréal ~ Faculté Arts & sciences ~ Département Informatique.

Présentations similaires


Présentation au sujet: "Par Soumaya Chaffar, Alicia Heraz, Roxane Kouassi, Janice Ng Ka-Yee, Yannick Solari Université de Montréal ~ Faculté Arts & sciences ~ Département Informatique."— Transcription de la présentation:

1 Par Soumaya Chaffar, Alicia Heraz, Roxane Kouassi, Janice Ng Ka-Yee, Yannick Solari Université de Montréal ~ Faculté Arts & sciences ~ Département Informatique & Recherche opérationnelle IFT6251 Sujets en génie logiciel ~ 15 décembre 2004 ~ Professeur Houari SAHRAOUI G enetic AL gorithm O ptimized for P ortability and P arallelism S ystem G enetic A lgorithms R esearch and A pplications G roup Migration de GALOPPS du C vers JAVA ( Phase 2 )

2 Page 2 / 30 Plan de la présentation Répartition des classes Divergences entre C et JAVA Implémentation sous JAVA Intégration des classes Difficultés rencontrées Parties non réalisées Parties réalisées Déboguage et Tests avec JUnit Diagrammes initial et final de classes Interface GALOPPS Conclusion S

3 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 3 / 30 Répartitions des Classes 1/7 Selon laffectation initiale des fichiers dans la phase 1 Chaque membre a été chargé dimplémenter les classes quil avait identifié à létape précédente du projet Priorité dimplémentation Les classes les plus fréquemment utilisées sont les premières à être implémentées : RandomExt, Parameters, Chromosome et Population. Les classes qui viennent en seconde position sont celles qui représentent les fonctionnalités de GALOPPS Les classes traitant du parallélisme Mise à part la classe Migration, les classes traitant du parallélisme nont pas été implémentée S

4 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 4 / 30 Répartitions des Classes 2/7 [Soumaya Chaffar] Inversion Appliquée sur Chromosome, elle permet dinverser ses champs.Elle implémente les méthodes dinversion. InputBuffer Représente le tampon dentrée, elle implémente la fonction ffscanf qui permet de déterminer le type inclut dans une chaîne de caractère. APP Relative à lapplication réalisée pour manipuler lapi GALOPPS. Elle implémente la fonction objective. Interface Permet dafficher certains attributs de la classe Parameters, de les modifier et de la mis à jour. Cest laspect visuel de notre application. S

5 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 5 / 30 Répartitions des Classes 3/7 [Alicia Heraz] Population Implémente les méthodes appliquées sur une population Population_VB Représente lensemble des chromosomes VB Population_PB Représente lensemble des chromosomes PB Migration Implémente les méthodes permettant de migrer un chromosome dune population à une autre. Les méthodes de cette classe ne peuvent être exécutées que dans le mode parallèle A

6 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 6 / 30 Répartitions des Classes 4/7 [Roxane Kouassi] Chromosome Cest un individu de population, il existe sous deux types Chromosome_VB Représente un chromosome basé sur la valeur Chromosome_PB Représente un chromosome basé sur les permutations Crossover Implémente lopération de croisement. Cette classe est mère de chacune des deux sous-classes : Crossover_VB et Crossover_PB. RandomExt Implémente des opérations sur les nombre aléatoires R

7 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 7 / 30 Répartitions des Classes 5/7 [Janice Ka-Yee NG 1/2] Selection Elle implémente des méthodes de sélection de chromosomes lors de la génération d'une population. Elle est la classe mère des 5 classes suivantes : RankedBasedSelection, RouletteWheelSelection, StochasticUniversalSelection, StochasticRemainderSelection et TournamentSelection. Statistics Elle est utile pour déterminer des propriétés relatives au fitness des chromosomes d'une population, telles que leurs valeurs minimum, maximum et moyenne. J

8 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 8 / 30 Répartitions des Classes 6/7 [Janice Ka-Yee NG 2/2] Initialization Utilisée pour initialiser des variables dont les valeurs sont précisées dans un fichier, telles que la taille de la population popsize, pcross, permproblem, chromsize, taille des structure de données (tableaux). OneStart Elle est la classe principale de démarrage, contenant entre autres l'application développée par l'usager. Scale Calcule la valeur calibrée ( scaled ) relative aux fitnesses des chromosomes d'une population. Elle est la classe mère des 4 types de scale suivants: WindowScale, SigmaTruncation, LinearScale et BoltzmannScale. J

9 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 9 / 30 Répartitions des Classes 7/7 [Yannick Solari] Parameters Contient les attributs statiques et les méthodes de lecture des paramètres dentrée Mutation Implémente les méthodes de mutation de chromosome, cest la classe mère de chacune de : Mutation_VB Manipule les chromosome de type value_based Mutation_PB Manipule les chromosomes de type permutation_based Y

10 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 10 / 30 Divergences entre C et JAVA Il ny a pas de pointeurs en JAVA La gestion de mémoire transparente en JAVA Les structures et les types définis ( typedef ) en C deviennent des objets en JAVA Lencapsulation des données, lhéritage et le polymorphisme fournis par le langage JAVA, facilitent la programmation Le langage C est un langage faiblement typé Le langage JAVA est beaucoup moins rapide que C, il perd en rapidité ce qu'il gagne en portabilité... Y

11 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 11 / 30 Implémentation sous JAVA 1/8 [Soumaya Chaffar] Inversion –Elle implémente deux méthodes dinversion InverCir et InverCla. –Implémentation en C Deux fichiers séparés qui implémentent la fonctionnalité dinversion. Void Inversion (int *map) –Nouvelle implementation en java Création de la classe Inversion InversionCir( int [] map, Population oldpop ) InversionCla( int [] map, Population oldpop ) APP Il ny a pas eu de changements majeurs lors de la migration du code de C vers JAVA, juste au niveau des pointeurs et dallocation mémoire. S

12 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 12 / 30 Implémentation sous JAVA 2/8 [Soumaya Chaffar] InputBuffer –Elle implémente la méthode ffscanf –Changements majeurs, puisque cette classe contient beaucoup de manipulation sur les chaînes de caractères. Il fallait trouver léquivalence de chacune dans lAPI de Java. Interface Implémentation direct en Java, pas déquivalent dans le code C. S

13 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 13 / 30 Implémentation sous JAVA 3/8 [Alicia Heraz] Population, Population_VB et Population_PB Ces fonctions navaient pas de paramètres, lorsquelles étaient implémentées en C - void generate(Inversion i, Selection s, Mutation m, Crossover c) - void usualgen(Inversion i, Selection s, Mutation m, Crossover c) Migration Certains types de paramètres ont été changé - boolean GetMigrants(Chromosome IndArray, int donorpop, char []filename, int number_to_migrate, boolean want_best, int migration_incest_reduction, int migration_crowding_amount) A

14 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 14 / 30 Implémentation sous JAVA 4/8 [Roxane Kouassi 1/2] Chromosome, Chromosome_VB, Chromosome_PB –un chromosome nest plus une simple structure mais un objet qui encapsule ses attributs et ses méthodes. –Un tableau dentiers pour représenter le contenu dun chromosome : des bits. –Les bits sont regroupés ensemble pour former les champs dun chromosome. –Problématique: la manipulation des bits, la taille dun entier, la longueur dun champ, … RandomExt Elle dérive de la classe Random, définie dans le paquetage java.util de lAPI JAVA. R

15 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 15 / 30 Implémentation sous JAVA 5/8 Crossover, Crossover_VB, Crossover_PB Une opération de croisement est représentée par une classe car il y a plusieurs méthodes de croisement, qui sappliquent à différents types de chromosomes. –Implémentation en C crossover(parent1, parent2, child1, child2, jcross); –Nouvelle implémentation en JAVA Crossover c = new Crossover_PB(); c.setParent1(parent1); c.setParent2(parent2); c.crossover(child1, child2, jcross); [Roxane Kouassi 2/2] R

16 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 16 / 30 Implémentation sous JAVA 6/8 [Janice Ka-Yee NG 1/2] Selection Ne dépend plus du fichier inclus lors de la compilation tel quil est en C, mais dépend plutôt de linstance de lobjet Sélection au moment de lexécution. Initialization La méthode initialize se charge de linitialisation de toutes les variables paramètres possiblement lues à partir dun fichier. À cette étape, on remarque que les allocations de mémoire en C sont transformées principalement en linitialisation de tableaux en Java. Cette classe fait appel à deux fonctions utilitaires du fichier Report.c, pouvant permettre laffichage des données relatives à une population et ses chromosomes. J

17 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 17 / 30 Implémentation sous JAVA 7/8 OneStart Contient le main du programme. Appelle principalement les méthodes dinitialisation pour construire la base du programme et ensuite les différentes méthodes à propos de la génération dune nouvelle population. Scale Le type de scaling effectué dépend de linstance de lobjet Scale créé. Statistics Le calcul des statistiques na pas impliqué un changement majeur entre les deux versions du programme [Janice Ka-Yee NG 2/2] J

18 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 18 / 30 Implémentation sous JAVA 8/8 [Yannick Solari] Parameters La classe de paramètres possède plusieurs fonctions pour lire différents groupe de paramètres. Les fonctions du fichier FFSCANF.C sous beaucoup utilisées par la classe Parameters. -Beaucoup de manipulation de String -Utilisation de pointeurs Mutation Une opération de mutation est représentée par une classe car il y a plusieurs types de mutation, qui sappliquent à différents types de chromosomes. –Mutation_VB –Mutation_PB Y

19 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 19 / 30 Intégration des classes Les classes les plus importantes étaient utilisées et mises à jour par chaque membre de léquipe. Chaque groupe de classes devaient être correctement compilé avant dêtre rajouté aux autres groupes. Finalement les classes ont été intégrées manuellement : –Conflits dans les noms et la visibilité des attributs et des paramètres. –Variables non initialisées. –Déboguage Y

20 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 20 / 30 Difficultés rencontrées Emplacement, portée et pertinence des attributs Selon le champ et la fréquence dutilisation des attributs, nous avons modifié la portée et lemplacement de certains. Dautres ont été carrément supprimés car ils nétaient plus utilisés Gestion de la mémoire Les méthodes liées à la gestion de la mémoire ont été supprimées et le code a été réadapté Redéfinition des types dattribut A cause de labsence de certains types (comme les pointeurs), nous avons du redéfinir certains. Intégration des implémentations individuelles Attributs redéclarés, classes se référant à un module versus à plusieurs modules Y

21 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 21 / 30 Parties non réalisées Faute de temps, les fonctionnalités suivantes n'ont pas été réalisées : Les utilitaires restart et checkpoint Les modules qui gèrent les fichiers qui sauvegardent les résultats intermédiaires n'ont pas été repris comme CheckHDR.c et CheckRD.c et CheckWT.c Les applications scénario APP*.c Une seule application scénario a été implémentée Parallélisme Mise à part la classe Migration, nous navions pas pu implémenter toutes les fonctionnalités du mode parallèle R

22 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 22 / 30 Parties réalisées Chromosome Sélection Population MutationCroisement Inversion Migration R

23 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 23 / 30 Déboguage et Tests Loutil JUnit a été utilisé pour développer des tests unitaires sur la classe Chromosome. La majorité des méthodes de cette classe (sauf les get() et les set() ) ont été testées. En plus de loutil JUnit, loutil de déboguage fourni par Eclipse, nous a été dune grande aide pour détecter les erreurs déclenchées lors de lexécution de notre code intégré. A

24 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 24 / 30 public void testChromosome() { assertEquals(" numfields ", 4, c.getNumFields()); assertEquals(" tabInts.length ", 1, (c.getTabInts()).length); assertEquals(" fields_ends.length ", 4, (c.getFieldsEnds()).length); } Exemple de Test avec JUnit A léquivalence entre les paramètres calculés par la fonction qui exécute le calcul et les valeurs attendues

25 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 25 / 30 Diagramme initial de classes J

26 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 26 / 30 Diagramme final de classes J

27 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 27 / 30 Interface de lAPI réalisée S

28 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 28 / 30 Con clu sion Les divergences entre C et JAVA ont été résolues Les parties qui traitent du parallélisme, de la sauvegarde des calculs intermédiaires et certaines des applications scénario nont pas été réalisées. L'interface n'a pas pu être integrée à la classe principale Le diagramme intégral a été revu et corrigé, il a été généré grâce à loutil de Reverse Engineering via lenvironnement Rational Rose Nous espérons quune brillante équipe continuera notre travail et finalisera la migration de GALOPPS sous JAVA A

29 Migration de GALOPPS du C vers JAVA ( Phase 2 ) Page 29 / 30 Réfé ren ces Java Tête la première de Kathy Sierra, Bert Bates, Marie-Cécile Baland. Éditions OREILLY Les Cahiers du programmeur : Java (2), conception et déploiement J2EE de Jérôme Molière Les Cahiers du programmeur (1 livre + 1 CD-Rom) : Java 1.4 et 5.0 de Emmanuel Puybaret Programmer en Java (1Cédérom) de Claude Delannoy A

30 Par Soumaya Chaffar, Alicia Heraz, Roxane Kouassi, Janice Ng Ka-Yee, Yannick Solari Université de Montréal ~ Faculté Arts & sciences ~ Département Informatique & Recherche opérationnelle IFT6251 Sujets en génie logiciel ~ 15 décembre 2004 ~ Professeur Houari SAHRAOUI G enetic AL gorithm O ptimized for P ortability and P arallelism S ystem G enetic A lgorithms R esearch and A pplications G roup Migration de GALOPPS du C vers JAVA ( Phase 2 )


Télécharger ppt "Par Soumaya Chaffar, Alicia Heraz, Roxane Kouassi, Janice Ng Ka-Yee, Yannick Solari Université de Montréal ~ Faculté Arts & sciences ~ Département Informatique."

Présentations similaires


Annonces Google