GEAL 1.2 Generic Evolutionary Algorithm Library http://dpt-info.u-strasbg.fr/~blansche/fr/geal.html 1 /38
Introduction GEAL Bibliothèque Java pour écrire des algorithmes évolutionnaires Objectifs Généricité Simplicité Evolution et coévolution Parallélisme 2 /38
Fonctionalités Algorithmes génétiques, Évolution différentielle et Optimisation par essaims particulaires Évolution classique ou coévolution coopérative Évolution darwinienne, lamarckienne et baldwinienne Optimisation multi-objectif (combinaison de critères, approche Pareto) Parallélisme (threads, P2P-MPI) Interactivité 3 /38
Les bases Classes principales Génotype, Phénotype, Solution Évaluation Options La reproduction Génotypes prédéfinis ReproductionFactory et ReproductionManager Le reste Conditions d arrêts Observation de l évolution Modification de l environnement Apprentissage hybride Algorithmes simples Diagramme UML (presque) complet La suite 4 /38
Classes principales 5 /38
Classes principales Classes principales EvolutionEngine EvolutionaryAlgorithm : algorithme évolutionnaire CoevolutionaryAlgorithm : coévolution coopérative Classes abstraites Méthode Object [] evolve () : exécute l algorithme et renvoie les meilleures solutions GealConstants Contient toutes les constantes utiles 6 /38
Génotype, Phénotype, Solution Génotype et phénotype Genotype et Phenotype Interfaces Genotype : représentation d une solution pour la reproduction Phenotype : représentation d une solution pour l évaluation Une méthode : boolean equals (Object object) Une classe peut implanter les deux 7 /38
Génotype, Phénotype, Solution Du génotype au phénotype EvolutionaryAlgorithm Phenotype getphenotype (Genotype genotype) : transforme un génotype en un phénotype Par défaut : renvoie le génotype (cast) Phenotype [] getphenotypes (Genotype genotype) : plusieurs phénotypes pour une génotype 8 /38
Génotype, Phénotype, Solution Du génotype au phénotype CoevolutionaryAlgorithm Phenotype getphenotype (Genotype genotype, int populationindex) : transforme un génotype en un phénotype d une population Par défaut : renvoie le génotype (cast) Phenotype [] getphenotypes (Genotype genotype, int populationindex) : plusieurs phénotypes pour une génotype 8 /38
Génotype, Phénotype, Solution Du phenotype à la solution EvolutionaryAlgorithm Object getsolution (Phenotype phenotype) : transforme un phénotype en une solution Par défaut : renvoie le phénotype CoevolutionaryAlgorithm Object getsolution (Phenotype [] phenotypes) : transforme un ensemble de phénotypes en une solution Pas d implantation par défaut 9 /38
Évaluation Gestion de l optimisation Sens de l optimisation (constantes entières) GealConstants.OPTIMIZATION_MIN GealConstants.OPTIMIZATION_MAX 10 /38
Évaluation Gestion de l optimisation Sens de l optimisation void setsinglefitnessevaluation (int optimization) : un seul critère d évaluation void setmeanfitnessevaluation (int optimization, int nbcriteria) : valeur moyenne des évaluations void setweightedmeanfitnessevaluation (int optimization, double... weights) : moyenne pondérée void setproductfitnessevaluation (int nbcriteria) : produit des évaluations void setparetofitnessevaluation (int... optimizations) : approche multi-objectif 10 /38
Évaluation Évaluation d une solution EvolutionaryAlgorithm abstract double [] evaluate (Phenotype phenotype) : évaluation d un phénotype CoevolutionaryAlgorithm abstract double [] evaluate (Phenotype [] phenotypes) : évaluation d un ensemble de phénotypes Pour simplifier double [] createfitness (double... fitness) : facilite l écriture 11 /38
Options Options de l algorithme void setnbindividuals (int nbindividuals) : 100 par défaut void setparallelization (int type, int nbprocessus) : GealConstants.PARALLELIZATION_THREADS ou GealConstants.PARALLELIZATION_P2PMPI void setnbpopulations (int nbpopulations) : coévolution coopérative 12 /38
Génotypes prédéfinis 13 /38
Génotypes prédéfinis Génotypes prédéfinis Vector Tableau de réels Order Permutation (liste d entier dans un ordre aléatoire) Trees Arbres représentant des opérations mathématiques (programmation génétique) 14 /38
Génotypes prédéfinis Vector setvectorreproduction (int type, int nbdimensions) : évolution ou coévolution (toutes les populations) setvectorreproduction (int type, int nbdimensions, int populationindex) : coévolution GealConstants.GENOTYPE_VECTOR_GENETIC_ROULETTE_WHEEL GealConstants.GENOTYPE_VECTOR_GENETIC_TOURNAMENT GealConstants.GENOTYPE_VECTOR_DIFFERENTIAL GealConstants.GENOTYPE_VECTOR_PSO 15 /38
Génotypes prédéfinis Order void setorderreproduction (int type, int size) : évolution ou coévolution (toutes les populations) void setorderreproduction (int type, int size, int populationindex) : coévolution GealConstants.GENOTYPE_ORDER_GENETIC_ROULETTE_WHEEL GealConstants.GENOTYPE_ORDER_GENETIC_TOURNAMENT 16 /38
Génotypes prédéfinis Trees void settreesreproduction (int type, int inputsize, int nbtrees, int depth) : évolution ou coévolution (toutes les populations) void settreesreproduction (int type, int inputsize, int nbtrees, int depth, int populationindex) : coévolution GealConstants.GENOTYPE_TREES_GENETIC_ROULETTE_WHEEL GealConstants.GENOTYPE_TREES_GENETIC_TOURNAMENT inputsize : nombre de variables d entrée nbtrees : nombre d arbres (variables de sortie) depth : profondeur des arbres aléatoires 17 /38
ReproductionFactory et ReproductionManager 18 /38
ReproductionFactory et ReproductionManager Génotype spécifique ReproductionManager Classes abstraites de génération de génotypes Opérations en rapport avec la méthode : GeneticReproductionManager DifferentialReproductionManager PsoReproductionManager ReproductionFactory Une méthode : ReproductionManager getreproductionmanagerinstance () 19 /38
ReproductionFactory et ReproductionManager Exemple : reproduction génétique GeneticReproductionManager abstract Genotype newgenotype () abstract Genotype crossover (Genotype parent1, Genotype parent2) abstract Genotype mutation (Genotype genotype) 20 /38
ReproductionFactory et ReproductionManager Configuration void setreproduction (ReproductionFactory reproductionfactory) : évolution ou coévolution (toutes les populations) void setreproduction (ReproductionFactory reproductionfactory, int populationindex) : coévolution void setreproduction (ReproductionFactory [] reproductionfactories) : coévolution 21 /38
Conditions d arrêts 22 /38
Conditions d arrêts Conditions usuelles void setmaxgenerations (int maxgenerations) void setmaxtime (long maxtime) void terminate () : termine à la fin de la génération courante 23 /38
Conditions d arrêts Conditions particulières TerminationCriterion Interface Méthode : boolean terminate (EvolutionEngine evolutionengine) Rajouter une condition d arrêt : void addterminationcriterion (TerminationCriterion terminationcriterion) 24 /38
Observation de l évolution 25 /38
Observation de l évolution Observateur Monitor Interface void view () : appelée à chaque génération par l algorithme void print (String string) : appelée régulièrement par l algorithme pour afficher l état d avancement Rajouter un observateur : void addmonitor (Monitor monitor) 26 /38
Observation de l évolution Informations accessibles Front de Pareto Object [] getparetosolutions : ensemble des solutions du front de Pareto double [][] getparetofitness () : évaluation de chaque solution de front de Pareto selon chaque critère 27 /38
Modification de l environnement 28 /38
Modification de l environnement Environnement variable Objectifs Modification de la fonction d évaluation au cours du temps (exemple : suivi d un objet dans une vidéeo) Parallélisme : propagation des modifications aux autres processus EnvironmentModification Classe représentant une modification de l environnement Aucune méthode prédéfinie, dépend entièrement du problème 29 /38
Modification de l environnement Propagation et prise en compte d une modification Modifiable Interface L algorithme évolutionnaire doit implanter l interface Méthodes EnvironmentModification createenvironmentmodification () : envoie des modifications void processenvironmentmodification (EnvironmentModification modification) : réception et traitement des modifications 30 /38
Apprentissage hybride 31 /38
Apprentissage hybride Optimization locale EvolutionaryLifeTimeLearning Interface Méthode : Phenotype lifetimelearning (Phenotype phenotype) Définir une méthode d apprentissage locale : void setlifetimelearning (EvolutionaryLifeTimeLearning evolutionarylifetimelearning) 32 /38
Apprentissage hybride Optimization locale CoevolutionaryLifeTimeLearning Interface Méthode : Phenotype [] lifetimelearning (Phenotype [] phenotypes, int populationindex) Définir une méthode d apprentissage locale : void setlifetimelearning (CoevolutionaryLifeTimeLearning coevolutionarylifetimelearning) 32 /38
Apprentissage hybride Apprentissage lamarckien LamarckianLearning Interface Inopérant sans optimization locale Méthode : Genotype lamarckianlearning(phenotype phenotype) Définir une méthode d apprentissage lamarckien : void setlamarckianlearning(lamarckianlearning lamarckianlearning) 33 /38
Algorithmes simples 34 /38
Algorithmes simples Cas simples Caractéristiques du problème Génotype = phenotype = solution = tableau de réels Un unique critère d évaluation à maximiser Algorithme génétique SimpleEvolutionaryAlgorithm Étend EvolutionaryAlgorithm Méthode : abstract double evaluate (double [] array) Exécuter l algorithme et renvoyer la meilleure solution : double [] getsolution () 35 /38
Diagramme UML (presque) complet 36 /38
Statégies de remplacement plus variées pour les algorithmes génétiques Arbres génériques (pas que des formules mathématiques) Modification dynamique du nombre de populations en coévolution coopérative 37 /38
Questions 38 /38