Vous êtes sur la page 1sur 16

Facult des Sciences Rabat

6/1/2013

Java Avance NSGA II

Ralis par : AbdelHamid Benzyane Anass Boulam

PLAN

I. II. III. IV. V.

INTRODUCTION DEFENITION De lalgorithme (NSGA II) DEFINITION DU PROBLEME (DTLZ) TRAVAIL REALISER CONCLUSION

Page 1 of 15

Introduction

La rsolution dun problme doptimisation consiste trouver la o les meilleures solutions vrifiant un ensemble de contraintes et dobjectifs en un temps raisonnable, dans ce sens on prsente ce travail Qui essaie d'amliorer le temps de rsolution de ses problmes en utilisant interfaage et le paralllisme.

Page 2 of 15

NSGA II ( Non-Dominated Sorting Genetic Algorithm-II )


Ces types dAlgorithme gntique tirent leurs noms de lvolution biologique des tres vivants dans le monde rel et ils cherchent simuler le processus de la slection naturelle dans un environnement dfavorable en sinspirant de la thorie de lvolution propose par C. Darwin.

Par analogie avec lvolution naturelle, les AG font voluer un ensemble de solutions candidates, appel une population dindividus . Un individu nest autre quune solution possible du problme rsoudre. Chaque individu de cette population se voit attribuer une fonction appele fonction dadaptation (fitness) quon essaie o loptimiser au cours de lvolution de notre population. Dans le cas de NSGA II on parle dune Optimisation dun problme multiobjectif dans lequel il existe plusieurs fonction dadaptation (fitness) ( k >=2 ), chaque fonction objectif pouvant avoir une solution optimale diffrente. Le but dun problme multi-objectif est de trouver de bons compromis plutt quune seule solution. Lorsquil y a plusieurs objectifs, la notion doptimum change et il est prfrable dutiliser un autre terme, le terme le plus couramment adopt tant loptimum de Pareto

