• Aucun résultat trouvé

3.2 Une premi` ere m´ ethode approch´ ee

3.2.4 L’algorithme

Nous d´ecrivons, dans cette partie, les ´etapes principales de l’algorithme. L’id´ee de cette approche consiste `a partir d’une solution r´ealisable du KSP et de tenter de l’am´eliorer en appliquant une recherche compl´ementaire. Il s’agit (i) de construire une solution partielle r´ealisable et (ii) de la compl´eter par la suite en appliquant la proc´edure GH d´ecrite dans la section 3.2.3. Nous allons donc d´efinir le voisinage d’une solution puis d´ecrire le processus de recherche permettant de g´en´erer au fˆur et `a mesure une ou des solutions de meilleure qualit´e.

A) Description des phases principales de l’algorithme

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. Par ailleurs, nous pouvons remarquer qu’`a chaque ensemble d’´el´ements critiques correspond un ensemble de solutions r´ealisables. Dans notre ´etude, au lieu de travailler directement sur une solution r´ealisable, nous avons pr´ef´er´e travailler sur l’ensemble des ´el´ements critiques repr´esentant cette solu- tion.

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.

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.3) de la classe Ji. Par la suite,

la solution est compl´et´ee (en reconsid´erant tous ou certains ´el´ements des diff´erentes classes) par l’application de la proc´edure GH (cf. Figure 3.3 : pour la i-`eme classe, les ´el´ements libres, repr´esent´es par le symbole ∗, sont cette fois-ci fix´ees `a “z´ero” ou `a “un”). Nous pouvons voir que l’application de la proc´edure GH permet aussi de changer la position des autres ´el´ements critiques.

Element de la classe Ji −→ 1 . . . rJi− 1 rJi . . . nJi

sous solution r´ealisable −→ 1 . . . 1 0 ∗ ∗ ∗ 0 . . . 0

Fig. 3.3 – Repr´esentation d’une solution partielle r´ealisable du KSP pour la classe Ji.

Le symbole ∗ repr´esente les ´el´ements libres non encore fix´es pour une classe donn´ee.

Phase 2.

La premi`ere phase est r´eit´er´ee sur une profondeur donn´ee ∆ pour chaque classe Ji (cf. Figure 3.3 : il suffit de remplacer la position de l’´el´ement critique rJi − 1 par

rJi−∆). 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.

La premi`ere 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 (changement de profondeur 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.

Dans un premier temps, nous pouvons consid´erer que le choix du d´eplacement n’est pas al´eatoire, puisque souvent les solutions optimales du probl`eme KP sont localis´ees aux fronti`eres de l’´el´ement critique (le core du sac-`a-dos) (voir Horowitz et Sahni [26] et Pisinger [45]). Nous avons donc adapt´e ce principe au KSP tout en consid´erant, cette fois-ci, la g´en´eralisation sur un ensemble d’´el´ements critiques.

Dans un deuxi`eme temps, nous pouvons remarquer que le d´eplacement d’un ´el´ement critique et l’application de la proc´edure GH permettent de construire une nouvelle solution r´ealisable. 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 prenant compte du nouvel ´el´ement critique rJi− ∆) sont fix´es `a “un”.

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 param`etre profondeur ∆i, pour i = 1, . . . , m. Afin

de traiter toutes les classes et pour ne pas avoir un d´ebordement `a gauche, on pose ∆i = min{∆, ∆i}.

Entr´ee : Une instance du KSP et une profondeur ∆; Sortie : Une solution approch´ee de valeur MeilSol ; Poser Sol ←− GH(), M eilSol ←− Sol et Iter ←− 0; Initialiser la liste tabou not´ee T abou Liste ;

R´ep´eter

Poser Sol ←− Trouve Meil Sol Voisinage(Sol, ∆); Mettre `a Jour Tabou(Sol, T abou Liste) ;

Poser M eilSol ←− maxnM eilSol, Solo; Incr´ementer(Iter) ;

Jusqu’`a Iter > M axIter; Sortir avec M eilSol ;

