Vous êtes sur la page 1sur 28

Institut Supérieur

d’Informatique de
Modélisation et de
leurs Applications
Complexe des Cezeaux
BP 10 125
63 173 AUBIERE cedex.

Rapport d’ingénieur
Projet de 2ème année
Filière 4 : Calculs et modélisations scientifiques

L’optimisation par essaim


particulaire pour des
problèmes d’ordonnancement

Présenté par : Maxime BOMBRUN


Abdoulaye SENE

Responsable ISIMA : Michel GOURGAND 24/03/2011


Institut Supérieur
d’Informatique de
Modélisation et de
leurs Applications
Complexe des Cezeaux
BP 10 125
63 173 AUBIERE cedex.

Rapport d’ingénieur
Projet de 2ème année
Filière 4 : Calculs et modélisations scientifiques

L’optimisation par essaim


particulaire pour des
problèmes d’ordonnancement

Présenté par : Maxime BOMBRUN


Abdoulaye SENE

Responsable ISIMA : Michel GOURGAND 24/03/2011


Remerciements

Nous remercions Monsieur Michel Gourgand pour son soutien et son aide apportée tout au
long de ce projet.
Résumé

Notre projet de deuxième année d’école d’ingénieur est basé sur l’étude d’une méta-
heuristique, l’optimisation par essaim particulaire (O.E.P.). Cette méthode permet, à l’instar des
abeilles, de faire converger tous les résultats vers un même point, l’optimum de la fonction ou du
problème posé. Nous avons, dans un premier temps, implémenté cet outil dans le cadre de
l’optimisation continue, puis nous l’avons adapté à la combinatoire afin de le tester sur le
problème du voyageur de commerce ou T.S.P. (Travelling Salesman Problem). Ensuite, nous avons
comparé, puis analysé nos résultats via des batteries de tests.
Mots-clés : Meta-heuristique, Optimisation, Essaim particulaire, Continue, Combinatoire, T.S.P.,
Batterie de test

Abstract

Our Second Year Project in Engineering School is based on the study of a meta-heuristic:
The Particle Swarm Optimization (P.S.O.). This method allow, like bees, to make converge the
data to a same point: the function or problem’s optimum. In a first time, we have programmed this
tool for continuous optimization then for the combinatory optimization in order to test it on the
T.S.P. (Travelling Salesman Problem). Then, we compared and analyzed our results with some
tests.
Keywords: Meta-heuristic, Particular Swarm Optimization, Continuous, Combinatory, T.S.P., Tests
Table des Matières
INTRODUCTION......................................................................................................................... - 1 -
I) PRESENTATION DE LA P.S.O. ............................................................................................ - 2 -
1) MOTIVATION DE LA P.S.O. .....................................................................................................................................- 2 -
2) LES ÉLÉMENTS DE LA P.S.O....................................................................................................................................- 3 -
3) NOTION DE VOISINAGE ...........................................................................................................................................- 4 -
II) LA P.S.O. POUR L’OPTIMISATION CONTINUE ........................................................... - 6 -
1) PRINCIPE FONDAMENTAL ........................................................................................................................................- 6 -
2) ALGORITHME DE PRINCIPE ......................................................................................................................................- 7 -
3) CONFIGURATION DE LA METHODE ..........................................................................................................................- 8 -
III) LA P.S.O. POUR L’OPTIMISATION COMBINATOIRE............................................. - 10 -
1) PASSAGE DE LA P.S.O. À LA D.P.S.O....................................................................................................................- 10 -
2) ALGEBRE DE LA D.P.S.O. .....................................................................................................................................- 11 -
3) IMPLEMENTATION DE L’ALGORITHME EN C++ .....................................................................................................- 12 -
IV) APPLICATION POUR LE T.S.P....................................................................................... - 15 -
1) PRESENTATION DU PROBLEME DU VOYAGEUR DE COMMERCE ............................................................................- 15 -
2) MISE EN PLACE DES ÉNONCÉS ...............................................................................................................................- 16 -
3) RESULTATS ...........................................................................................................................................................- 18 -
CONCLUSION............................................................................................................................ - 20 -
BIBLIOGRAPHIE
WEBOGRAPHIE
ANNEXES

