75 | | On transfère la première cellule Ci de la liste ordonnée GAIN_L vers R, |
76 | | on met à jour les gains des cellules adjacentes à Ci, ainsi que l'ordre des |
77 | | listes GAIN_L et GAIN_R. La cellule Ci transférée dans R n'est pas rangée |
| 76 | Un mouvement élémentaire consiste à échanger deux cellules i et j : |
| 77 | * une cellule i appartenant à l'ensemble R passe dans l'ensemble L |
| 78 | * une cellule j appartenant à l'ensemble L passe dans l'ensemble R |
| 79 | |
| 80 | La variation de la fonction de coût résultant du mouvement des cellules i et j |
| 81 | peut être calculée de la façon suivante: |
| 82 | {{{ |
| 83 | DFC(i<->j) = G(i) + G(j) - 2Aij |
| 84 | }}} |
| 85 | |
| 86 | L'algorithme d'optimisation proposé est "glouton", car il n'y a pas de retour en arrière: |
| 87 | Lorsqu'un mouvement a été accepté, les deux cellules déplacées i et j ne sont plus autorisées à bouger: |
| 88 | |
| 89 | On prend la cellule i appartenant à R possédant le gain G(i) maximum, et la cellule j appartenant à L possédant le gain G(j) maximum. |
| 90 | On calcule la variation de la fonction de coût associé à l'échange i <-> j, et on accepte le mouvement |
| 91 | tant que celui-ci n'entraîne une augmentation de la fonction de coût. |
| 92 | |
| 93 | Accepter un mouvement consiste à effectuer les actions suivantes: |
| 94 | * On transfère la première cellule i de la liste ordonnée GAIN_R vers L, on met à jour les gains des cellules adjacentes à i, ainsi que l'ordre des listes GAIN_L et GAIN_R. La cellule i transférée dans L n'est pas rangée |
| 95 | dans GAIN_L, car elle n'est plus autorisée à bouger. |
| 96 | * On transfère la première cellule j de la liste ordonnée GAIN_L vers R, on met à jour les gains des cellules adjacentes à j, ainsi que l'ordre des listes GAIN_L et GAIN_R. La cellule j transférée dans R n'est pas rangée |