• Aucun résultat trouvé

Modification pour prendre en compte les voisinages (ng-routes)

CHAPITRE 4 MÉTHODE DE RÉSOLUTION

4.2 Résolution du sous-problème

4.2.8 Modification pour prendre en compte les voisinages (ng-routes)

Il est possible de renforcer SPPRC-2-cyc en éliminant les cycles de taille 3 ou plus. Si on élimine les cycles de taille κ ≥ 3, on obtient ainsi un SPPRC-κ-cyc. Toutefois, ceci nécessite l’utilisation de structures de données complexes et augmente considérablement la complexité selon la taille des cycles éliminés (Irnich et Villeneuve, 2004).

Afin de contourner ce problème, il est possible d’utiliser un sous-problème produisant des routes se rapprochant des chemins élémentaires en facilitant l’élimination de petits cycles ayant de grandes chances de se retrouver dans la solution optimale de la relaxation linéaire du problème maître. On appellera ce sous-problème un SPPRC avec voisinage, car on inter- dit le retour à un ensemble de clients déterminé de façon dynamique selon les clients visités par le chemin ainsi que leur voisinage. Contrairement au SPPRC-κ cycle et au ESPPRC, il est impossible de garantir l’existence de cycles de grandeur fixe (à moins de combiner le SPPRC avec voisinage avec l’élimination de 2-cycles). Contrairement à la méthode de (Irnich et Villeneuve, 2004), cette méthode évite cependant de faire augmenter considérablement le temps de calcul par rapport à un SPPRC standard.

Ce nouveau sous-problème se base sur le concept de ng-routes proposé par (Baldacci et al., 2011). Cette approche consiste d’abord à fixer un voisinage Ni de cardinalité |Ni| ≤ ∆(Ni)

pour chacun des clients i où ∆(Ni) représente une borne supérieure fixe préétablie sur la

lité du voisinage à cette borne, c.-à-d. |(Ni)| = ∆(Ni) ∀i ∈ N . Pour une route partielle

p = (o = i1, i2, ..., ik) donnée, on interdit ensuite le retour aux clients qui appartiennent à

l’ensemble Π(p) = {ir : ir ∈ ∩ks=r+1Nis, r = 1, ..., k − 1} ∪ {ik} où Ni représente le voisinage

du client i. Ainsi, Π(p) représente l’ensemble des clients précédant ik qui appartiennent au

voisinage de tous leurs clients successeurs dans cette route. Il existe plusieurs façons de dé- finir Ni, le voisinage du nœud i. Dans notre implémentation, nous adoptons la construction

suivante :

Soit :

– GSl = (N Sl, ASl) : le graphe résiduel au le nœud de branchement. où N Sl ⊆ N S et ASl⊆ AS.

– ζl

ij = cij + EFC(µj, j) où µj = minµi∈˜µ(i)l{µi+ E[ξj]} et ˜µ(i)

l représente la plus petite

demande cumulée que l’on puisse atteindre au client j si l’on passe par le client i avant dans le graphe GSl.

ζl

ij représente donc le plus petit coût de déplacement espéré entre le client i et le client

j si le client i peut être atteint à partir de i dans le le nœud de branchement. ζl

ij peut donc

être interprété comme une mesure « d’attirance » de i vers j.

Si ≺ définit une relation d’ordre sur les éléments de Si et que jk ≺ jk+1 indique que jk

vient avant jk+1, alors on obtient :

– Si = {j1, j2, ..., j|N |−1 | jk ≺ jk+1 si ζijlk 6> ζ

l

ijk+1} ⊆ N \{i} : les |N |−1 clients n’incluant

pas i triés en ordre non décroissant de ζl ij.

– Ni = {j1, ..., j∆(Ni)−1 | jk ∈ Si ∀k} ∪ {i} : les ∆(Ni) − 1 plus petits éléments de Si ainsi

que i lui-même.

Plusieurs travaux suggèrent qu’il est utile de considérer le voisinage comme les ∆(Ni)

