• Aucun résultat trouvé

Dans cette partie, nous proposons une deuxi`eme version de l’algorithme. Nous avons vu dans la section 3.2.4 comment utiliser une profondeur simple en partant d’une posi- tion donn´ee vers la gauche tout en effectuant des d´eplacements r´ep´et´es. Nous proposons cette fois-ci l’utilisation de deux profondeurs qui agissent de mani`ere diff´erente. En ef- fet, cette partie portera sur la description de la nouvelle version de l’algorithme. Dans la section 3.3.1, nous d´ecrivons les diff´erentes profondeurs utilis´ees et nous pr´esentons la notion du voisinage. Dans la section 3.3.2 nous d´ecrivons le processus de recherche appliqu´e et les ´etapes principales de l’algorithme.

3.3.1

Introduction d’une deuxi`eme profondeur

Dans la section 3.2.1, nous avons repr´esent´e les ´el´ements critiques d’une solution du KSP sous forme d’un ensemble fini de m ´el´ements. Ces diff´erents ´el´ements corres- pondent aux diff´erentes classes du probl`eme.

En effet, l’id´ee de l’approche consiste, dans un premier temps, `a g´en´erer un certain nombre de solutions (voisines) qui correspondent `a l’ensemble des ´el´ements critiques en cours, puis de consid´erer un voisinage de l’ensemble des ´el´ements critiques, dans un deuxi`eme temps. Ce dernier ensemble correspondra `a la meilleure ´evaluation du voisinage.

Cette version peut ˆetre consid´er´ee comme une g´en´eralisation de la premi`ere version. Elle consiste `a mieux exploiter le voisinage de la solution et de voir comment d´efinir une meilleure orientation de la recherche. Dans ce qui suit, nous introduisons une profondeur `a deux sens :

1. un parcours en profondeur `a gauche, not´e ∆g permettant de limiter le voisinage ;

2. un parcours en profondeur `a droite, not´e ∆d permettant de simuler la diversifi-

cation.

L’utilisation des deux profondeurs s’applique comme suit :

(i) nous r´ealisons d’abord le parcours `a gauche pour optimiser la localisation et pour limiter la taille du “meilleur voisinage”,

Nous consid´erons donc deux r´egions critiques. Initialement, nous fixons la r´egion cri- tique de gauche pour chaque classe Ji (pour limiter la taille de l’exploration) et sur

laquelle nous appliquons une recherche tabou. Pour chaque parcours consid´er´e, nous imposons `a cette classe un parcours dit `a droite qui consiste `a diversifier le voisinage en explorant la r´egion critique de droite et tout en essayant de localiser des solutions non encore visit´ees.

En partant d’une solution r´ealisable (repr´esentant un ensemble d’´el´ements critiques donn´e par (rJ1, . . . , rJm)), l’approche proc`ede en trois phases :

Phase 1.

Pour chaque classe Ji, i = 1, . . . , m, d´eplacer l’´el´ement critique rJi d’une unit´e

vers la gauche. Dans ce cas, il s’agit de forcer l’´el´ement rJi − 1 `a “z´ero” permettant

`

a cet ´el´ement de devenir l’´el´ement critique (cf. Figure 3.5) de la classe Ji. A partir

de cet ´el´ement critique, nous consid`erons des d´eplacements `a droite de rJi+ 1 jusqu’`a

rJi+ ∆d. Par la suite, la solution est compl´et´ee (en reconsid´erant certains ´el´ements des

diff´erentes classes) par l’application de la proc´edure GH (cf. Figure 3.5 : pour la i-`eme classe, les ´el´ements libres, repr´esent´es par le symbole ∗, sont cette fois-ci fix´es `a “z´ero” ou `a “un”). Notons que l’application de la proc´edure GH permet aussi de changer la position des autres ´el´ements critiques.

Element de Ji −→ 1 2 3 . . . rJi− ∆g ←− rJi −→ rJi+ ∆d . . . nJi

sous solution −→ 1 1 1 . . . 0 ∗ ∗ ∗ 0 0 0

Fig. 3.5 – Repr´esentation d’une solution partielle de KSP utilisant deux profondeurs pour une classe Ji.

Phase 2.

La premi`ere phase est r´eit´er´ee sur un couple de profondeurs donn´e par (∆g, ∆d)

pour chaque classe Ji (cf. Figure 3.5 : il suffit de remplacer la position de l’´el´ement

critique rJi− 1 par rJi− ∆g). Pour chaque d´eplacement effectu´e `a gauche de l’´el´ement

