tp sur moeo (optimisation multi- objectif) pour lordonnancement flow-shop bi-critère parallel...
TRANSCRIPT
TP sur MOEO (Optimisation Multi-Objectif) pour l’ordonnancement flow-shop bi-critère
Parallel Cooperative
Optimization Research
Group
Laboratoire d’InformatiqueFondamentale 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
But : Trouver un ensemble Pareto de bonne qualité en termes de convergence et de diversité
Solution ParetoSolution dominée
T
Cmax
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
Enfant
Parent 1
Parent 2
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'objectifsunsigned nObjs = 2;// minimiser les 2 objectifsvector<bool> bObjs(nObjs, false);// positionner les variableseoVariableParetoTraits::setUp (nObjs, bObjs);
Évaluation des objectifs (3)
Fonctions d'évaluation FlowShopEval.h :operator(_eo) :// créer un objet de type FlowShopFitnessFlowShopFitness fitness;// calcul des valeurs pour les 2 objectifsfitness[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 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
// créer le mode de sélection (random, roulette, ...)eoRandomSelect<FlowShop> select;// ajoutereoSelectNumberFromPopAndArch<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
SharingeoParetoSharing<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 ()
Comment évaluer ces résultats ?
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
plusieursfronts (touche CTRL maintenue)
Les écrans (3)
Le contenu desfichiers
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 :
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