OPTIMALE PARETO :
un vecteur des variables x S (S rgion ralisable) est un optimum de Pareto si, pour chaque) x S et I = {1,2 . k} soit i I (f (x) = f (x ) ou bien, il existe ou mois Un i I tq (f (x) > f (x ) Au lieu dune unique solution, loptimisation multi-objectif donne lieu un ensemble de solutions optimales. Toute solution de cet ensemble est optimale dans le sens quaucune amlioration ne peut tre faite sur un critre de cette solution sans dgrader au moins la valeur dun autre critre. Ces solutions optimales forment lensemble des solutions Pareto optimales.

Page 3 of 15

La reprsentation de ces solutions non domines dans lespace des objectifs est appele le front de Pareto . La figure suivante montre lexemple dun front de Pareto pour le problme de minimisation de deux objectifs.

Y-Values
3.5 3 2.5 2 1.5 1 0.5 0 0 0.5 1 1.5 2 2.5 3

Solution Domine

Solution non Domine

PSEUDO CODE NSGA I

Page 4 of 15

DEFINITION DU PROBLEME (DTLZ)

DTLZ est un problme de test des Algorithmes Multi-Objetifs, il est caractris par : Facile construire. Paramtrable, pour avoir un nombre quelconque de variables et dobjectifs. Le front Pareto-optimal rsultant est facile comprendre, sa forme et son emplacement Est exactement connus.

DTLZ1

Notre tudes va se focaliser sur le problme DTLZ1 caractrise par des fonctions objectif simples et de front Pareto-optimal linaire. La dfinition mathmatique du problme est donne par :

La fonction g utilise ici est la suivante :

Page 5 of 15

TRAVAIL REALISER

Notre Travail consiste a faire un interfaage en langage C de la fonction de Fitness Evaluate du problme DTLZ1 et cre un paralllisme dans l'excution de lalgorithme NSGA II.

Interfaage
Cest une technique qui permet au code Java s'excutant l'intrieur de la JVM d'appeler et d'tre appel1 par des applications natives (c'est-dire des programmes spcifiques au matriel et au systme d'exploitation de la plate-forme concerne), ou avec des bibliothques logicielles bases sur d'autres langages (C, C++, assembleur, etc.).

Fonction Evaluate()
On vas essaye dinterfacer la fonction Evaluate qui calcule la fitness dans le problme DTLZ1 La fonction Avant linterfaage : (Voir Annexe). La fonction Apres interfaage :

La fonction reoit comme paramtre une Solution qui va essayer de calculer sa fitness et puisque le plus important chez nous cest de profiter de la puissance du langage C dans le traitement des Donnes on peut seulement interfacer la partie qui fait ce travail. Donc la dclaration de la fonction native sera comme suit : public static native double[] evaluatee(double[] x , int noO); Cette fonction reoit le tableau des Variables qui compose la Solution courante et le Nombre dobjective puisque ce sont les donnes quon va manipules dans Notre Calcule ( Voir Annexe ) .

Page 6 of 15

Maintenant que la fonction en langage C est traite on la Compile et on rcupre le .dll Et la fonction de Fitness en Java Final Sera somme suite : public void evaluate(Solution solution) throws JMException { // declaration de la function Variable[] gen = solution.getDecisionVariables(); Dcision // Rcuprer la

double [] x = new double[numberOfVariables_]; // Cration du tableau qui va contenir les Variables double [] f = new double[numberOfObjectives_]; // Cration du tableau qui va contenir les rsultats for (int i = 0; i < numberOfVariables_; i++) { // boucle qui initialise les valeur du tableau x x[i] = gen[i].getValue(); } f = Native.evaluatee(x,numberOfObjectives_); // Appel de la fonction native qui fais le traitement et qui retourne un tableau for (int i = 0; i < numberOfObjectives_; i++) { // boucle qui enregistre les valeur de F dans la solution solution.setObjective(i,f[i]); } } // Fin de la fonction

Page 7 of 15

PARALLELISME

Dans cette partie on va essayer de faire un ExecutorService qui va grer lvaluation parallle de chaque solution dans un Thread Pour cela en va crer une classe TraitementParallele qui contient 4 Mthodes principales public void startEvaluator(Problem problem) ; // Mthode qui initialise l ExecutorService public void addSolutionForEvaluation(Solution solution) ; // Ajouter la liste des Tache public List<Solution> parallelEvaluation() ; // mthode qui excute la fonction Evaluate au sien de service public void stopEvaluator() ; // Arrter l'excuteur Service

Dans la classe NSGAII on Ajoute un Attribue de la classe TraitementParallele parallelEvaluator. Ensuite dans la partie dinitialisation de la population on ajoute chaque solution la liste de tches a valu. Dans la partie du Gnration de parents t+1 on ajoute les Taches devalution des offSpring avec la mthode parallelEvaluator_.addSolutionForEvaluation(offSpring[0]) ; ET en fin du boucle en lance la liste des taches avec la mthode parallelEvaluator_.parallelEvaluation() ; Et en fin de la boucle while en stop lExecutorService

Page 8 of 15

Configuration de MAIN

Dans la classe NSGAII_main en fixe les paramtres comme suite : problem = new DTLZ1 ("Real"); int threads = 0 ; // 0 pour Utiliser toutes les ressource de notre Pc algorithm.setInputParameter("populationSize",100); // Taille de la population algorithm.setInputParameter("maxEvaluations",2500000); // Le nombre Max Evaluation

Mutation and Crossover for Real codification


parameters.put("probability", 0.9) ; parameters.put("distributionIndex", 20.0) ; crossover = CrossoverFactory.getCrossoverOperator("SBXCrossover", parameters); parameters = new HashMap() ; parameters.put("probability", 1.0/problem.getNumberOfVariables()) ; parameters.put("distributionIndex", 20.0) ; mutation = MutationFactory.getMutationOperator("PolynomialMutation", parameters); // Selection Operator parameters = null ; selection = SelectionFactory.getSelectionOperator("BinaryTournament2", parameters) ;

Page 9 of 15

Etude

Pour dterminer lavantage dutiliser le paralllisme on excute lAlgorithme NSGAII avec le problme DTLZ1 pour diffrent nombre de Threads. Le nombre max valuation est (250000). Les rsultats sont reprsent dans le tableau suivant

En remarque que si en dpasse 8T qui est le nombre de Threads qui existe dans notre pc intel Core I7 (4 curs real et dans chaque cur comporte deux hyper threads) On nest pnalis. Aussi om constate quIl y a une diffrence remarquable entre 1T est 8T do lutilit du paralllisme dans notre programme

Interface Graphique.

Page 10 of 15

Page 11 of 15

CONCLUSION

Loptimisation multi-objective est un trs vaste domaine de recherche, et notre modeste tude des problmes DTLZ nest quune petite fentre qui sest ouvert pour nous clairer un peu le chemin de la recherche scientifique.

ANNEXE
Code Evaluate avant linterfaage.

Page 12 of 15

Code Evaluate En langage C.


#include <jni.h> #include <stdio.h> #include <math.h> #include "jmetal.h" #define PI 3.141592653589793238462643383

JNIEXPORT jdoubleArray JNICALL Java_jmetal_problems_DTLZ_Native_evaluatee(JNIEnv *env, jclass clazz, jdoubleArray jArray, jint noO){ jdouble *cArrayF = (*env)->GetDoubleArrayElements(env, jArray, NULL); double jArrayF[noO]; jdoubleArray returnArrayF = (*env)->NewDoubleArray(env, noO); jsize noV = (*env)->GetArrayLength(env, jArray); if (cArrayF == NULL) { return 0; } else { jint k = noV - noO + 1; jdouble g = 0.0; jint i = 0 ; jint j = 0 ;

for (i = noV - k; i < noV; i++) {

Page 13 of 15

g += (cArrayF[i] - 0.5)*(cArrayF[i] - 0.5) - cos(20.0 * M_PI * ( cArrayF[i] 0.5)); } g = 100 * (k + g); for ( i = 0; i < noO; i++) { jArrayF[i] = ((1.0 + g) * 0.5); } for (i = 0; i < noO; i++){ for (j = 0; j < noO - (i + 1); j++) { jArrayF[i] *= cArrayF[j]; } if (i != 0){ jint aux = noO - (i + 1);

jArrayF[i] *= 1 - cArrayF[aux]; } //if }//for

(*env)->SetDoubleArrayRegion(env, returnArrayF, 0, noO, jArrayF);

} return returnArrayF;}

Page 14 of 15

Code de Linterface graphique.

Page 15 of 15