420 likes | 714 Views
Laboratoire d’Informatique Fondamentale de Lille. Parallel Cooperative Optimization Research Group. TP sur MOEO (Optimisation Multi-Objectif) pour l’ordonnancement flow-shop bi-critère. M 1. M 2. M 3. Cmax. Le flow-shop multi-objectif. N jobs à ordonnancer sur M machines
E N D
Laboratoire d’InformatiqueFondamentale de Lille Parallel Cooperative Optimization Research Group TP sur MOEO (Optimisation Multi-Objectif) pour l’ordonnancement flow-shop bi-critère
M1 M2 M3 Cmax Le flow-shop multi-objectif • N jobs à ordonnancer sur M machines • Flow-shop de permutation • Critères à optimiser (minimiser) : • Cmax = Date de fin de l'ordonnancement • T = Somme des retards _ T
Cmax Solution Pareto Solution dominée T La dominance Pareto • But :Trouver un ensemble Pareto de bonne qualité en termes de convergence et de diversité
M1 M2 M3 Représentation des individus • Séquencement des jobs sur une machine
Point 1 Point 2 Parent 1 Parent 2 Enfant Opérateur de croisement • Croisement 2 points
Point 1 Point 2 Opérateur de mutation (1) • Permutation de 2 points (Shift)
Opérateur de mutation (2) • Échange de 2 points (Exchange)
Méthodes de sélection • Quantifier la qualité des solutions • Méthodes de sélection multi-objectif implémentées dans MOEO: • Méthode basée sur le rang Pareto • NSGA et NSGA-II • IBEA
Méthode basée sur le rang Pareto • F(x) = nombre de solutions qui dominent la solution x
NSGA et NSGA-II • Non-dominated Sorting Genetic Algorithm • Solutions classées selon différents fronts • Front 1 : solutions non-dominées • Front 2 : solutions dominées par au moins une solution du front 1 • …
IBEA • Indicator-Based Evolutionary Algorithm • Méthode basée sur un indicateur de qualité I • F(x) : calculée à partir des valeurs de I({x},{y}) • Indicateurs implémentés : • Indicateur epsilon • Indicateur HD
I (A,B) ε+ I (B,A) ε+ Indicateur epsilon
Implémentation d’un AE multi-objectif eoEvalFuncCounter<FlowShop> eval;/* évaluation des objectifs */ eoInit<FlowShop> init; /* solutions initiales aléatoires */ eoGenOp<FlowShop> op; /* opérateurs de variation */ eoPop<FlowShop> pop; /* population */ eoArchive<FlowShop> arch; /* archive PO* */ eoContinue<FlowShop> term;/* critère d'arrêt */ eoCheckPoint<FlowShop> checkpoint;/* chaque génération (eval, term)/ eoAlgo<FlowShop> algo;/* définition de l'algorithme */ algo(pop); /* application de l'algo à la pop */
Pour commencer... • cd ~/TP_MOEO/flow-shop/ • Fichier principal :FlowShopEA.cpp • *.h : fichiers des composants • benchmarks/* : jeux de données
Implémentation d’un AE multi-objectif eoEvalFuncCounter<FlowShop> eval;/* évaluation des objectifs */ eoInit<FlowShop> init; /* solutions initiales aléatoires */ eoGenOp<FlowShop> op; /* opérateurs de variation */ eoPop<FlowShop> pop; /* population */ eoArchive<FlowShop> arch; /* archive PO* */ eoContinue<FlowShop> term;/* critère d'arrêt */ eoCheckPoint<FlowShop> checkpoint;/* chaque génération (eval, term)/ eoAlgo<FlowShop> algo;/* définition de l'algorithme */ algo(pop); /* application de l'algo à la pop */
Évaluation des objectifs • Performances d'une solution : • FlowShopFitness.h : typedef eoParetoFitness<eoVariableParetoTraits> FlowShopFitness; • eoParetoFitness : • Vecteur (1 dimension <=> 1 objectif) • eoVariableParetoTraits : • classe statique qui permet de définir les paramètres liés aux objectifs • Nombre d'objectifs • Minimisation / Maximisation
Évaluation des objectifs (2) • Fonctions d'évaluation • FlowShopEval.h : dans le constructeur : // nombre d'objectifs unsigned nObjs = 2; // minimiser les 2 objectifs vector<bool> bObjs(nObjs, false); // positionner les variables eoVariableParetoTraits::setUp (nObjs, bObjs);
Évaluation des objectifs (3) • Fonctions d'évaluation • FlowShopEval.h : operator(_eo) : // créer un objet de type FlowShopFitness FlowShopFitness fitness; // calcul des valeurs pour les 2 objectifs fitness[0] = tardiness(_eo); fitness[1] = makespan(_eo); // mise à jour des performances _eo.fitness(fitness);
Tester • make • ./FlowShopEA -B=benchmarks/020_05_01.txt • Renommer le fichierFlowShopEA.statusenFlowShopEA.param • Éditer les paramètres (ne pas oublier de supprimer les « # ») • ./FlowShopEA @FlowShopEA.param
Implémentation d’un AE multi-objectif eoEvalFuncCounter<FlowShop> eval;/* évaluation des objectifs */ eoInit<FlowShop> init; /* solutions initiales aléatoires */ eoGenOp<FlowShop> op; /* opérateurs de variation */ eoPop<FlowShop> pop; /* population */ eoArchive<FlowShop> arch; /* archive PO* */ eoContinue<FlowShop> term;/* critère d'arrêt */ eoCheckPoint<FlowShop> checkpoint;/* chaque génération (eval, term)/ eoAlgo<FlowShop> algo;/* définition de l'algorithme */ algo(pop); /* application de l'algo à la pop */
Archive PO* • Mise à jour des solutions non-dominées à chaque génération // créer eoArchiveUpdater<FlowShop> updater(arch); // ajouter checkpoint.add(updater); • Sauvegarde des solutions non-dominées à chaque génération // créer eoArchiveFitSavingUpdater<FlowShop> save_updater('Res/Ar',arch,1); // ajouter checkpoint.add(save_updater);
Archive PO* (2) • Calcul de métriques pour l’évaluation des performances: • Contribution (Res/Contribution.txt) • Entropie (Res/Entropie.txt)
Archive PO* (3) • Élitisme // créer le mode de sélection (random, roulette, ...) eoRandomSelect<FlowShop> select; // ajouter eoSelectNumberFromPopAndArch<FlowShop> elitism(eoPerf2Worth, select, arch, S_RATE, S_SIZE); • S_RATE = probabilité de sélection pour l'archive • S_SIZE = nombre d'enfants à générer • Sharing eoParetoSharing<FlowShop> sharing(NICHE_SIZE, DISTANCE); • NICHE_SIZE = taille de la niche • DISTANCE = distance euclidienne
Manipulations • But : • Sauvegarder les fronts Pareto obtenus par NSGA-II et IBEA sur le jeu de données 020_05_01 pour des paramètres identiques • Étapes : • Compiler le projet () • Éditer le fichier de paramètres pour NSGA-II () • Exécuter et sauvegarder le front obtenu () • Modifier le fichier de paramètres pour IBEA () • Ré-exécuter et sauvegarder le front obtenu ()
GUIMOO a Graphical User Interface for Multi Objective Optimization
Objectifs • Proposer un outil graphique de manipulation de fichiers résultats d'optimisation multi-objectif • Visualisation des fronts • Calcul de métriques permettant de comparer la qualité des fronts obtenus • Logiciels GPL http://guimoo.gforge.inria.fr/
Les écrans (1) :L'écran principal Ajouter un front Pareto au projet Visualiser les fronts Titre du projet Les objectifs avec indication du type d'optimisation (min/ max)
Les écrans (2) La liste des fronts Pareto : Sélection de 1 ou plusieurs fronts (touche CTRL maintenue)
Les écrans (3) Le contenu des fichiers
Les métriques Mise à disposition de différents types de métriques
Génération de rapports Les formats d’exportation
Manipulations • But : • Comparer des résultats des différentes exécutions • Étapes : • Créer votre projet • Nom • Objectifs • Ajouter les 2 fronts Pareto obtenus grâce à MOEO sur le flow-shop • Visualiser les fronts en 2D • Calculer les métriques Contribution et S-métrique