Rapport TP optimisation combinatoire
Résultat de l'algorithme mTSP AB100
Sujet de Messieurs :
Matthieu Basseur
André Rossi
Réalisé par :
Ismail El faqir
Driss Benmoumen
Optimisation combinatoire Driss Benmoumen & Ismail El faqir
I- Environnement de développement :
Nous avons choisi pour la réalisation de ce TP le langage C++11 pour sa performance et sa
gestion optimisée de la mémoire et des allocations mémoire, mais aussi pour ses bibliothèques STL
de la version 11 du C++. Ce langage nous a permis à la fois de gérer la mémoire et d'utiliser la
notion de l'orienté objet notamment la notion des classes.
1- Environnement de travail:
- Linux Ubuntu 14.04.
- C++11.
- Code block.
- Gnuplot.
2- Commandes linux utilisées :
- Pour générer le graphe :
exemple :
gnuplot
set term jpeg
set output 'offline500AB100.jpeg'
plot 'offline500_kroAB100.txt' , 'offlinePareto500_kroAB100.txt'
N.B : Les résultats sont générer automatiquement dans le dossier 'resultat'.
II- Conception, explications et exécutions
1- Instances
Dans cette partie nous avons créé deux classe :
Classe ville :
- Se charge de stoker l'identifiant de la ville et ses coordonnées x et y
- Calculer la distance entre la ville en question et une ville.
Classe matrice :
- Se charge de stoker les villes.
- Prend comme paramètre un fichier et génère la matrice de distance.
- Calcule la distance d'un chemin aléatoire.
Classe main :
- On génère pour chaque instance la matrice de distance.
- On génère pour chacune des 7 instances 500 chemins aléatoires et on calcule la distance du
chemin pour les deux objectives.
Université d'Angers Année universitaire 2015/2016
Optimisation combinatoire Driss Benmoumen & Ismail El faqir
2- Algorithme « off-line » et « on-line »
Algorithme « off-line » :
Cet algorithme génère 500 chemins aléatoires et calcule pour chaque distance 'a' d'un fichier
'A' et 'b' d'un fichier 'B' construit un couple (a,b). On charge l'ensemble des solutions dans la
mémoire et on stocke les solutions non-dominé selon les critères suivants pour chaque deux points :
- Si deux points 'a' et 'b' sont incomparables on les garde.
- Si un point 'a' domine un point 'b' on garde le point dominant c'est à dire 'a'.
On garde toutes les solutions généré dans le fichier offline500_nomInstance.txt et les
solutions non-dominé dans le fichier offlinePareto500_nomInstance.txt
Résultat de l'algorithme « off-line » pour l'instance AB100
Explication :
Les points en rouge dans la figure si-dessus représentent toutes les solutions des 500
chemins aléatoires parmi ces derniers ceux coloré en vers qui sont non-dominé c'est-à-dire le
résultat de l'algorithme « off-line ».
Université d'Angers Année universitaire 2015/2016
Optimisation combinatoire Driss Benmoumen & Ismail El faqir
Algorithme « on-line » :
Cet algorithme est plus optimisé de l'algorithme précédent parce qu'on considère dans un
premier temps un chemin 'a-b' non-dominé et pour chaque chemin qu'on calcule on le compare à
nos présumés résultats. Nous obtenons donc deux cas :
- Domine un résultat et donc on le vire.
- Incomparable avec un résultat et donc on les garde.
Résultat de l'algorithme « on-line » pour l'instance AB100
Explication :
La même explication que celle du « off-line ».
3- Algorithme pour le mTSP
Cette algorithme consiste à améliorer les solutions obtenues des algorithmes « off-line » et
« on-line ». Pour ce faire on récupère les solutions obtenues des deux algorithmes et pour chaque
chemin (des solutions) on fixe deux villes de ce dernier et on permute le chemin, on exécute ceci 20
fois d'une manière aléatoire et nous obtenons donc 20 chemins pour chacune des solutions. L'étape
suivante est de comparer les chemins générés avec la solution originale trois cas se posent :
Université d'Angers Année universitaire 2015/2016
Optimisation combinatoire Driss Benmoumen & Ismail El faqir
- L'une des solutions généré domine les solutions originales et donc on la garde et ignore les autres.
- Toutes les solution sont dominé par les solutions originales et donc on garde ces dernières.
- L'une des solutions est incomparable avec l'ensemble des solutions originales et donc on la rajoute
à nos solutions.
Résultat de l'algorithme mTSP AB100
II- Évaluation des performances
Pour éviter les exécutions chanceuses ou malheureuses nous avons exécuter chaque instance
10 fois. Nous avons donc obtenu les résultats si-dessous:
Pour l'exécution de chaque instance une fois nous avons obtenu les temps d’exécutions suivants :
Fichiers 100 150 200
AB 0,026 s 0,026 s 0,033 s
BC 0,025 s
Université d'Angers Année universitaire 2015/2016
1 / 7 100%