• Aucun résultat trouvé

Comme nous le détaillons dans notre présentation de la décomposition de Dantzig-Wolfe (cf. section 2.4.1), la génération de colonnes est une méthode fréquemment utilisée pour résoudre des programmes linéaires avec un grand nombre de variables (colonnes). Elle est basée sur la connaissance implicite de l’ensembleX des variables. À chaque itération, un programme maître restreint (PMR) est résolu puis la résolution d’un sous-problème (SP) permet de mettre à jour le (PMR) ou de passer à l’itération suivante. Le (PMR) consiste en une restriction deX à un sous-ensemble réalisable de variables S ⊂ X . Après résolution à l’optimum du (PMR), il est nécessaire de savoir s’il existe ou non une variable deX \ S

3.2. Génération de colonnes 75

permettant d’améliorer la valeur de la fonction objectif. Ceci est effectué à travers la procédure de pricing (SP) qui consiste à utiliser les informations duales du (PMR) pour calculer le coût réduit le plus violé d’une variable deX \ S. Si le coût réduit est améliorant, la variable associée est ajoutée au (PMR) pour les itérations suivantes. Sinon, c’est la preuve qu’il n’existe aucune variable améliorante. La génération de colonnes est arrêtée et la solution optimale du (PMR) est également optimale pour le problème.

3.2.1 Relaxation linéaire

Pour appliquer la méthode du Branch and Price sur le modèle (KMFP3), il convient, dans un premier temps, de relâcher les contraintes d’intégrité. Cependant, l’application de la génération de colonnes n’est pas immédiate. Les contraintes de couplage (2.23.b) impose la génération d’une nouvelle contrainte à chaque génération d’un variable correspondant à un nouveau couple(h, p). De nouvelles variables duales apparaissent et modifient la structure du sous-problème. Néanmoins, la propriété suivante va permettre de simplifier la relaxation linéaire et de résoudre ce problème.

Propriété 3.1. Il existe au moins une solution optimale de la relaxation linéaire de (KMFP3) pour laquelle les contraintes de couplage (2.23.b) sont saturées.

Démonstration. Soit(x, y) une solution optimale. Soit yh

p = xh∗p /up siup > 0 et 0 sinon, pour tout p de P et pour tout h = 1 . . . H. Alors les contraintes de couplage (2.23.b) implique que yh

p 6 yh∗ p , pour toutp de P et pour tout h = 1 . . . H. Donc P

p∈Pyh p 6 P

p∈Pyh∗

p 6 1 pour tout h = 1 . . . H (contraintes (2.23.c)). Alors(x, y) est une solution réalisable et fournit la même valeur que (x, y). Donc,(x, y) est également une solution optimale.

Ainsi, les contraintes de couplage peuvent être éliminées et les variables de décisiony peuvent être remplacées avec les variables de flot x. Ceci mène à une version simplifiée de la relaxation linéaire, incluant les contraintes de variable-ordering :

(RL3)                                            max H X h=1 X p∈P xhp s.c. H X h=1 X p∈P δpaxhp 6ua ∀a ∈ A (a) X p∈P xh p up 61 ∀h = 1 . . . H (b) X p∈P xh+1pX p∈P xhp 60 ∀h = 1 . . . H − 1 (c) xhp >0 ∀h = 1 . . . H ∀p ∈ P (d) (3.8)

3.2.2 Sous-problème

Après résolution du programme maître restreint, les informations duales sont envoyées au sous-problème. Notons respectivement πa > 0, λh > 0 et νh > 0 les variables duales associées aux con-traintes primales(3.8.a), (3.8.b) et (3.8.c) de la relaxation linéaire (RL3). Alors, le sous-problème (SP) consiste à trouver une variable maximisant le coût réduit. Il peut être décomposé enH sous-problèmes indépendants (SPh). Chacun se réduit à un problème de chemin optimal [MPRD99] pour un numéro de cheminh. Le coût réduit est donné par

ch p = 1 −X a∈A δapπaλ h up − (νh−1− νh) (3.9)

Le calcul du chemin élémentaire de coût maximal ne se réduit pas à un simple problème de plus court chemin puisque le coût réduit implique une combinaison de deux variables duales,π et λ (le coût associé aux contraintes de variable-ordering ne dépend que du numéroh et non des arcs du chemin). Ainsi, pour un numéro de cheminh donné, le sous-problème correspondant s’établit comme suit :

(SPh): min p∈P w =X a∈A δpaπa+λ h up − 1 + (νh−1− νh) (3.10)