Table des Figures

FIGURE 1 : VOLEE D'ANSER EN FORMATION EN V ................................................................................- 2 -


FIGURE 2 : UN VOISINAGE GEOGRAPHIQUE [3] ...................................................................................- 4 -
FIGURE 3 : UN VOISINAGE EN CERCLE [3]...........................................................................................- 5 -
FIGURE 4 : COMPROMIS ENTRE DEUX DEPLACEMENTS POSSIBLES ........................................................- 7 -
FIGURE 5 : ORGANIGRAMME DE LA METHODE DES ESSAIMS PARTICULAIRES [5] ...................................- 8 -
FIGURE 6 : DIAGRAMME UML DE LA SITUATION ...............................................................................- 12 -
FIGURE 7 : COUPLAGE SYSTEME/MODELE .........................................................................................- 14 -
FIGURE 8 : APPLICATION DU T.S.P. POUR L’ALLEMAGNE..................................................................- 15 -
FIGURE 9 : POSITION SELON COORDONNEES .....................................................................................- 16 -
FIGURE 10 : PASSAGE GRAPHE/MATRICE ...........................................................................................- 17 -
FIGURE 11 : CREATION D’UNE MATRICE DEPUIS UN GRAPHE .............................................................- 17 -
FIGURE 12 : ITERATION DE L'OPTIMUM A CHAQUE REPLICATION ........................................................- 18 -
FIGURE 13 : MOUVEMENT DE LA PARTICULE 5 SUR LA MATRICE10.....................................................- 19 -

A. 1 : MATRICE4 ......................................................................................................................................I
A. 2 : MATRICE9 ......................................................................................................................................I
A. 3 : MATRICE10 ....................................................................................................................................I
Introduction

L’optimisation est une branche des mathématiques qui permet de résoudre des problèmes en
déterminant le meilleur élément d’un ensemble selon certains critères prédéfinis. De ce fait,
l’optimisation est omniprésente dans tous les domaines et évolue sans cesse depuis Euclide.

En 1995, Russel Eberhart, ingénieur en électricité et James Kennedy, socio-psychologue,


s’inspirent du monde du vivant pour mettre en place une méta-heuristique : l’optimisation par
essaim particulaire. Cette méthode se base sur la collaboration des individus entre eux : chaque
particule se déplace et à chaque itération, la plus proche de l’optimum communique aux autres sa
position pour qu’elles modifient leur trajectoire. Cette idée veut qu’un groupe d’individus peu
intelligents puisse posséder une organisation globale complexe.

De part sa récence, de nombreuses recherches sont faites sur la P.S.O., mais la plus efficace
jusqu’à maintenant est l’élargissement au cadre de l’optimisation combinatoire. En effet, en 2000,
Maurice Clerc, un chercheur de France Telecom met en place la D.P.S.O (Discrete Particle Swarm
Optimization), en remplaçant les points par des ordonnancements et les fonctions continues par des
fonctions d’évaluation.

Nous avons donc, afin de comprendre l’efficacité et les limites de cette approche, appliqué
cette méthode au Problème du Voyageur de Commerce, un problème d’optimisation combinatoire,
qui, à priori, est très mauvais pour ce genre d’heuristique d’optimisation.

Tout d’abord, nous allons vous présenter l’optimisation par essaim particulaire en continu et
en discret, puis comment nous l’avons appliqué au problème du voyageur de commerce et enfin
nous discuterons des résultats trouvés après avoir soumis notre algorithme à une série de tests.

-1-
I) Présentation de la P.S.O.

1) Motivation de la P.S.O.

