1.5 Le pricing ou la g´en´eration de colonnes
Quand un programme lin´eaire admet un grand nombre de variables, il est tr`es difficile de le r´esoudre explicitement. Dans ce cas, on r´esout le programme lin´eaire sur un sous-ensemble de variables et on v´erifie ensuite si l’ajout d’une variable qui n’appartient pas au programme lin´eaire courant peut am´eliorer la solution op-timale. En effet pour un programme lin´eaire du type
min
fc
tx : Ax
b;x
0
g, une variable dont le coˆut r´eduit est n´egatif, peut am´eliorer la valeur de la solution optimale. Rappelons ici, que le coˆut r´eduitr
j d’une variable j hors base est ´egal `ac
j ,y
ta
:j o`ua
:j 2IR
m est la colonne associ´ee `a la variable j,c
j est le coefficient dans la fonction ´economique correspondant `a une solution de base du programme lin´eaire ety
2IR
m la solution du dual. Le calcul du coˆut r´eduit d’une variable est appel´e “pricing”.Comme dans la m´ethode des coupes poly´edrales, il est inutile d’avoir la liste explicite des variables pour l’algorithme de g´en´eration de colonnes. Il suffit d’avoir une m´ethode permettant de g´en´erer les variables du probl`eme initial qui ont un coˆut r´eduit n´egatif. Ce probl`eme porte le nom du probl`eme du “pricing”:
Le probl`eme de “pricing”:
Etant donn´ee une classe de variables d’un probl`eme lin´eaire et la valeur des variables duales de la solution de base. Il faut soit prouver que toutes les variables de cette classe ont un coˆut r´eduit positif, soit trouver une variable hors base dont le coˆut r´eduit est n´egatif.
L’algorithme de g´en´eration de colonnes est d´ecrit dans Algorithme 3. Il peut ˆetre int´egr´e dans la m´ethode du “Branch and Cut” pour pouvoir r´esoudre des pro-bl`emes d’optimisation difficiles avec un grand nombre de variables et de contraintes. La m´ethode obtenue porte le nom du ” Branch and Cut and Price ”. C’est l’algo-rithme qu’on va utiliser pour r´esoudre le probl`eme du voyageur de commerce. Mais pour ne pas alourdir notre texte, nous appellerons d´esormais cette m´ethode, l’algorithme du “Branch and Cut”.
Algorithme 3 L’algorithme de g´en´eration de colonnes
/* On veut r´esoudre le probl`eme d’optimisation combinatoire
min
fc
tx : Ax
b;x
2IR
ngavecA
2IR
mn etb
2IR
m */ continue-le-pricing = vrai;S´electionner un petit sous-ensemble J des variablesf
1::m
g; Tant que continue-le-pricing faireCalculer la solution de base
x
J du programme lin´eairec
tJx
J=min
fc
tJx
J:
A
Jx
Jb;x
J0;x
J 2IR
jjjget d´eterminer les valeurs des variables duales
y
;Pour i qui n’est pas dans J faire
Si
r
i=c
i,y
ta
:i0
alorscontinue-le-pricing = faux;
Sinon
Ajouter la colonne j avec le
r
j< 0
`a J; continue-le-pricing = vrai;Sortir de la boucle Pour;
Fin Si Fin Pour
Fin Tant que
17
Chapitre 2
Approche poly´edrale du probl`eme
du voyageur de commerce
Ce chapitre est consacr´e `a une approche poly´edrale de l’´etude du pro-bl`eme du voyageur de commerce. Nous commencerons par une mod´eli-sation du probl`eme sous la forme d’un programme lin´eaire en nombres entiers. Nous d´efinirons ensuite le polytope du probl`eme du voyageur de commerce et nous donnerons ses principales propri´et´es. Nous d´ecrirons enfin quelques facettes connues du polytope du probl`eme du voyageur de commerce.
2.1 Le probl`eme du voyageur de commerce
Avant de donner la formulation du probl`eme du voyageur de commerce en programme lin´eaire en nombres entiers, rappelons quelques d´efinitions, qui nous serviront tout au long de cette th`ese.
Un graphe
G = (V;E)
est d´efini par l’ensemble de ses sommetsV
, et l’en-semble de ses arˆetesE
. On noteK
n= (V
n;E
n)
le graphe non orient´e complet sur n sommets.Soit x une fonction coˆut de
E
!IR
jEjqui associe `a chaque arˆete
e
2E
un coˆutx
e. Pour toutF
E
n, on note parx(F)
la sommeP e2F
x
e.Pour tout
S
V
n, on note par(S) =
fuv
2E
n:u;v
2S
gl’ensemble des arˆetes deE
n dont les deux extr´emit´es sont dansS
, et par(S) =
fuv
2E
n: u
2S;v
2V
n,S
gl’ensemble des arˆetes poss´edant exactement une seule extr´emit´e dansS
. Par abus d’´ecriture on notera(
fv
g) =(v)
, pour toutv
2V
n.Pour tout
S
V
n etT
V
nnS
, on note par(S : T) = (T : S)
l’ensemble des arˆetes dont une extr´emit´e est dansS
et l’autre dansT
.Pour un graphe
G = (V;E)
, on noteG(S)
le sous graphe induit parS
. Et `a un vecteurx
2IR
jEjon associe un graphe
G
x= (V;E;x)
dont l’ensemble des arˆetes contient toutes les arˆetes de E qui ont une composante non nulle dansx
. Le poids d’une arˆetee
deG
x est ´egal `ax
e.Soient
K
n= (V
n;E
n)
le graphe non orient´e complet sur n sommets, etc
2IR
jEnjune fonction qui associe `a chaque arˆete de
K
n une longueurc
e. Le pro-bl`eme de voyageur de commerce consiste `a trouver un cycle hamiltonienH
tel que
c(H
) = min
fc(H) : H
2 Hng, o`u Hn repr´esente l’ensemble des cycles hamiltoniens deK
n.Un cycle Hamiltonien est un sous graphe
H = (V
n;E)
deK
n satisfaisant: (a) chaque sommet deH
est de degr´e 2. (2.1.2.1)(b)
H
est connexe. (2.1.2.2)On associe `a tout
H
2Hn un vecteur d’incidence uniquex
2f0;1
g jEnj d´efini par:x
He=
1
sie
2E
0
sinonLe probl`eme du voyageur de commerce s’´ecrit sous la forme du programme lin´eaire en nombres entiers suivant:
minimiser
c
Tx
sous
x((v)) = 2
pour toutv
2V
n (2.1.2.3)x((S))
2
pour toutS
V
n;S
6=V
n;S
6=
(2.1.2.4)0
x
e1
pour toute
2E
n (2.1.2.5)x
e 2f0;1
g pour toute
2E
n (2.1.2.6)L’´equation (2.1.2.3) signifie que chaque sommet est exactement incident `a 2 arˆetes, elle peut ˆetre ´ecrite sous la forme suivante:
A
nx =
2 (2.1.2.7)o`u
A
n est la matrice d’incidence deK
n et 2 est un vecteur deIR
n dont les compo-santes sont ´egales `a 2. Ces in´equations portent le nom d’´equations de degr´e.2.2 Le polytope du probl`eme du voyageur de commerce 19