Fig. 3.4 – La premi`ere version de l’algorithme : utilisation d’une profondeur.

B) Introduction d’une m´emoire

Nous venons de voir que l’application d’un mouvement sur un ´el´ement critique permet de g´en´erer une nouvelle solution pour le KSP, 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 d’une position (`a une it´eration) vers la gauche. Par ailleurs, l’utilisation de la proc´edure GH peut aussi induire des mouvements des autres ´

el´ements critiques vers les r´egions critiques de droites.

La r´ep´etition de ce processus de construction peut, dans certains cas, g´en´erer la mˆeme configuration `a des it´erations diff´erentes. Dans ce cas, on peut remarquer que l’inter- diction de certains mouvements sur les ´el´ements critiques peut esp´erer la g´en´eration d’un certain nombre de configurations diff´erentes. Dans notre ´etude, cette interdiction est illustr´ee par l’introduction d’une m´emoire, dite liste tabou, interdisant le retour en arri`ere d’un ´el´ement critique fix´e.

Plusieurs repr´esentations de la liste tabou peuvent ˆetre consid´er´ees. Dans notre ´

etude nous avons consid´er´e que la m´emoire peut ˆetre repr´esent´ee par un tableau de listes chaˆın´ees. Chaque liste chaˆın´ee repr´esente une file, o`u chaque ´el´ement de la file

est caract´eris´e par un couple repr´esentant le mouvement (les positions de d´eplacement) interdit. Cette repr´esentation permet de traiter s´epar´ement les diff´erentes classes, ce qui permet aussi d’´eviter le parcours de tous les ´el´ements du tableau.

De la mˆeme fa¸con, nous avons limit´e l’interdiction de chaque mouvement tabou permettant au processus de recherche l’exploration d’autres solutions voisines. Dans note ´etude, nous avons consid´er´e que le nombre de mouvements tabou est limit´e `a une certaine taille (d´efinie exp´erimentalement).

Par ailleurs, nous avons introduit un crit`ere d’aspiration qui consiste `a accepter une solution voisine mˆeme si cette derni`ere est obtenue par l’application d’un mouvement tabou (interdit). En effet, nous avons appliqu´e ce principe lorsque la qualit´e de la so- lution g´en´er´ee est meilleure que la meilleure ´evaluation trouv´e jusqu’`a pr´esent par le processus de recherche.

Un r´esum´e de la premi`ere version de l’algorithme est donn´e par la figure 3.4. La premi`ere ´etape de l’algorithme consiste `a construire la premi`ere solution r´ealisable Sol et d’initialiser la liste tabou `a vide ainsi que la sauvegarde de la meilleure solution en cours, not´ee M eilSol. La deuxi`eme ´etape de l’algorithme est repr´esent´ee par la boucle R´ep´eter qui est compos´ee par : (i) lancer le processus de recherche `a partir d’une solution Sol, (ii) effectuer une mise `a jour de la liste tabou et (iii) garder la meilleure solution en cours. Ce proc´ed´e est r´eit´er´e un nombre maximum de fois (not´e M axIter). Notons que le crit`ere d’aspiration est appliqu´e lors de l’appel de la proc´edure Mettre `a Jour Tabou(Sol, T abou Liste).

Complexit´e de la m´ethode approch´ee

L’algorithme a une complexit´e en O(mn). D’une part, `a chaque ´etape de la boucle R´ep´eter, la proc´edure Trouve Meil Sol Voisinage(Sol, ∆) prend ∆×O(mn) o`u ∆ est une constante repr´esentant le param`etre profondeur. Par cons´equent, pour un nombre maximum d’it´erations M axIter, on a M axIter × ∆ × O(mn) op´erations. D’autre part, la proc´edure Trouve Meil Sol Voisinage(Sol, ∆) poss`ede la mˆeme complexit´e. Donc l’algorithme est en O(mn).