critique, nous explorons toute la r´egion de droite en effectuant des d´eplacements suc- cessifs `a droite de rJi+ 1 jusqu’`a rJi+ ∆d. A chaque d´eplacement `a droite, la solution

est compl´et´ee par l’application de la proc´edure GH. Il s’agit d’une g´en´eralisation de la notion de d´eplacement d’un ´el´ement critique permettant de g´en´erer un voisinage plus important pour la solution de d´epart (ou pour l’ensemble des ´el´ements critiques en cours).

Phase 3.

Soit Sol la structure de la meilleure solution g´en´er´ee par l’application des deux phases pr´ec´edentes. R´ep´eter, un certain nombre de fois, ce processus de recherche sur la meilleure solution Sol du voisinage. Nous rappelons que la meilleure solution rete- nue pour le KSP (ou pour r´ep´eter la recherche) est la solution r´ealisant l’´evaluation minimum sur l’ensemble des classes.

3.3.2

Le principe de l’algorithme

La deuxi`eme version de l’algorithme s’appuie principalement sur le processus d´ecrit par les trois phases pr´ec´edentes. On peut remarquer que la phase 1 peut ˆetre consid´er´ee comme l’´etape principale de l’algorithme, puisque les deux autres phases permettent juste d’effectuer un nouveau d´eplacement `a gauche et des d´eplacements successifs `a droite (changement de profondeurs sur l’une des classes) puis relancer le processus de construction. Dans ce qui suit, nous allons donc expliquer les diff´erentes ´etapes utilis´ees par la phase 1.

Nous pouvons remarquer que pour chaque d´eplacement `a gauche, les d´eplacements successifs `a droite d’un ´el´ement critique et l’application de la proc´edure GH permettent de construire une nouvelle solution r´ealisable pour chacun de ces d´eplacements. Cette derni`ere sera consid´er´ee comme une solution du voisinage de l’ensemble des ´el´ements critiques en cours. En effet, la proc´edure GH agit de la mani`ere suivante :

a) On suppose que les ´el´ements (de toutes les classes) se positionnant sur la partie gauche de chaque ´el´ement critique (en tenant compte du nouvel ´el´ement critique rJi− ∆g) sont fix´es `a “un” ainsi que les ´el´ements se situant `a gauche de l’´el´ement

critique apr`es chaque d´eplacement `a droite de rJi+ 1 jusqu’`a rJi + ∆d.

b) Appliquer la proc´edure GH sur le reste des ´el´ements consid´er´es comme “libres”. Les ´etapes (a) et (b) permettent de g´en´erer un nouvel ensemble d’´el´ements critiques, ce qui permet aussi de donner une nouvelle solution r´ealisable pour le KSP. Notons

qu’`a chaque classe i est associ´e un couple de param`etres profondeurs (∆gi, ∆di) pour

i = 1, . . . , m. Afin de traiter toutes les classes et pour ne pas provoquer un d´ebordement `

a gauche et/ou `a droite, on pose ∆gi = min{∆g, ∆gi} et chaque valeur de ∆di est au

moins ´egale au double de ∆gi.

La version modifi´ee remplace la proc´edure Trouve Meil Sol Voisinage(Sol, ∆) par la proc´edure utilisant deux profondeurs Trouve Meil Sol Voisinage(Sol, ∆g, ∆d).

Nous venons de voir que l’application d’un mouvement `a deux profondeurs sur un ´

el´ement critique permet de g´en´erer une nouvelle solution pour le KSP. Celle-ci est repr´esent´ee par un ensemble d’´el´ements critiques. L’application de ce mouvement est concr´etis´ee par un d´eplacement de l’´el´ement critique d’une classe aussi bien dans la r´egion critique de gauche que de droite (`a une it´eration). L’utilisation de la proc´edure GH peut aussi induire des mouvements des ´el´ements critiques des autres classes. La r´eit´eration de ce processus de construction peut, comme dans la version `a profondeur simple, g´en´erer la mˆeme configuration pour la solution `a des it´erations ult´erieures. Dans ce cas, interdire certains mouvements sur les ´el´ements critiques peut encourager la g´en´eration d’un certain nombre de configurations diff´erentes.

D’une mani`ere similaire `a la premi`ere version, nous illustrons cette interdiction par l’introduction d’une m´emoire sous forme d’une liste tabou interdisant le retour en arri`ere d’un ´el´ement critique fix´e.

Complexit´e de la deuxi`eme m´ethode approch´ee

L’algorithme a une complexit´e en O(mn). Notons simplement qu’`a chaque ´etape de la boucle R´ep´eter, la proc´edure Trouve Meil Sol Voisinage(Sol, ∆d, ∆g) prend

∆d× ∆g × O(mn) et pour un maximum nombre d’it´erations elle est en ∆d× ∆g ×

M axIter × O(mn), o`u ∆d × ∆g × M axIter est une constante. Par cons´equent, la

deuxi`eme version de l’algorithme est aussi en O(mn).