Pour de nombreux problèmes, il n’existe pas de solution déterministe qui donne le résultat
en un temps raisonnable, et ceci malgré la création d'ordinateurs de plus en plus performants. Pour
pallier à ce problème, on a recours à des méthodes dites heuristiques, c’est-à-dire des méthodes qui
fournissent une solution approchée. Toutefois, il faut reproduire le processus sur plusieurs itérations
pour tendre vers une solution acceptable.
On retrouve parmi ces heuristiques, certains algorithmes qui possèdent un principe générique
adaptable et qui s’applique donc à plusieurs problèmes d’optimisation. On les appelle des méta-
heuristiques. La plus courante est la descente stochastique : on part d’une solution initiale, on la
compare à tous ses voisins en conservant à chaque fois le meilleur résultat.
L’optimisation par essaim particulaire, qui dérive de la descente stochastique, entre dans cette
famille d'algorithmes. Elle s’inspire fortement des relations grégaires des oiseaux migrateurs qui
doivent parcourir des longues distances et qui doivent donc optimiser leurs déplacements en termes
d’énergie dépensée, comme par exemple la formation en V.

Figure 1 : Volée d'Anser en formation en V

-2-
2) Les éléments de la P.S.O.

Pour appliquer la PSO il faut définir un espace de recherche constitué de particules et une
fonction objectif à optimiser. Le principe de l’algorithme est de déplacer ces particules afin qu’elles
trouvent l’optimum.
Chacune de ces particules est dotée :
• D’une position, c'est-à-dire ses coordonnées dans l’ensemble de définition.
• D’une vitesse qui permet à la particule de se déplacer. De cette façon, au cours des
itérations, chaque particule change de position. Elle évolue en fonction de son meilleur
voisin, de sa meilleure position, et de sa position précédente. C'est cette évolution qui
permet de tomber sur une particule optimale.
• D’un voisinage, c'est-à-dire un ensemble de particules qui interagissent directement sur la
particule, en particulier celle qui a le meilleur critère.
A tout instant, chaque particule connait :
• Sa meilleure position visitée. On retient essentiellement la valeur du critère calculée ainsi
que ses coordonnées.
• La position du meilleur voisin de l’essaim qui correspond à l'ordonnancement optimal.
• La valeur qu’elle donne à la fonction objectif car à chaque itération il faut une comparaison
entre la valeur du critère donnée par la particule courante et la valeur optimale.

On se rend compte, en accord avec Maurice Clerc et Patrick Siarry [2], que l’évolution
d’une particule est finalement une combinaison de trois types de comportements : égoïste (suivre sa
voie suivant sa vitesse actuelle), conservateur (revenir en arrière en prenant en compte sa meilleure
performance) et panurgien (suivre aveuglement le meilleur de tous en considérant sa performance).
On voit alors que la bio-inspiration à l’origine de l’optimisation par essaim particulaire ressort dans
l’algorithme sous la forme d’une intelligence collective : coordination du groupe, instinct individuel
et interaction locale entre les individus (grognements, phéromones…).

On observe donc un compromis psycho-social entre confiance en soi et influence des relations
sociales.

-3-
3) Notion de voisinage

Le voisinage d’une particule est le sous-ensemble de particules de l’essaim avec lequel il a


une communication directe. Ce réseau de rapports entre toutes les particules est connu comme la
sociométrie, ou la topologie de l’essaim.
Il existe deux principaux types de voisinage :
• Les voisinages géographiques : les voisins sont considérés comme les particules les
plus proches. Cependant, à chaque itération, les nouveaux voisins doivent être
recalculés à partir d’une distance prédéfinie dans l’espace de recherche. C’est donc
un voisinage dynamique.

Figure 2 : Un voisinage géographique [3]

Dans cet exemple, le voisinage de la particule est composé des deux particules les plus
proches.

-4-
• Les voisinages sociaux : les voisins sont définis à l’initialisation et ne sont pas
modifiés ensuite. C’est le voisinage le plus utilisé, pour plusieurs raisons :
 Il est plus simple à programmer.
 Il est moins coûteux en temps de calcul.
 En cas de convergence, un voisinage social tend à devenir un voisinage
