• Aucun résultat trouvé

Trouver un plus court chemin pond´er´e

3.3 R´esolution par g´en´eration de colonnes

3.3.1 Trouver un plus court chemin pond´er´e

Le probl`eme auxiliaire associ´e aux chemins consiste `a trouver un plus court chemin dans le graphe pond´er´e par les variables duales βe. Etant donn´ee une solu-

tion optimale courante de RWP obtenue avec un ensemble restreint de variables, le probl`eme auxilaire associ´e aux chemins se d´efinit de la fac¸on suivante :

D´efinition 3.2 Etant donn´ee une pond´eration β : E →R+, leprobl`eme de plus

court chemin pond´er´e consiste `a trouver un chemin P ∈ P tel que : β(P ) =X

e∈P

E N S E M B L E S C O U R A N T S D E C H E M I N S / R O U N D S R E S O L U T I O N D U P R O G R A M M E M A I T R E T E S T D ’ O P T I M A L I T E E n t r é e O b t e n t i o n d e s v a r i a b l e s d u a l e s ( c o û t s r é d u i t s ) N O N O U I A j o u t d ’ u n e n o u v e l l e c o l o n n e ( v a r i a b l e c h e m i n / r o u n d ) S O L U T I O N O P T I M A L E

FIGURE 3.3 – Le processus de g´en´eration de colonnes appliqu´e au probl`eme du

routage et de l’ordonnancement dans les r´eseaux radio maill´es.

est minimum surP.

Nous cherchons `a minimiser le coˆut total d’un chemin β∗(P ) et ensuite v´erifier que ce coˆut viole la contrainte3.7correspondante dans le programme dual, c’est- `a-dire si β∗(P ) < γO(P ). Dans ce cas, cela signifie qu’un chemin am´eliorant le

coˆut de la solution optimale a ´et´e trouv´e ; celui-ci est donc ajout´e `a l’ensemble courant des variables du probl`eme.

Comme nous sommes dans le cas d’un probl`eme de plus court chemin, il peut ˆetre r´esolu efficacement. Nous d´eveloppons n´eanmoins deux algorithmes : le pre- mier est une formulation lin´eaire utilisant un flot, et le deuxi`eme est une adapta- tion de l’algorithme de Dijsktra afin de g´en´erer en une seule it´eration un plus court chemin depuis chaque routeur vers un point d’acc`es.

3.3.1.1 Formulation lin´eaire

La premi`ere approche utilise la formulation classique en sommet/arc du probl`eme du multiflot. Chaque source v ∈ Vrdans G envoie 1 unit´e de trafic vers

les points d’acc`es Vg, i.e. d(v) = 1. Le but est de trouver un plus court chemin

entre chaque routeur source et un point d’acc`es. Comme le point d’acc`es desti- nation n’est pas connu `a l’avance, nous introduisons une variable binaire k(r, g) pour chaque routeur r ∈ Vret g ∈ Vg, qui indique si la passerelle g rec¸oit l’unit´e

de flot envoy´ee par r ou non. Nous devons tout de mˆeme sp´ecifier la contrainte que seule une passerelle peut recevoir l’unit´e de flot. Rappelons que la variable f (r, e) d´efinit la quantit´e de flot envoy´ee par le routeur r passant sur le lien e, la formulation du probl`eme auxiliaire est la suivante :

minX r∈Vr X e∈E βef (r, e) X e∈Γ+(v) f (r, e) − X e∈Γ−(v) f (r, e) =    1 if v = r −k(r, v) if v ∈ Vg 0 if v ∈ Vr\ {r} , ∀r ∈ Vr X g∈Vg k(r, g) = 1, ∀r ∈ Vr k(r, g), f (r, e) ∈ {0, 1}, ∀g ∈ Vg, r ∈ Vr, e ∈ E

Dans le cas de notre probl`eme, nous avons remarqu´e que l’ensemble des va- riables duales βestrictement positives ´etait toujours de taille restreinte. Nous de-

vons donc ´eviter que ce programme ne g´en`ere des chemins avec des circuits, car il est en effet possible d’ajouter des arcs gratuits, i.e. de poids βenul, dans la so-

lutions optimale. Pour cela, nous ajoutons une constante ε tr`es petite au poids de chaque lien. La valeur de ε doit n´eanmoins ˆetre choisie prudemment, car il ne faut en aucun cas cr´eer un meilleur chemin de poids P

e∈P (βe+ ε) que les chemins

gratuitsde poidsP

e∈P ε.

Par cons´equent, en choisissant ε = mine∈Eβe

2|V | sur les liens de poids βe > 0,

nous nous assurons queP

e∈P ε < βe, ∀e ∈ P .

Cette formulation du probl`eme auxiliaire associ´e aux chemins peut en fait ˆetre r´esolue en relˆachant les variables f (r, e) et k(r, g). Si la solution trouv´ee est un chemin unique pour une source donn´ee, alors le flot sur ce chemin sera entier et