clients les plus près. Des résultats empiriques préliminaires ont toutefois démontré qu’il était encore plus efficace de considérer les voisinages selon les clients les plus près en distance espérée que seulement selon la distance déterministe.

Étant donné p = {o = i1, i2, ..., ir, ..., ik} ⊆ N , on ne pourra revisiter ir si ce dernier

appartient à tous les voisinages de ses successeurs. De manière équivalente, on accepte de créer un cycle en revisitant le client ir seulement si ce dernier n’est pas dans au moins un des

appartenir à un plus petit nombre de voisinages qu’un nœud visité plus tôt. Par conséquent, un nœud visité plus tard a de plus grandes chances d’appartenir à l’ensemble interdit Π(p). Intuitivement, les ng-routes permettent donc de réduire le nombre de petits cycles dans les routes.

Il est important de noter que le borne produite par l’utilisation des ng-routes n’est pas né- cessairement plus élevée que celle produite par l’élimination de 2 cycles. Considérons l’exemple suivant :

N = {1, 2, 3, 4, 5} ∪ {o} : l’ensemble des clients et le dépôt p = (o, 1, 2, 1) : un chemin partiel

∆(Ni) = 3 ∀i ∈ N N1 = {1, 5, 6} N2 = {2, 5, 6} N3 = {3, 4, 5} N4 = {4, 2, 3} N5 = {5, 2, 3} Π(p0 = (o, 1, 2)) = {2} car 1 /∈ N 1∩ N2

p sera donc réalisable avec les ng-routes, mais pas avec l’élimination de 2-cycles. Nous illustrons cette relations dans les figures de la section 4.2.14. Dans la figure 4.5, nous consta- tons notamment que la valeur de la relaxation linéaire est plus élevée avec élimination de 2-cycles qu’avec uniquement l’utilisation de voisinages de taille 5 ; et ce pour la majorité des instances testées. Dans les sections de résultats, nous avons donc combiné les ng-routes à l’élimination de 2-cycles afin de garantir une solution au moins aussi bonne que celle produite par la résolution d’un SPPRC-2-cyc.

Bien que Ni puisse changer à chaque nœud de l’arbre de branchement à cause des décisions

de branchement ou des inégalités valides ajoutées, on note que tout chemin non réalisable à un nœud de branchement le sera également dans tous les nœuds de branchement fils.

On note également qu’augmenter la valeur de ∆(Ni) ∀i ∈ N n’augmente pas forcément

la valeur optimale du sous-problème. Toutefois, si on définit toujours les voisinages selon les mêmes critères et qu’on considère deux instances I1 et I2 du même problème de plus court

chemin avec NI1

i ⊆ N

I2

i , ∀i ∈ N , alors I1 sera nécessairement une relaxation de l’instance

I2 avec un plus grand voisinage. Cette relation est illustrée dans la figure 4.5 de la section

4.2.14 . On constate effectivement que les courbes correspondant aux ng-routes avec de plus grands voisinages sont toujours égale ou au-dessus des courbes avec plus petit voisinage.

Par ailleurs, on est assuré d’augmenter la valeur de la solution du sous-problème si on augmente suffisamment la valeur de ∆(Ni) ∀i par rapport à |N | = n. Par exemple, si on fixe

∆(Ni) = |N | ∀i, alors on est certain d’obtenir une borne inférieure identique à celle obtenue

par le sous-problème élémentaire. Dans ce cas, chaque client sera forcément dans le voisinage de tous les clients. Chaque chemin partiel ne pourra donc pas retourner aux clients qu’il a déjà visités, car ces derniers sont dans le voisinage de tous ses successeurs.

Des résultats empiriques (voir 4.2.14) pour cette formulation du VRPSD ainsi que les travaux de (Baldacci et al., 2011) démontrent que fixer ∆(Ni) = 10, ∀i ∈ N , permet de tirer

un bon compromis entre la rapidité de résolution du sous-problème et la valeur de la borne inférieure produite à un nœud de l’arbre de branchement.

4.2.9 Modification pour prendre en compte les contraintes d’élémentarité