géographique.
Pour ce faire, on dispose (virtuellement) les particules en cercle puis, pour la
particule étudiée, on inclut progressivement dans ses informatrices, d’abord elle-
même, puis les plus proches à sa droite et à sa gauche, jusqu’à atteindre la taille
voulue.
On peut aussi choisir les informatrices au hasard.

Figure 3 : Un voisinage en cercle [3]

Dans cet exemple, la particule principale est en bas et ses informatrices correspondent au
deux particules directement à sa droite et à sa gauche.

-5-
II) La P.S.O. pour l’optimisation continue

1) Principe fondamental

Nous allons donc nous intéresser à cette méta-heuristique dans le cadre où elle a, avant tout,
été définie à savoir l’optimisation de fonctions continues, telle qu’elle est définie dans les travaux
de Michel Gourgand et Sylverin Kemmoé Tchomté [4].

L’algorithme de base de la P.S.O. travaille sur une population appelée essaim de solutions
possibles, elles-mêmes appelées particules. Ces particules sont placées aléatoirement dans l’espace
de recherche de la fonction objectif.
A chaque itération, les particules se déplacent en prenant en compte leur meilleure position
(déplacement égoïste) mais aussi la meilleure position de son voisinage (déplacement panurgien).
Dans les faits, on calcule la nouvelle vitesse à partir de la formule suivante :

Vk+1 = c1*Vk + c2 *(bestparticule - positionparticule ) + c3 *( bestvoisin - positionparticule )

Où : Vk+1 et Vk sont les vitesses de la particule aux itérations k et k+1.


bestparticule est la meilleure position de la particule
bestvoisin est la meilleure position de son voisinage à l’itération k
positionparticule est la position de la particule à l’itération k
c1, c2, c3 sont des coefficients fixés, c2 est généré aléatoirement à chaque itération et, en
général, c3 = c2

On peut ensuite déterminer la position suivante de la particule grâce à la vitesse que l’on
vient de calculer :
Xk+1 =Xk + Vk+1

Où : Xk est la position de la particule à l’itération k


On génère X0 et V0 au début de notre algorithme.

-6-
Figure 4 : Compromis entre deux déplacements possibles

2) Algorithme de principe

L’algorithme de base est très simple :


On note g la meilleure position connue de l’essaim et f(x) la fonction qui calcule le critère de x.

Pour chaque particule :


On initialise sa position
On initialise sa meilleure position p connue comme étant sa position initiale
Si f(p) < f(g), on met à jour la meilleure position de l’essaim
On initialise la vitesse de la particule.
Tant que l’on n’a pas atteint l’itération maximum ou une certaine valeur du critère :
Pour chaque particule i :
On tire aléatoire c2 et c3
On met à jour la vitesse de la particule suivant la formule vue précédemment
On met à jour la position xi
Si f(xi) < f(pi),
On met à jour la meilleure position de la particule
Si f(pi) < f(g), on met à jour la meilleure position de l’essaim
g est l’optimum.

-7-
Le principe de l’algorithme peut être plus facilement visualisé grâce à la figure suivante :

Figure 5 : Organigramme de la méthode des essaims particulaires [5]

3) Configuration de la méthode

A première vue, il semblerait que de nombreux paramètres sont à prendre en compte pour
l’application de l’optimisation par essaim particulaire. Toutefois, la plupart d’entre eux peuvent être
fixés, d’autres au contraire ne peuvent être définis qu’empiriquement.
C’est le cas, par exemple de la taille de l’essaim. La quantité de particules allouées dépend
essentiellement de deux paramètres : la taille de l’espace de définition, et le rapport entre la capacité
de calcul de la machine et le temps maximum de recherche. Le meilleur moyen d’affiner ce
coefficient est donc de faire de nombreux essais afin de se doter de l’expérience nécessaire. Il faut
aussi d’autre part considérer l’initialisation de l’essaim ; elle est généralement faite aléatoirement

