Vous êtes sur la page 1sur 58

Les algorithmes de recherche

locale

1
Méthodes de recherche locale
• Les méthodes de recherche locale sont des algorithmes itératifs qui explorent
l’espace X en se déplaçant pas à pas d’une solution à une autre.
• Une méthode de ce type débute à partir d’une solution s0 ∈ X choisie
arbitrairement ou alors obtenue par le biais d’une méthode constructive.
• Le passage d’une solution admissible à une autre se fait sur la base d’un
ensemble de modifications élémentaires qu’il s’agit de définir de cas en cas.
• Une solution s' obtenue à partir de s en appliquant une modification
élémentaire.
• Un tel processus d’exploration est interrompu lorsqu’un ou plusieurs critères
d’arrêt sont satisfaits.
• Les passages successifs d’une solution à une solution voisine définissent un
chemin au travers de l’espace des solutions admissibles.

Méthodes de recherche locale

3
Solution de départ : Heuristiques constrictuves

Majorité des méthodes constructives de type « glouton »:


La solution courante est complétée de la meilleure façon “locale”
possible sans tenir compte des conséquences sur la solution finale
(Algorithmes myopes)

Inconvénients : Peut fournir une très mauvaise solution car


n’atteint l’optimum que si chaque sous ensemble
contient une solution optimale (est c’est rarement le cas)

Avantages : rapidité et simplicité

Souvent utilisée comme point de départ d’autres méthodes

Heuristiques constrictuves
Principe :
construction progressive d’une solution s = ( x1 , x 2 ,..., x n )
à partir d’une solution initiale vide s
en insérant à chaque étape k (k=1 à n) 0
une composante dans la solution partielle courante avec:
xo ( k ) s k −1
o(k ) ∈ {1,2,...n}{o(1), o(2),...., o(k − 1)}
décision prise à une étape donnée = indice de la composante à insérer
+ valeur de la composante

Exploration de X par une approche constructive : diminue la taille du problème en se


restreignant à des sous ensemble de X.

