Parallel Cooperative Optimization Research Group TP sur MOEO (Optimisation Multi-Objectif) pour l’ordonnancement flow-shop bi-critère Laboratoire d’Informatique Fondamentale de Lille
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 M1 M2 M3 Cmax _ T
La dominance Pareto Solution Pareto Solution dominée T Cmax But : Trouver un ensemble Pareto de bonne qualité en termes de convergence et de diversité
Représentation des individus Séquencement des jobs sur une machine M1 M2 M3
Opérateur de croisement Croisement 2 points Point 1 Point 2 Parent 1 Parent 2 Enfant
Opérateur de mutation (1) Permutation de 2 points (Shift) Point 1 Point 2
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
Indicateur epsilon I (A,B) ε+ I (B,A) ε+
Méthode de sélection multi-objectif
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 Renommer le fichier FlowShopEA.status en FlowShopEA.param ./FlowShopEA -B=benchmarks/020_05_01.txt Renommer le fichier FlowShopEA.status en FlowShopEA.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 Sharing // 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 : Étapes : 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 ()
Comment évaluer ces résultats ?
a Graphical User Interface for Multi Objective Optimization 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
Exemple de visualisation 2D
Exemple de visualisation 3D
Manipulations But : Étapes : 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