-8-
suivant une loi uniforme sur [0,1], cependant une répartition homogène des particules est préférable,
comme avec l’utilisation d’un générateur de séquence de SOBOL.
Deux autres paramètres importants sont les coefficients de confiance que l’on nomme
précédemment c2 et c3. Ils permettent de pondérer les tendances des particules à suivre leur instinct
de conservation ou leur panurgisme. De manière générale, ces variables aléatoires sont évaluées à
chaque itération suivant une loi uniforme sur le domaine de définition.
De même un paramètre important à prendre en compte est le coefficient d’inertie appelé c1 dans la
formule vue auparavant. Il permet de définir la capacité d’exploration de chaque particule en vue
d’améliorer la convergence de la méthode. Fixer ce paramètre revient à trouver un compromis entre
une exploration globale (c1 > 1) et une exploration locale (c1 < 1). Il représente l’instinct aventureux
de la particule.
Enfin, il reste à configurer le critère d’arrêt. En effet, la convergence vers la solution optimale
globale n’est pas garantie dans tous les cas. Il est donc important de doter l’algorithme d’une porte
de sortie en définissant un nombre maximum d’itérations. Le programme s’arrête alors si et
seulement si le nombre maximum d’itérations est atteint ou que la valeur du critère obtenue est
acceptable pour l’utilisateur.

A partir de l’organigramme et de la configuration de ces paramètres, nous avons pu


développer l’optimisation par essaim particulaire en C++. Toutefois, afin de la tester sur des
problèmes de combinatoire, des modifications ont dû être appliquées sur notre code.

-9-
III) La P.S.O. pour l’optimisation combinatoire

1) Passage de la P.S.O. à la D.P.S.O.

Maurice Clerc explique dans sa présentation de la D.P.S.O. [1] que l’O.E.P. discrète n’est
pas aussi efficace que certains algorithmes spécifiques, mais que d’un autre côté, elle est très
facilement adaptable à n’importe quel autre problème de combinatoire pour lequel on ne disposerait
pas d’algorithme dominant.
Le principal problème du passage du continu au discret réside dans la notion de position et
de vitesse. Une position dans l’ensemble de recherche correspond à un ordonnancement en
optimisation combinatoire, par exemple une suite d’activités, ou, dans le cadre du Problème de
Voyageur de Commerce, d’un cycle de taille N, où N est le nombre de villes. Les vitesses sont, dès
lors, des vecteurs et les changements de vitesse sont vus comme des ensembles de permutations.
L’autre notion, qui fait office de corollaire, est celle de la fonction objectif. En effet, la
position n’étant plus un point mais un ordonnancement, il faut donc calculer le critère suivant une
nouvelle forme et se poser la question de l’existence du critère. Par exemple, pour le T.S.P., le
calcul du critère se fait suivant une somme de distances entre chaque point de l’ordonnancement.
Pour ce qui est de l’existence, il suffit que la fonction objectif ait un nombre fini de valeurs et que le
minimum global corresponde effectivement à la meilleure solution.

Ces modifications interviennent dans les équations qui régissent l’évolution des particules :

Vk+1 = c1 Vk c2 (bestparticule – positionparticule) c2 (bestvoisin – positionparticule) (1)


Xk+1 = Xk Vk (2)

(1) Correspond à la façon dont la vitesse est modifiée


(2) Correspond à l’évolution de la particule en fonction de sa vitesse
Ces équations sont à appliquer à chaque itération et à chaque particule.

Les Xk, bestparticule, positionparticule et bestvoisin sont maintenant des ordonnancements et les opérations
algébriques n’ont, ici, pas leur sens habituel et doivent donc être redéfinies.

- 10 -
2) Algèbre de la D.P.S.O.

L’addition :
Cette opération s’applique entre une position et une vitesse et retourne une position. Le résultat est
obtenu grâce à des permutations successives des éléments de X tenant compte de ceux de V. Il n’est
utilisé que lors de la mise à jour de la position.

L’addition :
La surcharge d’opérateur du C++, nous permet de nommer deux opérandes de manière identique.
Cependant, les paramètres d’entrées doivent être différents.
Cette opération s’effectue entre deux vitesses et le résultat est une concaténation des deux
opérandes sous forme d’une vitesse.