Il est intéressant de remarquer qu’en l’absence d’une des deux variables duales,π ou λ, le problème correspond à un problème simple et classique de chemin optimal :

• Si la fonction à minimiser estP

a∈Aδpaπa, il s’agit du problème de plus court chemin dont les lon-gueurs sur les arcs sont données par les variables dualesπa. De plus, les longueurs étant positives, l’algorithme de Dijkstra peut s’appliquer.

• Si la fonction à minimiser estπuhp, il s’agit du problème de chemin de capacité maximale. Il consiste à maximiser l’arc de plus faible capacité emprunté par le chemin. Comme le problème de plus court chemin, il peut être résolution par un algorithme à label (labelling algorithm).

Plus précisément, pour tout problème de chemin optimal, Martins et al. [MPRD99] définissent le principe d’optimalité faible comme le fait qu’il existe un chemin optimal composé de sous-chemins optimaux. Puis, ils montrent que ce principe est une condition nécessaire et suffisante pour l’application de n’importe quel algorithme à label (par exemple, les algorithmes classiques de label setting / label correcting pour le problème de plus court chemin).

Malheureusement, notre sous-problème (SP) ne vérifie pas ce principe d’optimalité faible, comme illustré sur la figure 3.4. Pour chaque arca, le premier nombre réfère à sa variable duale πatandis que le second réfère à sa capacitéua. Dans cet exemple, la variableλ vaut 4. Ainsi le plus court chemin de s à v utilise l’arc a2 puisque :

• Pour l’arc a11+uλ

1 = 1 +41 = 5. • Pour l’arc a22+uλ2 = 2 +42 = 4.

3.2. Génération de colonnes 77

En revanche, le plus court chemin des à t passe par l’arc a1puisque : • Par l’arc a11+ π3+min {uλ

1,u3} = 1 + 1 +41 = 6. • Par l’arc a22+ π3+min {uλ

2,u3} = 2 + 1 +41 = 7.

a

2

[2; 2]

a

1

[1; 1]

a

3

[1; 1]

s v t

FIG. 3.4 – Échec du principe d’optimalité faible

Ainsi, aucun algorithme à label ne peut être utilisé pour calculer la solution optimale [MPRD99] et un algorithme spécifique doit être conçu.

Le principe de l’algorithme vient du constat suivant : étant donné la fonction objectif à minimiser dans (SPh), un chemin est « meilleur » qu’un autre s’il a soit une plus petite longueur P

a∈Aδpaπa, soit une plus grande capacité up. Ainsi, en partant d’un plus court chemin (pour les longueurs π), un « meilleur » chemin pour la fonction objectif a donc forcément une capacité strictement plus grande. Notons u la capacité du plus court chemin. Il est possible de calculer un nouveau plus court chemin parmi les chemins de capacité strictement supérieure àu. Pour cela, il suffit de supprimer du graphe les arcs de capacité inférieure ou égale àu. Puis, en itérant ce raisonnement, on calcule des plus courts chemins sur un graphe contenant de moins en moins d’arcs puisque la capacité « limite »u augmente. L’algorithme s’arrête alors lorsqu’il n’y a plus de chemin entres et t. Le calcul du chemin optimal p pour (SPh) s’établit comme suit :

Algorithme 3.1 Calcul du chemin optimal pour (SPh) SoitA = A

Soitp = ∅, u= 0, w = ∞

Répéter

calculer un plus court cheminp de s à t sur A

Sip = ∅ alors arrêter else

Soitu la capacité du chemin p et w son coût

Siw < walors p ← p u← u w ← w Fin Si A ← A \ {a ∈ A | ua6u} Fin Si Jusqu’àA = ∅ retourner(p, u, w)

Propriété 3.2. L’algorithme 3.1 s’exécute en un temps polynomial.

Démonstration. Il n’y a pas d’arc de coût négatif puisqueπa>0, ∀a ∈ A. Ainsi, il n’existe aucun cycle de coût négatif et n’importe quel algorithme polynomial de plus court chemin peut être utilisé. Ensuite, à chaque itération de l’algorithme, au moins un arc est supprimé de l’ensembleA. Ainsi, il y a au plus m itérations, c’est-à-dire m calculs de plus court chemin.

La résolution de la relaxation linéaire par génération de colonne s’arrête alors dès quew 60. Si la solution est fractionnaire, il convient de passer à la phase de branchement de l’algorithme de Branch and Price.