Beruflich Dokumente
Kultur Dokumente
Résumé
L’objectif de ce document est de présenter une approche d’intelligence collec-
tive permettant de résoudre des problèmes d’optimisation et d’appliquer cela en
particulier à un problème de permutation. L’approche retenue est l’optimisation
par essaim de particules dont l’idée directrice est la simulation du comportement
collectif des oiseaux à l’intérieur d’une nuée.
1
2. Chaque particule est informée du meilleur point connu au sein de son voisi-
nage et elle va tendre à aller vers ce point.
1.1 Le voisinage
Le voisinage constitue la structure du réseau social. Les particules à l’inté-
rieur d’un voisinage communiquent entre-elles. Différents voisinages ont été étu-
diés (Kennedy, 1999) et sont considérés en fonction des identificateurs des parti-
cules et non des informations topologiques comme les distances euclidiennes dans
l’espace de recherche :
– Topologie en étoile (figure 1(a)) : le réseau social est complet, chaque parti-
cule est attirée vers la meilleure particule notée gbest et communique avec
les autres.
– Topologie en anneau (figure 1(b)) : chaque particule communique avec n
(n = 3 1(b)) voisines immédiates. Chaque particule tend à se déplacer vers
la meilleure dans son voisinage local notée lbest.
– Topologie en rayon (figure 1(c)) : une particule "centrale" est connectée
à toute les autres. Seule cette particule centrale ajuste sa position vers la
meilleure, si cela provoque une amélioration l’information est propagée aux
autres.
particule centrale
(c) Rayon
2
1.2 Algorithmes
Chaque particule représente une solution potentielle dans l’espace de recherche.
La nouvelle position d’une particule est déterminée en fonction de sa propre va-
leur et celle de ses voisines. Soit −
→
xi (t) la position de la particule Pi au temps t, sa
position est modifiée en ajoutant une vitesse − →
vi (t) à sa positon courante :
−
→
xi (t) = −
→
xi (t − 1) + −
→
vi (t) (1)
[Initialisations]
Initialiser aléatoirement la population
...
[Traitement]
Répéter
Pour i de 1 à N faire
Si (F(−→
xi ) > pbesti ) Alors
pbesti ← F(− →xi )
→
− →
−
x pbesti ← xi
Fin Si
→
−
vi ← − →
vi + ρ(−→
x pbesti − −
→
xi )
→
− →
−
xi ← xi + vi →
−
Fin Pour
jusqu’à ce que (le processus converge)
3
[Les variables et paramètres de l’algorithme]
N nombre de particules
→
−
xi position de la particule Pi
→
−
vi vitesse de la particule Pi
pbesti meilleure fitness obtenue pour la particule Pi
→
−x pbesti position de la particule Pi pour la meilleure fitness
→
−x gbest position de la particule ayant la meilleure fitness de toutes
ρ1 , ρ2 valeurs aléatoires positives
[———————————————————————————————-]
[Initialisations]
Initialiser aléatoirement la population
...
[Traitement]
Répéter
Pour i de 1 à N faire
Si (F(−→
xi ) > pbesti ) Alors
pbesti ← F(− →
xi )
→
− →
−
x pbesti ← xi
Fin Si
Si (F(−→
xi (t)) > gbest) Alors
gbest ← F(− →
xi )
→
−
x gbest ← xi→
−
Fin Si
Fin Pour
Pour i de 1 à N faire
→
−
vi ← − →
vi + ρ1 (−
→x pbesti − −
→
xi ) + ρ2 (−
→
x gbest − −
→
xi )
→
− →
−
xi ← xi + vi →
−
Fin Pour
jusqu’à ce que (le processus converge)
4
1.3 Paramètres de l’algorithme
Six paramètres rentrent en ligne de compte :
1. La dimension du problème ;
2. Le nombre de particules ;
3. Les valeurs des coefficients ρ ;
4. La taille du voisinage ;
5. La vitesse maximale ;
6. L’inertie.
Nous allons nous intéresser plus particulièrement aux deux derniers.
vij (t) = Vmax si vij (t) > Vmax et vij (t) = −Vmax si vij (t) < −Vmax
Vmax est généralement dépendant de l’échelle du problème. Vmax n’est pas obli-
gatoire (Clerc and Kennedy, 2002) si on utilise un coefficient de constriction (res-
serrement) κ
−
→
vi (t) = κ(−
→
vi (t − 1) →
− →
− →
− →
−
√ + ρ1 ( x pbesti − xi (t)) + ρ2 ( x gbest − xi (t))) (3)
1 |ρ2 −4ρ|
avec κ = 1 − ρ
+ 2
et ρ = ρ1 + ρ2 > 4
||−
→
xa−− →x b ||
<ξ (6)
dmax
avec dmax la plus grande distance entre deux particules et
3t + 0.6tmax
ξ= (7)
tmax
avec t l’itération courante et tm ax le nombre maximal d’itérations. On peut re-
marquer que la taille du voisinage croît avec le temps.
5
1.4 Exemple développé
Considérons par exemple la fonction f (x, y, z, w) = 5x4 +4y 3 −(z/4∗y)2 +5
que l’on cherche à annuler. L’espace de recherche est donc de dimension 4 et la
fonction de fitness calculFitness() dépend de la fonction f (x, y, z, w) elle-
même.
/*--------------------------------------------------------------------------------
Variables de contrôle
Les valeurs sont données à titre d’exemple
*/
nombreDeParticules ← 40
nombreDeVoisins ← 4
maxItérations ← 10000
/* Vitesse maximale */
deltaMinVitesse ← -4.0
deltaMaxVitesse ← 4.0
/* Fitness */
fitnessInitiale ← -100000
fitnessVoulue ← 0
/*--------------------------------------------------------------------------------
Initialisations
*/
POUR j ← 1 % nombreDeParticules FAIRE
particule ← essaim[j]
/* Position et vitesse */
POUR d ← 1 % dimensionEspace FAIRE
particule.nouvellePosition[d] ← random(...)
particule.vitesse[d] ← random(deltaMinVitesse, deltaMaxVitesse)
FPOUR
particule.meilleureFitness ← fitnessInitiale
/* Voisinage */
POUR n ← 1 % nombreDeVoisins FAIRE
particule.voisin[n] ← obtenirVoisin(essaim, j, n)
FPOUR
FPOUR
/*------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------
PSO
*/
TANTQUE i <= maxItérations FAIRE
POUR j ← 1 % nombreDeParticules FAIRE
particule ← essaim[j]
POUR d ← 1 % dimensionEspace FAIRE
particule.positionCourante[d] ← particule.nouvellePosition[d]
FPOUR
fitness ← calculFitness(p)
SI fitness > particule.meilleureFitness
ALORS
particule.meilleureFitness ← fitness
POUR d ← 1 % dimensionEspace FAIRE
particule.meilleurePosition[d] ← particule.positionCourante[d]
FPOUR
FSI
SI fitness = fitnessVoulue
ALORS Retourner particule.meilleurePosition
FSI
FPOUR
POUR j ← 1 % nombreDeParticules FAIRE
particule ← essaim[j]
meilleureVoisine ← obtenirMeilleureVoisine(essaim, j, nombreDeVoisins)
POUR d ← 1 % dimensionEspace FAIRE
rho_1 ← c1 * random(O,1)
rho_2 ← c2 * random(0,1)
particule.vitesse[d] ←
vitesseBornée(particule.vitesse[d] +
rho_1 * (particule.meilleurePosition[d] - particule.positionCourante[d]) +
rho_2 * (meilleureVoisine.meilleurePosition[d] - particule.positionCourante[d]))
particule.nouvellePosition[d] ← particule.positionCourante[d] + particule.vitesse[d]
FPOUR
FPOUR
i ← i+1
FTQ
6
2 Le problème des n-Reines
Il s’agit d’utiliser l’algorithme d’optimisation par essaim de particules au pro-
blème des n-reines (Hu et al., ). On utilise un vecteur pour représenter l’échiquier
(figure 2).
1 4 7 9 2 5 8 6 3
F IG . 2 – Échiquier et sa représentation
Par cette représentation les conflits entre les reines au niveau des lignes et des
colonnes sont supprimés, donc pour trouver une solution il faut éliminer les conflits
au niveau des diagonales.
La fonction de fitness F est alors le nombre de conflits au niveau des diagonales,
on remarquera que cette approche est très voisine de celle utilisée avec le recuit
simulé. Le problème consiste donc à rechercher une permutation dont la fonction
de fitness est nulle.
Pour appliquer PSO à un problème de permutation, il faut adapter l’algorithme.
En effet les particules codent les solutions dans l’espace de résolution et plusieurs
positions peuvent avoir les mêmes valeurs ce qui n’est pas possible dans notre
problème de permutation, puisqu’une particule doit être représentée par son vec-
teur dont chacune des valeurs qui représente une position est différente. La vitesse
conditionne la possibilité de changement dans la séquence, donc plus la vitesse est
grande plus il est probable qu’une permutation soit effectuée. Chaque composante
de la vitesse est donc normalisée (cf. 1).
On détermine ensuite si il doit y avoir permutation ou non en fonction de cette
probabilité. La composante k dans l’exemple doit donc être modifiée (probabilité
= 1) et la composante k + 4 à une forte probabilité. Si un échange doit avoir lieu,
7
k k+1 k+2 k+3 k+4 k+5
−
→v i (t) ... 50 10 5 35 40 25 ...
→
−
| v (t)| ... 1 0,2 0,1 0,7 0,8 0,5 ...
i
Références
Clerc, M. and Kennedy, J. (2002). The Particle Swarm : Explosion, Stability, and
Convergence in a Multi-Dimensional Complex Space. In Proceedings of the
IEEE Transactions on Evolutionary Computation, volume VI, pages 58–73.
Hu, X., Eberhart, R., and Shi, Y. Swarm Intelligence for Permutation Optimiza-
tion : A Case Study of n-Queens Problem.
Kennedy, J. (1999). Small Worlds and Mega-Minds : Effects of Neighborhood To-
pology on Particle Swarm Performance. In IEEE Congress on Evolutionary
Computation, volume III, pages 1932–1938.
Kennedy, J. and Eberhart, R. (1995). Particle Swarm Optimization. In Pro-
ceedings of IEEE International Conference on Neural Network, volume IV,
pages 1942–1948.
Suganthan, P. (1999). Particle Swarm Optimizer with Neighborhood Operator. In
IEEE Congress on Evolutionary Computation, volume III, pages 1958–1961.
van den Bergh, F. (2002). An Analysis of Particle Swarm Optimizers. PhD thesis,
Department of Computer Science, University of Pretoria.