La multiplication :
Cette opération s’effectue entre un réel k et une vitesse V et le résultat est une vitesse. Différents
cas sont à envisager en fonction du réel.
Si k appartient à l’intervalle ]0 ; 1[ alors on tronque V de Ę(k*|V|) où |V| est le nombre d’éléments
de V et Ę(x) est la partie entière supérieure de x.
Si k est un entier, alors on effectue k permutations de V, on utilise pour cela l’addition de vitesse.
Si k > 1 alors on sépare, partie entière et décimale d’où k = n + x où n et x correspondent
respectivement aux parties entières et décimales de k. On se ramène alors pour chaque partie aux
cas précédents.
Si k < 0, on prend sa valeur absolue.

La soustraction - :
La soustraction s’effectue entre deux positions et retourne la vitesse qui permet de passer de la
première position à la seconde.

Afin de mieux comprendre le fonctionnement de chaque opérande, prenons V une vitesse, par
exemple V = {(1, 2) (5, 4)}, une position X = {1 2 4 3 5} et k=0.5, un scalaire.
L’opération X V retourne une position obtenue. On a d’abord X = {2 1 4 3 5} et après, on
obtient X = {2 1 5 3 4}.
L’opération V V retourne la vitesse V = {(1, 2) (5, 4) (1, 2) (5, 4)}.
L’opération k V retourne la vitesse V = {(1, 2)}.

- 11 -
Soit X1 = {1 2 3 4 5} et X2 = {2 4 5 3 1}
L’opération V = X1-X2 retourne la vitesse V = {(1, 2) (1, 4) (3, 5) (1, 3)}.
On vérifie que X2 = X1 V.

3) Implémentation de l’algorithme en C++

Choix du langage :

Le choix du C++ s’est vite imposé, il est justifié par la facilité d’utilisation qu’offre la Standard
Library Language (S.T.L.) et par le fait que nous souhaitions, à travers ce projet, améliorer notre
connaissance du langage. En effet, la S.T.L. contient un ensemble de classes conteneurs telles que
les vecteurs (vector), qui sont très courants dans notre étude : tout ce que nous avons appelé
ordonnancement peut ainsi être mis sous la forme de vecteur d’entier (soit l’ensemble des
différentes positions et vitesses mises en œuvre). De plus, l’essaim est lui-même un vecteur qui
contient des pointeurs sur ces vecteurs d’entiers. Enfin, la S.T.L. dispose d’algorithmes génériques
très performants d’insertion/suppression et d’affichage de valeurs grâce aux itérateurs.

Modélisation de la situation :

Figure 6 : Diagramme UML de la situation

- 12 -
• Lecture : le but de cette classe est d’accéder à un fichier dont le nom, qui est une chaîne de
caractères, est attribut de la classe. Cela permet de récupérer le nombre de villes et remplir
ensuite une matrice qui contient les distances entre les villes.
Cette classe est l’énoncé du problème. Elle permet de fournir le nombre de villes, ainsi que la
matrice de coût qui correspond à l’ensemble des distances entre chaque ville. Elle récupère, elle-
même ces informations en lisant le fichier d’énoncé.

• Tour : c’est la classe la plus précise, ces attributs sont :


 ordonnancement : qui correspond à un tour (une position donc)
 velocity : qui est la vitesse de la particule
 pBest : qui est la meilleure position précédente
 mat_cout : qui correspond à la matrice de coût c'est-à-dire les distances entre les
villes.
Cette classe est la représentation générique des particules. Son nom vient du fait que pour le
T.S.P., une particule correspond à un tour c'est-à-dire un cycle complet du parcours. Elle permet
de représenter les points qui se déplacent dans le domaine d’étude. Elle contient la fonction qui
permet de calculer le critère en fonction de la position de la particule. Elle est associée à une
vitesse qui lui permet de calculer sa nouvelle position.

