Beruflich Dokumente
Kultur Dokumente
• Certains problèmes sont trop complexes pour être résolus • Solution initiale
exactement. • Voisinages
• Cependant, il sont importants en pratiques. • Recherche locale
• On utilise alors une méthode heuristique. • Diversification
Méthode heustique
Une méthode heuristique est une procédure visant à résoudre un problème
d’optimisation complexe en utilisant une approche intuitive dans laquelle la
structure du problème peu être interprétée et exploitée intelligemment pour
obtenir une solution raisonnable.
• Exemple
0
0 1 2 3 4 5 6 7 8 9 10
0
0 1 2 3 4 5 6 7 8 9 10
Recherche locale : exemple Recherche locale : exemple
x0 = (6, 0) - Voisinage : N - O - S - E • L’algorithme s’arrête lorsque qu’un minimum local est trouvé.
• Un minimum local est un point qui est meilleur que tous ses
voisins.
5
• Le comportement de la méthode dépend beaucoup de la
4 structure du voisinage et du point de départ.
• Le voisinage doit être suffisamment grand pour avoir plus de
3 chances de trouver un meilleur point, et suffisamment petit
pour éviter une énumération trop longue.
2 • Exemple d’un voisinage trop petit : un seul voisin à l’ouest.
k 1 2 3 4 5 6 7 8 9 10 11 12 w T xc uT x c uT x ∗
• Un voisinage de taille k consiste à modifier k variables. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
• Il y a autant de voisins que de combinaisons de k objets parmi 1 1 0 0 0 0 0 0 0 0 0 0 0 84 80 0
n
n!
k!(n − k)!
• Pour k = 1, il y a n voisins.
• Pour k = n, il y a 1 voisin.
k 1 2 3 4 5 6 7 8 9 10 11 12 w T xc uT x c uT x ∗ k 1 2 3 4 5 6 7 8 9 10 11 12 w T xc uT x c uT x ∗
1 1 0 0 0 0 0 0 0 0 0 0 0 84 80 2 1 1 0 0 0 0 0 0 0 0 0 0 111 111
0 0 0 0 0 0 0 0 0 0 0 0 0 0 80 0 1 0 0 0 0 0 0 0 0 0 0 27 31 111
2 1 1 0 0 0 0 0 0 0 0 0 0 111 111 80 1 0 0 0 0 0 0 0 0 0 0 0 84 80 111
3 1 1 1 0 0 0 0 0 0 0 0 0 158 159 111
Le problème du sac à dos : recherche locale Le problème du sac à dos : recherche locale
k 1 2 3 4 5 6 7 8 9 10 11 12 w T xc uT x c uT x ∗ k 1 2 3 4 5 6 7 8 9 10 11 12 w T xc uT x c uT x ∗
3 1 1 1 0 0 0 0 0 0 0 0 0 158 159 4 1 1 1 1 0 0 0 0 0 0 0 0 180 176
0 1 1 0 0 0 0 0 0 0 0 0 74 79 159 0 1 1 1 0 0 0 0 0 0 0 0 96 96 176
1 0 1 0 0 0 0 0 0 0 0 0 131 128 159 1 0 1 1 0 0 0 0 0 0 0 0 153 145 176
1 1 0 0 0 0 0 0 0 0 0 0 111 111 159 1 1 0 1 0 0 0 0 0 0 0 0 133 128 176
4 1 1 1 1 0 0 0 0 0 0 0 0 180 176 159 1 1 1 0 0 0 0 0 0 0 0 0 158 159 176
5 1 1 1 1 1 0 0 0 0 0 0 0 201 203 176
Le problème du sac à dos : recherche locale Le problème du sac à dos : recherche locale
k 1 2 3 4 5 6 7 8 9 10 11 12 w T xc uT x c uT x ∗ k 1 2 3 4 5 6 7 8 9 10 11 12 w T xc uT x c uT x ∗
5 1 1 1 1 1 0 0 0 0 0 0 0 201 203 6 1 1 1 1 1 1 0 0 0 0 0 0 297 287
0 1 1 1 1 0 0 0 0 0 0 0 117 123 203 0 1 1 1 1 1 0 0 0 0 0 0 213 207 287
1 0 1 1 1 0 0 0 0 0 0 0 174 172 203 1 0 1 1 1 1 0 0 0 0 0 0 270 256 287
1 1 0 1 1 0 0 0 0 0 0 0 154 155 203 1 1 0 1 1 1 0 0 0 0 0 0 250 239 287
1 1 1 0 1 0 0 0 0 0 0 0 179 186 203 1 1 1 0 1 1 0 0 0 0 0 0 275 270 287
1 1 1 1 0 0 0 0 0 0 0 0 180 176 203 1 1 1 1 0 1 0 0 0 0 0 0 276 260 287
6 1 1 1 1 1 1 0 0 0 0 0 0 297 287 203 1 1 1 1 1 0 0 0 0 0 0 0 201 203 287
1 1 1 1 1 1 1 0 0 0 0 0 339 321 287
1 1 1 1 1 1 0 1 0 0 0 0 343 326 287
1 1 1 1 1 1 0 0 1 0 0 0 351 333 287
1 1 1 1 1 1 0 0 0 1 0 0 350 345 287
1 1 1 1 1 1 0 0 0 0 1 0 329 310 287
1 1 1 1 1 1 0 0 0 0 0 1 375 354 287
Neighborhood
200 8
• Effectuer cela 1000 fois, quelque soit k . 7
uT x
150
• Cela permet d’avoir une complexité indépendante de k . 6
100 5
4
50 3
2
0 1
0 2 4 6 8 10 12 14 16 18 20
Iterations
• Soit n villes. 9 10
• La ville i est distante de la ville j de dij kilomètres.
• Trouver un itinéraire qui permet au voyageur de commerce de 12
visiter toutes les villes (chemin hamiltonien) et de revenir à son
11
point de départ, en effectuant la plus petite distance possible.
7 8
Démarche :
6
• Solution initiale
5
• Voisinages
• Recherche locale
• Diversification 1 2 4
3
12 villes : solution initiale 12 villes : solution initiale
1 2 4
3
9 10 9 10
12 12
11 11
7 8 7 8
6 6
5 5
1 2 4 1 2 4
3 3
12 villes : solution initiale 12 villes : solution initiale
9 10 9 10
12 12
11 11
7 8 7 8
6 6
5 5
1 2 4 1 2 4
3 3
9 10 9 10
12 12
11 11
7 8 7 8
6 6
5 5
1 2 4 1 2 4
3 3
12 villes : solution initiale 12 villes : solution initiale
9 10 9 10
12 12
11 11
7 8 7 8
6 6
5 5
1 2 4 1 2 4
3 3
9 10 9 10
12 12
11 11
7 8 7 8
6 6
5 5
1 2 4 1 2 4
3 3
12 villes : solution initiale 12 villes : solution initiale
14.5
9 10 9 10
35.7
12 12
9
9.
6.6
11 11
7
4.
7 8 7 8
9.
5
6 9.0 6
34
.7
5 5
6.8
13.8
1 2 1 2 10.9
4 9.5 4
3 3
Longueur : 165.6
Le voisinage 2-OPT consiste à échanger deux villes, et à parcourir • On essaie d’améliorer en effectuant un 2-OPT en échangeant 1
les villes intermédiaires dans l’autre sens. et 9.
Soit l’itinéraire : • Avant : 8–12–7–11–6–5–1–2–3–4–10–9–8 (longueur : 165.6)
A–B–C–D–E–F–G–H–A
• Après : 8–12–7–11–6–5–9–10–4–3–2–1–8 (longueur : 173.3)
On échange C et G pour obtenir
A–B–G–F–E–D–C–H–A. • Pas d’amélioration.
Voisinage : 2-OPT(1,9) Voisinage : 2-OPT(1,9)
14.5 14.5
9 10 9 10
35.7
12 12
9 9
9. 9.
18.4
6.6
6.6
11 11
7
7
4.
4.
7 8 7 8
9.
9.
5
5
9.0 6 9.0 6
34
34
7
31.
.7
.7
5 5
6.8
13.8 13.8
1 2 10.9 2 10.9
9.5 4 1 9.5 4
3 3
Longueur : 165.6 Longueur : 173.3
14.5
• Passer en revue chaque paire de noeud. 9 10
• Effectuer une modification 2-OPT. 35.7
• Choisir le résultat correspondant à la tournée la plus courte. 12
9
9.
6.6
11
7
4.
7 8
9.
9.0 6
34
.7
5
6.8
13.8
1 2 10.9
9.5 4
3
Longueur : 165.6
Meilleur voisin : 2-OPT(12,4) Meilleur voisin : 2-OPT(12,9)
14.5 14.5
9 10 9 10
17. 17.
9 9
35.7 26
.1
12 12
9
9.
6.6
11 11
4.
4.
5
5
7
7
7 8 7 8
9.
9.
9.0 6 9.0 6
13.7
13.7
5 5
6.8
6.8
13.8 13.8
1 2 10.9 2 10.9
9.5 4 1 9.5 4
3 3
Longueur : 155.8 Longueur : 143.0
14.5 14.5
9 10 9 10
17.
22. 9 22.
0 0
12 12
16.3
9
9.
6.6
6.6
11 11
4.
4.
5
10.4 7 8 7 8
9.0 6 9.0 6
13.7
13.7
5 5
6.8
6.8
13.8 13.8
1 2 10.9 2 10.9
9.5 4 1 9.5 4
3 3
Longueur : 139.5 Longueur : 137.5
Meilleur voisin : 2-OPT(10,9) Diversification : recuit simulé
14.5
9 10 Analogie avec la physique des matériaux
• Pour rendre un métal stable, il faut ralentir son refroidissement.
11
.0
9
9. • Ses atomes prennent alors une configuration plus solide.
.5
6.6
11
4.
5
7 8 En optimisation
• Recherche locale ≈ refroidissement.
9.0 6
• Si on descend “trop vite”, on est bloqué dans une configuration
13.7
5
sous optimale.
6.8
avec T > 0.
Concrètement, tirer un nombre aléatoire r entre 0 et 1.
Accepter y comme itéré courant si
f (y)−f (x)
e− T >r
Recuit simulé Recuit simulé
0.8
Prob(xk+1 = y)
0.6
0.4
f (y) = 3.5
f (y) = 4
0.2 f (y) = 5
f (y) = 6
0
0 1 2 3 4 5 6 7 8 9
T
14.5
9 10
320 1000
11
xc
300 900
.0
T
280 800 12
x∗ 9
9.
18.4
6.6
260 700 11
4.
5
240 600 7 8
f (x)
220 500
T
200 400 6
13.7
180 300 5
10
.7
12
.1
6.8
160 200
140 100 10.9
1 2 9.5 4
120 0
Iter. 3
Longueur : 128.8
• Les paramètres de la méthode doivent être ajustés. Comment éviter de rester bloqué à un minimum local ?
• En particulier, la réduction de la température doit être spécifiée. • Appliquer l’algorithme à partir de plusieurs points de départ.
• Soit δt une augmentation tyique de la fonction objectif. • Comment choisir les points de départ ?
• Au début, on voudrait que cette augmentation soit acceptée • Comment éviter de “tirer dans le noir” ?
avec probabilitié p0 (typiquement, p0 = 0.999) • Permettre à l’algorithme de remonter la pente : recuit simulé
• A la fin, on voudrait que cette augmentation soit acceptée • Grimper sur la montagne pour trouver une autre vallée.
avec une probabilité pf (typiquement, pf = 0.00001)
• Comment décider quand on monte et quand on descend ?
• Si on se permet de faire M mises à jour de la température,
alors pour m = 0, . . . , M , • Changer la structure du voisinage : recherche à voisinages
variables
δt • Quels voisinages choisir ?
T =− pf −p0
ln(p0 + M m)
Heuristiques : remarques