X k = {s = ( x1 , x 2 ,..., x n }∈ X / xo (1) , xo ( 2) ,..., xo ( k ) fixees


Pour (k=1,…,n)
X
Solution optimale globale a atteindre : s* S*
X2 X1

Heuristiques constrictuves : exemples

Problème du voyageur de commerce:


Données: graphe orienté, longueur dij associée à chaque arc (i,j)
Problème: trouver un circuit Hamiltonien (tous les sommets du graphe sont visités
exactement une seule fois) de longueur totale minimale.

E: ensemble d’arêtes
F: sous-ensembles de E qui forment un cycle hamiltonien (CH)
c( S ) = ∑c e ce: coût de l’arête e
e∈S

ALGORITHME DU PLUS PROCHE VOISIN



Heuristiques constrictuves : exemples

Problème du voyageur de commerce: Algorithme de l’insertion la moins distante pour


la construction d’une solution pour le problème du voyageur de commerce:

Étape 0:
Initialiser le cycle avec un seul sommet.
Etape 1:
Trouver le sommet k parmi ceux qui n’appartiennent pas à la solution courante et
dont l’arête qui le connecte à ce cycle soit la plus courte.
Etape 2:
Trouver la paire d’arêtes (i,k) et (k,j) qui connectent le sommet k au cycle en
minimisant
cik + ckj - cij
Insérer les arêtes (i,k) et (k,j) et éliminer l’arête (i,j).
Etape 3:
Retourner à l’étape 1.

Heuristiques constrictuves : exemples

k Choix du sommet

Choix des arêtes


k

i j

8
Heuristiques constrictuves : exemples
Arbre couvrant de poids minimum :
Etant donné un graphe connexe G=(V,E) et des poids ce associés aux arêtes e ∈
E, déterminer un arbre générateur T ⊆ E dont le poids c(T) = Σ e∈T ce soit
minimum.

E: ensemble d’arêtes
F: sous-ensembles de E qui forment des arbres générateurs

Heuristiques constrictuves : exemples


Arbre couvrant de poids minimum :
Algorithme glouton pour la construction d’un arbre de poids minimum (Kruskal)

Étape 0:
Trier les arêtes de E de façon à ce que c1 ≤ c2 ≤...≤ cn
T←∅
Étape 1:
Pour i de 1 à n faire
Si T ∪ {ei} ∈ F
alors T ← T ∪ {ei}
Note:
La solution T est une solution optimale

Fonction gloutonne: ce (poids de l’arête)

10




Représentation de solutions
• Les méthodes de recherche locale sont des algorithmes itératifs qui
explorent l’espace X en se déplaçant pas à pas d’une solution à une
autre.
• Une méthode de ce type débute à partir d’une solution s0 ∈ X choisie
arbitrairement ou alors obtenue par le biais d’une méthode constructive.
• Le passage d’une solution admissible à une autre se fait sur la base d’un
ensemble de modifications élémentaires qu’il s’agit de définir de cas en
cas.
• Une solution s' obtenue à partir de s en appliquant une modification
élémentaire.
• Un tel processus d’exploration est interrompu lorsqu’un ou plusieurs
critères d’arrêt sont satisfaits.

11

Représentation de solutions
• Ensemble F de solutions (réalisables) est un sous-ensemble de E (ensemble
de support ou de base) des éléments qui satisfont certaines conditions
(contraintes).
• Représentation d’une solution: indiquer les éléments de E qui appartiennent
à la solution et ceux qui n’y appartiennent pas.

Problème du sac-à-dos:
Entrées: n objets, poids maximum b, revenus cj et poids aj associés à chaque
objet j=1,…,n
Problème d’optimisation: “trouver un ensemble S* qui maximise ∑j∈S cj
parmi tous les sous-ensembles S ⊆ {1,…,n} tels que ∑j∈S aj ≤ b.”

vecteur 0-1 de n éléments, xj = 1 si l’objet j appartient à la solution, xj = 0 sinon

12

Représentation de solutions
• Problème du voyageur de commerce
E: ensemble d’arêtes
F: sous-ensembles de E qui forment un
circuit hamiltonien (CH)

Une solution est un vecteur de n = |E| éléments:


ve = 1, si l’arête e appartient au CH
ve = 0, sinon.

a 1 b
5
Solutions réalisables (parmi 64 possibilités): 4 2
(1,1,1,1,0,0), (1,0,1,0,1,1), (0,1,0,1,1,1) 6
d c
3

13





Représentation de solutions
• Autre représentation pour les solutions du problème du voyageur
de commerce: représenter chaque solution par l’ordre dans
laquelle les sommets sont visités, c.à.d., comme une permutation
circulaire des n sommets (puisque le premier sommet peut être
choisi arbitrairement)
(a)bcd
(a)bdc
(a)cbd
(a)cdb
(a)dbc
(a)dcb

14

Représentation de solutions
• Indicateurs 0-1 d’appartenance:
– Problème du sac-à-dos
– Problèmes de recouvrement et de partitionement

• Indicateurs généraux d’appartenance:


– Coloration de graphes

• Permutations:
– Problèmes d’ordonnancement
• Job/Flow/Open Shop Scheduling
– Problème du voyageur de commerce

15

Voisinages
• Problème combinatoire : f(s*) = minimum {f(s): s ∈ S}
S est un ensemble fini de solutions

• Voisinage: élément qui introduit la notion de proximité entre les


solutions de S.

• Le voisinage d’une solution s ∈ S est un sous-ensemble de S :


N(s) = {s1,s2,…,sk} solutions voisines de s

• Les bons voisinages permettent de représenter de forme efficace


et compacte l’ensemble des solutions voisines à toute solution s

16

Voisinages
• Voisinages dans l’espace des permutations:
• Solution π=(π1,…,πi -1,πi,πi +1,…,πj,…,πn)

• N1(π)={(π1,…,πi+1,πi ,…,πn): i=1,…, n-1}


Voisins de (1,2,3,4) = {(2,1,3,4),(1,3,2,4), (1,2,4,3)}

• N2(π)={(π1,…,πj,...,πi,…,πn): i=1,…,n-1; j=i+1,…,n}


Voisins de (1,2,3,4)= {(2,1,3,4),(1,3,2,4), (1,2,4,3),(3,2,1,4),
(1,4,3,2),(4,3,2,1)}

• N3(π)={(π1,…, πi -1,πi +1,…,πj,πi,…,πn): i=1,…,n-1; j=i+1,…,n}


Voisins de (1,2,3,4) = {(2,1,3,4),(2,3,1,4), (2,3,4,1),(1,3,2,4),
(1,3,4,2),(1,2,4,3)}
17


Voisinages

18
Voisinages

19
Voisinages

20
Voisinages

21
Exemple: problème du sac-à-dos
• Entrées :
Ensemble {1,2,…,n} d’objets
Poids maximum b
Revenu cj associé à chaque objet j=1,…,n
Poids aj associé à chaque objet j=1,…,n

• Problème d’optimisation :
Trouver un ensemble S* d’objets qui maximise le revenu total et
dont la somme des poids soit inférieure à b

• Applications :
– Choix d’investissements
– Optimisation d’un portfolio d’actions

22






Exemple: problème du sac-à-dos
• Algorithme glouton approché pour construire une solution
réalisable:

1. Trier les objets par revenus décroissants

2. Évaluer le premier objet de la liste.

3. Si son poids est inférieur ou égal au poids disponible, choisir cet


objet.
Sinon, éliminer cet objet et passer au suivant en retournant à
l’étape 1.

23


Exemple: problème du sac-à-dos


• Exemple numérique:

n = 8 objets
poids maximum b = 15
revenus des objets: 5, 4, 6, 3, 5, 8, 5, 9
poids des objets: 3, 5, 7, 4, 2, 9, 5, 8

objets triés par revenus: 8, 6, 3, 7, 5, 1, 2, 4

solution = {8, 3} revenu = 15

24



Exemple: problème du sac-à-dos


• Algorithme glouton approché pour construire une solution
réalisable:

1. Trier les objets par revenus décroissants

2. Évaluer le premier objet de la liste.

3. Si son poids est inférieur ou égal au poids disponible, choisir cet


objet.
Sinon, éliminer cet objet et passer au suivant en retournant à
l’étape 1.

• Critère qui donne les meilleurs résultats: trier les objets par
densités (revenu/poids) décroissantes

25


Exemple: problème du sac-à-dos
• Exemple numérique:
n = 8 objets
poids maximum b = 15
revenus des objets: 5, 4, 6, 3, 5, 8, 5, 9
poids des objets: 3, 5, 7, 4, 2, 9, 5, 8

objets triés par revenus: 8, 6, 3, 7, 5, 1, solution = {8, 3} revenu = 15


2, 4

Densités des objets: 1.67, 0.8, 0.86, 0.75, 2.5, 0.88, 1,


1.125

Objets triés par densités : 5, 1, 8, 7, 6, 3, 2, 4 solution = {5, 1, 8} revenu = 19

26



Voisinages
• Espace de recherche : défini par l’ensemble des solutions S et par
un voisinage N

• Exemple 1 – problème du sac-à-dos : vecteurs d’appartenance 0-1


v=(v1,…,vi,…,vn)
vi = 1, si l’objet i est choisi
vi = 0, sinon

• Voisinage : Solution voisine: vi ! 1-vi


N4(v)={(v1,…,1-vi,…,vn), i=1,..,n}
Voisins de (1,0,1,1) = {(0,0,1,1), (1,1,1,1), (1,0,0,1), (1,0,1,0)}

27




100 101

000 001

010 011

110 111

28
Voisinages
• Espace de recherche: défini par l’ensemble de solutions S et par
un voisinage N

• Exemple 2 : permutations avec le voisinage N1

29

1243 1342

1234 1324

2143 2134 3124 3142

2314 3214

2341 3241

2431 3421

4231 4321

2413 4213 4312 3412


4123 4132

1423 1432

30
Voisinages
• Espace de recherche: défini par l’ensemble de solutions S et par
un voisinage N

• Exemple 3:
Voisinages 2-opt et 3-opt pour le voyageur de commerce

31

Voisinages
• Voisinage 2-opt pour le voyageur de commerce:

32
Voisinages
• Voisinage 3-opt pour le voyageur de commerce :

33
Voisinages
• L’espace de recherche peut être vu comme un graphe où les
sommets représentent les solutions et les arêtes connectent les
paires de solutions voisines.

• Un chemin dans l’espace de recherche est une séquence de


solutions, deux solutions consécutives étant toujours voisines.

34

Voisinages

• Optimum local: une solution aussi bonne que toutes les voisines

• Problème de minimisation :

s+ est un optimum local



f(s+) ≤ f(s), ∀s ∈ N(s+)

• Optimum global (solution optimale) s* :


f(s*) ≤ f(s), ∀s ∈ S

35


36
Algorithmes de recherche locale
• Les algorithmes de recherche locale sont conçus comme une
stratégie pour explorer l’espace de recherche.

• Départ: solution initiale obtenue par une méthode constructive

• Itération: amélioration de la solution courante par une recherche


dans son voisinage

• Arrêt: premier optimum local trouvé (il n’y a pas de solution


voisine meilleure que la solution courante)

• Heuristique subordonnée utilisée pour obtenir une solution


meilleure dans le voisinage de la solution courante.

37

Algorithmes de recherche locale


• Questions fondamentales:
– Définition du voisinage
– Stratégie de recherche dans le voisinage
– Complexité de chaque itération:
• Dépend du nombre de solutions dans le voisinage
• Dépend du calcul efficace du coût de chaque solution voisine

38

Algorithmes de recherche locale


• Amélioration itérative: à chaque itération, sélectionner dans le voisinage
une solution meilleure que la solution courante

procedure Amélioration-Itérative(s0)
s ← s0; amélioration ← .vrai.
while amélioration do
amélioration ← .faux.
for-all s’∈N(s) et amélioration =.faux. do
if f(s’) < f(s) then
s ← s’; amélioration ← .vrai.
end-if
end-for-all
end-while
return s
end Amélioration-Itérative
39

























Algorithmes de recherche locale


• Descente la plus rapide: à chaque itération, sélectionner la meilleure
solution du voisinage

procedure Descente-Rapide(s0)
s ← s0; amélioration ← .vrai.
while amélioration do
amélioration ← .faux.; fmin ← +∞
for-all s’ ∈ N(s) do
if f(s’) < fmin then
smin ← s’; fmin ← f(s’)
end-if
end-for-all
if fmin < f(s) then
s ← smin ; amélioration ← .vrai.
end-if
end-while
return s
end Descente-Rapide 40
































Algorithmes de recherche locale


• Exemple: algorithme de descente la plus rapide appliqué à un
problème d’ordonnancement

• Espace de recherche: permutations des n éléments

• Solution π = (π1,…,πi -1,πi,πi +1,…,πj,…,πn)

• Voisinage : N1(π)={(π1,…,πi+1,πi ,…,πn): i=1,…, n-1}

• Coût d’une permutation : f(π) = ∑i=1,…,n i.πi

41

Algorithmes de recherche locale


procedure RL-Perm-N1(π0)
π ← π0; amélioration ← .vrai.
while amélioration do
amélioration ← .faux.; fmin ← +∞
for i = 1 to n-1 do
π’ ← π; π’i ← πi+1; π’i+1 ← πi;
if f(π’) < fmin then
πmin ← π’ ; fmin ← f(π’)
end-if
end-for
if fmin < f(π) then
π ← πmin ; amélioration ← .vrai.
end-if
end-while
π+ ← π
return π+
end RL-Perm-N1
42



















1243 1342

1234 1324

2143 2134 3124 3142

2314 3214

2341 3241

2431 3421

4231 4321

2413 4213 4312 3412


4123 4132

1423 1432

43
21 23

20 21

22 21 23 25

23 24

26 27

27 29

29 30

25 27 29 28
26 27

23 24

44
Voyageur de commerce symétrique

6 5
7

1 8 4

14
15 9
10

11
2 3
13

45
1243 1342

1234 1324

2143 2134 3124 3142

2314 3214

2341 3241

2431 3421

4231 4321

2413 4213 4312 3412


4123 4132

1423 1432

46
51 50

48 49

49 50 52 50

47 48

46 48

50 51

49 48

50 52 50 49
48 47

48 46

47
Voyageur de commerce asymétrique

0
6 65
65 27
24 2
1 82 45 4
0
4 80 79

62 31
96 41 96 16
2 3
7 64

48
1243 1342

1234 1324

2143 2134 3124 3142

2314 3214

2341 3241

2431 3421

4231 4321

2413 4213 4312 3412


4123 4132

1423 1432

49
161 164

35 113

241 179 170 347

252 271

157 201

305 243

272 328

182 272 306 154

152 236

206 293

50
Algorithmes de recherche locale
• Différents aspects de l’espace de recherche peuvent influencer la
performance d’un algorithme de recherche locale

• Connexité: il doit y avoir un chemin entre chaque paire de


solutions de l’espace de recherche

• Nombre de solutions voisines: temps de calcul pour évaluer


chaque voisin.

• Distance entre deux solutions: nombre de sommets visités sur le


chemin le plus court entre elles.

• Diamètre: distance entre les deux solutions les plus éloignées


(diamètres réduits!)
51

Algorithmes de recherche locale


• Difficultés :
– Arrêt prématuré sur le premier optimum local
– Sensibles à la solution de départ
– Sensibles au voisinage choisi
– Sensible à la stratégie de recherche
– Nombre d’itération

• Extensions pour réduire ces difficultés et améliorer les


algorithmes : Métaheuristiques

52

Metaheuristiques
• GRASP
• Algorithmes génétiques
• Recuit simulé (simulated annealing)
• Recherche tabou
• VNS (Variable Neighborhood Search)
• Scatter search
• Colonies de fourmies

53

Greedy Randomized Adaptive Search Procedures (GRASP)


• Combinaison d’une méthode constructive avec une approche par
recherche locale, dans une procédure itérative (multi-départ) où les
itérations sont totalement indépendantes les unes des autres
(a) construction d’une solution
(b) recherche locale
• Algorithme de base:
f(s*) ← +∞
for i = 1,…,N do
Construire une solution s en utilisant un algorithme glouton randomisé
Appliquer une procédure de recherche locale à partir de s, pour obtenir
la solution s’
if f(s’) < f(s*) then s* ← s’
end-for

54



















GRASP
• Recherche locale: amélioration des solutions construites lors de la
première phase
– choix du voisinage
– structures de données efficaces pour accélérer la recherche locale
– bonnes solutions de départ permettent d’accélérer la recherche locale

• Diversification basée sur la randomisation contrôlée: différentes


solutions construites lors des différentes itérations du GRASP

55

GRASP
• Technique d’échantillonage de l’espace de recherche

56
GRASP
• Implémentation simple : algorithme glouton + recherche locale

• Algorithmes gloutons: faciles de construire et implémenter

• Peu de paramètres à régler:


– restrictivité de la liste de candidats
– nombre d’itérations

• Dépend de bonnes solutions de départ

• Désavantage : n’utilise pas de mémoire

57

GRASP
• Parallélisation: simple et directe
• N itérations, p processeurs: chaque processeur fait N/p itérations
de la méthode
• A la fin, chaque processeur informe au maître la meilleure
solution qu’il a trouvée

58

Vous aimerez peut-être aussi