• Essaim : c’est la classe principale, elle est constituée de particules, gBest qui est la meilleure
particule de l’essaim et la valeur du critère pour gBest.
La classe Essaim, qui est aussi une classe générique, regroupe l’ensemble des particules. Elles
sont stockées dans un vecteur de la S.T.L., vector <Tour*>. Cette classe dispose de l’ensemble
des opérations définies pour l’optimisation par essaim particulaire discrète, car c’est elle qui
permet de faire évoluer les particules dans le domaine de définition. Pour cela, elle dispose, de
plus, du meilleur voisin et la valeur du critère correspondant.

Une forme de Coplien est nécessaire pour les deux classes génériques afin d’éviter au maximum
les fuites de mémoire. En effet, ce programme alloue un espace mémoire important et l’utilisation
de pointeurs peut être risquée. Toutefois, en définissant correctement les destructeurs, il est possible
de s’assurer de la bonne tenue du code.

- 13 -
On observe donc un échange d’information entre les classes Essaim et Tour. La première
fournit la particule et la deuxième en déduit la position et s’en sert pour calculer le critère. Elle
renvoie ce critère à Essaim qui la compare au meilleur critère et réitère l’opération avec la particule
qui suit dans le voisinage.

Figure 7 : Couplage système/modèle

- 14 -
IV) Application pour le T.S.P.

1) Présentation du Problème du Voyageur de Commerce

Le Problème du Voyageur de Commerce, ou plus couramment appelé T.S.P. pour Travelling


Salesman Problem, est un problème d’optimisation NP-Complet (i.e. il est impossible de trouver
une solution rapidement, mais rapide de vérifier la qualité d’une solution). L’énoncé du problème
est : « soit un ensemble de villes séparées par des distances données, trouver un chemin de longueur
totale minimale qui passe exactement une fois par chaque ville et revienne au point de départ ». Ce
problème, qui paraît simple, ne peut, en fait, pas être résolu dans un temps raisonnable pour des
grandes instances, on doit donc utiliser des méthodes qui permettent d’obtenir une solution
approchée. Par exemple, pour 69 villes, le nombre de chemin possible est un nombre à 100 chiffres.
Le T.S.P. présente des applications variées et nombreuses, il apparaît souvent comme un
sous-problème d’un problème plus vaste. Il est, par exemple, utilisé en génétique où la notion de
distance entre deux villes correspond à un degré de ressemblance entre deux fragments d’A.D.N..
Dans notre étude, nous avons décidé d’utiliser le Problème du Voyageur de Commerce
symétrique, ce qui implique que pour 2 villes, i et j, la distance entre i et j est la même que la
distance entre j et i.

Figure 8 : Application du T.S.P. pour l’Allemagne

- 15 -
2) Mise en place des énoncés

Divers exemples de TSP sont présents sur le site de la TSPlib, les fichiers sont dans le
format .TSP c’est-à-dire que les villes sont représentées selon leurs coordonnées (abscisse,
ordonnée).

Figure 9 : Position selon coordonnées

C’est le format le plus couramment utilisé dans les études, comme par exemple dans celle de
Maurice Clerc [1]. Toutefois, dès le début de nos recherches, nous avons souhaité mettre en place
un format de fichier qui se rapprochait de ceux déjà vus en cours, à savoir :
1ère ligne : Nombre de villes
Lignes suivantes : Matrice de coût
On utilise des matrices symétriques, c’est-à-dire que pour deux villes x et y, d(x,y) = d(y,x) où
d(.,.) est la distance entre deux villes.

- 16 -
On obtient donc le résultat suivant :

Figure 10 : Passage graphe/matrice

Bien sûr, un rapide programme nous permettrait de passer d’un format à l’autre.
Afin de comparer les résultats obtenus avec ceux attendus, nous avons créé des problèmes
de manière empirique. En effet, en partant du point de vue des graphes, nous avons produit un cycle
et donc un problème avec une unique solution. Tous les poids de ce cycle ont été mis à un minimum
en général 1, puis nous avons rempli les autres éléments de la matrice par des valeurs supérieures à
ce minimum.