de valeur 1, donnant ainsi le mˆeme r´esultat que dans le cas entier. Si toutefois la r´esolution du programme relˆach´e nous donne plusieurs chemins `a partir d’une mˆeme source, alors nous prouvons dans le lemme suivant que tous les chemins ont le mˆeme poids fractionnaire.

Lemme 3.1 Soient Ps un ensemble de chemins de source s, et une fonction f :

Ps → R+telle quef (P ) = P e∈P f (s, e) et f (e) = P P 3ef (P ). Si f∗ = arg min f X e∈E (βe+ ε)f (e),

alors∀P ∈ Pstel quef∗(P ) > 0,

P = arg min

P ∈Ps

X

e∈P

βe.

Preuve : Supposons qu’il existe deux chemins P1, P2 ∈ Ps, tels que f∗(P1) >

0, f∗(P2) > 0 et Pe∈P1βe > Pe∈P2βe. Nous avons donc Pe∈P1(βe+ ε) >

P

e∈P2(βe+ ε), puisque ε > 0.

Consid´erons maintenant un nouveau flot r´ealisable dans le r´eseau d´efini de la mani`ere suivante : f0 =    f∗ ∀P 6= P1, P2 0 sur P1 f∗(P1) + f∗(P2) sur P2

Alors en calculant la valeur de ce nouveau flot, nous obtenons : X e∈E (βe+ ε)f0(e) = X e /∈P1,P2 (βe+ ε)f∗(e) +(f∗(P1) + f∗(P2)) X e∈P2 (βe+ ε) < X e /∈P1,P2 (βe+ ε)f∗(e) +f∗(P1) X e∈P1 (βe+ ε) +f∗(P2) X e∈P2 (βe+ ε) <X e∈E (βe+ ε)f∗(e)

Nous arrivons donc `a une contradiction puisque par d´efinition : f∗ = arg minfP

e∈E(βe+ ε)f (e).

3.3.1.2 Algorithme de Dijkstra

Une autre approche pour r´esoudre le probl`eme auxiliaire associ´e aux chemins serait d’utiliser l’algorithme de Dijkstra [Chv83] ou un algorithme de plus courts chemins entre toutes paires de sommets du graphe [CLR01]. Propos´e par E. Dijks- tra en 1959, l’algorithme du mˆeme nom permet de calculer efficacement les plus courts chemins orient´es d’un nœud donn´e vers tous les autres nœuds du graphe. Il s’agit de construire progressivement, `a partir du graphe pond´er´e initial, un sous- graphe dans lequel sont class´es les diff´erents sommets par ordre croissant de leur distance minimale au sommet de d´epart. La distance correspond `a la somme des poids des arcs emprunt´es.

Notre but ici est de trouver, pour chaque routeur du r´eseau, un plus court che- min vers une passerelle de Vg. Comme l’algorithme de Dijkstra classique calcule

les plus courts chemins d’un nœud vers tous les autres dans un graphe de n nœuds, il serait dans notre cas n´ecessaire de le faire tourner pour chacun des sommets de Vr, calculant par la mˆeme occasion des chemins entre deux routeurs qui ne nous

int´eressent pas. Afin d’acc´el´erer la r´esolution et optimiser le calcul, nous mo- difions les param`etres d’entr´ee du probl`eme afin d’appliquer en une seule fois l’algorithme de Dijkstra et obtenir une complexit´e en O(m + n log(n)).

g E g b ’ ( g , u ) = 0 E b ’ ( u , v ) = b ( v , u ) V r V g

FIGURE 3.4 – Graphe G0 modifi´e de G en ajoutant un sommet virtuel g corres-

pondant au nœud source de l’algorithme de Dijkstra.

est consid´er´e dans notre cas orient´e sym´etrique. Grˆace `a cette derni`ere propri´et´e, nous transformons G en un nouveau graphe G0 = (V0 = V ∪ {g}, E0 = E ∪ Eg)

pr´esent´e dans la Figure3.4. Dans ce nouveau graphe, g repr´esente un nœud virtuel reli´e `a tous les sommets de Vg par un ensemble d’arcs orient´es vers Vg : Eg =

{(g, u), ∀u ∈ Vg}. Chacun des liens de Eg a par d´efinition un poids nul dans G0,

i.e. βe0 = 0, ∀e ∈ Eg. Les arcs de E dans G0 ont pour poids la valeur de la variable

duale de l’arc oppos´e dans G, i.e. β(u,v)0 = β(v,u).

Nous appliquons donc l’algorithme de Dijkstra sur G0 pond´er´e par β0 afin de calculer les plus courts chemins pond´er´es depuis le sommet g vers tous les autres dans le graphe. Les plus courts chemins de Vr vers Vg pond´er´es par β dans G

sont donc obtenus apr`es une unique it´eration de l’algorithme ainsi d´efini. Plus pr´ecis´ement, nous obtenons des chemins depuis g vers v, ∀v ∈ Vr, qui mini-

misentP

e0∈E0∩Pβe00. Ces chemins correspondent `a des chemins entre v et un point

d’acc`es de Vg qui minimisent

P

e∈E∩Pβe(puisque le lien entre le point d’acc`es et

g est de poids nul). De plus, aucun chemin inutile ne sera calcul´e, ce qui permet d’acc´el´erer au mieux la r´esolution de notre probl`eme.