Figure 11 : Création d’une matrice depuis un graphe

Nous appellerons ces matrices : matriceNBVILLE (voir annexe).

- 17 -
3) Résultats

Nous avons effectué, pour chaque matrice, 30 réplications, avec un nombre de particules
égal au nombre de villes et 10000 itérations.

Problème Critère Valeur Valeur Moyenne Ecart-type


attendu minimal maximal
matrice4 24 24 24 24 0
matrice9 9 9 9 9 0
matrice10 10 10 13 11,63333 1,3256965

Il est intéressant de voir que 10 est la taille limite à partir de laquelle des erreurs
commencent à apparaître.
De plus, on se rend compte que l’itération nécessaire pour trouver l’optimum est totalement
aléatoire, comme le montre ce graphe récupéré sur la matrice10.

10000
9000
8000
7000
6000 Itération
Itération

5000
4000
3000
2000
1000
0
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Réplication

Figure 12 : Itération de l'optimum à chaque réplication

On peut aussi voir, en suivant le mouvement d’une particule, le principe des méta-
heuristiques. En effet, lors de la recherche de l’optimum, il est parfois nécessaire de s’en éloigner
afin de pouvoir mieux s’en rapprocher à l’itération suivante.

- 18 -
80

70

60

50
Critère

40

30

20

10

0
1500 1550 1600 1650 1700 1750 1800 1850 1900 1950 2000

Itération

Figure 13 : Mouvement de la particule 5 sur la matrice10

On a donc un algorithme qui donne des résultats vraisemblables, autant sur le plan
théorique, lorsque l’observation du mouvement d’une particule montre une entité partagée entre son
propre instinct et la volonté du groupe, que sur le plan pratique avec des valeurs de critère
approchant l’optimum, en particulier lorsque le nombre de ville est réduit.

- 19 -
Conclusion
L’optimisation par essaim particulaire est une nouvelle méta-heuristique très efficace car, à
partir de peu de modifications, elle permet la résolution d’un large panel de problèmes. De plus,
bien que définie à la base pour des problèmes d’optimisation continue, on s’aperçoit qu’elle fournit
de très bons résultats pour des applications d’optimisation discrète. En particulier pour le Problème
du Voyageur de Commerce, qui est pourtant, de manière générale, mal géré par les méta-
heuristiques.
Notre première étape de documentation, nous a permis de comprendre le principe
psychologique et social qui prédomine dans cette méthode. Puis, à partir des informations, nous
avons réussi à produire notre propre optimisation par essaim particulaire puis à l’appliquer au T.S.P.
Enfin, nous avons analysé les différents résultats afin de les comparer aux résultats prévus.
A partir de notre programme, nous aurions aimé pouvoir produire une interface graphique
afin de faciliter l’accès à l’utilisateur, mais aussi de manière à pouvoir visualiser l’emplacement des
villes et les flux de circulation possibles.

- 20 -
Bibliographie

1. ↑ [CLERC 2003] Discrete Particle Swarm Optimization illustrated by the Traveling Salesman
Probleme, 2003

2. ↑ [CLERC et SIARRY 2003] Une nouvelle métaheuristique pour l’optimisation difficile : la


méthode des essaims particulaires, 2003

3. ↑ [EUDES et RIOLAND 2007] Optimisation par essaim particulaire pour un problème


d’ordonnancement et d’affectation de ressources, 2007

4. ↑ [GOURGAND et KEMMOE 2009] Particle Swarm Optimization : A study of particle


displacement for solving continuous and combinatorial optimization problems, 2009

Webographie

5. ↑ BOUZID Allal El Moubarek, Optimisation par la méthode des essaims particulaires d’une
fonction trigonométrique, http://www.scribd.com/doc/33669521/essaim-particulaire-PSO, 2008-
2009
Annexes

A. 1 : matrice4

A. 2 : matrice9

A. 3 : matrice10

Vous aimerez peut-être aussi