Vous êtes sur la page 1sur 24

Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Recherche Opérationnelle:
Optimisation de réseaux

Pr. El maliki, abdelmaliki@gmail.com

Ecole Nationale de Commerce et de Gestion Casablanca


Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

1 Problème du chemin le plus court

2 Problème de flot maximum

3 Problème de flot à coût minimum


Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Graphes

Les graphes sont un outil puissant de modélisation : Problèmes de


transport, de production, d’approvisionnement, de gestion des
ressources, de planification financière,...

Graphe
Un graphe un ensemble de sommets ou noeuds reliés par des lignes
appelées arcs. un graphe G prend la forme G = (N; A) où N est un
ensemble de sommets et A ⊆ N ∪ N un ensemble d’arcs.

réseau
Le terme réseau est un terme générique désignant un graphe dont
les sommets ou les arcs possèdent des attributs : coûts, capacités,
longueurs, temps, etc.
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Graphes

Il y a principalement 5 classes de problèmes relatifs aux graphes :


Le problème du plus court chemin,
le problème de flot maximal,
Le problème de flot maximal à coût minimal,
Le problème de planification des projets : PERT, MPM,
GANTT,
Le problème d’arbre de poids minimal
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Définitions

Graphe orienté : Les liens entre les noeuds du graphe ne peuvent


être parcourus que dans un sens précis.
Graphe non orienté : il n’y a pas d’orientation pour l’arc.
Chemins : Un chemin est une suite de sommets de G tel que deux
sommets consécutifs quelconques sont reliés par un arc de G .
Circuits : Un circuit est un chemin qui commence et finit au
même sommet.

Deux sommets i et j de N sont dits adjacents s’il y au moins un


arc qui les relient.
A chaque arc a = (i, j) de A est associé un nombre réel da appelé
longueur ou poids de l’arc a. Si a = (i, j), la longueur de l’arc est
notée dij . On définit la longueur ou le poids d’un chemin comme
étant la somme algébrique des longueurs des arcs qui le
constituent.
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Problème du plus court chemin : Algorithmes de determination du plus court chemin

Les algorithmes de résolution diffèrent suivant les propriétés du


graphe :
coûts non négatifs,
graphe et coûts quelconques,
graphe sans circuit,
et suivant le problème considéré :
recherche du plus court chemin d’un sommet à un autre,
recherche du plus court chemin d’un sommet à tous les autres,
recherche du plus court chemin entre tous les couples de
sommets.
Pour la résolution de ces différentes variantes du problème du plus
court chemin, les algorithmes sont à peu près identiques et sont
basés sur le principe d’optimalité de Bellman :Tout chemin
optimal est composé de sous chemins optimaux..
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Algorithme de Dijkstra (1959)

L’algorithme de Dijkstra permet de trouver le plus court chemin


d’un sommet (noté 1) à tous les autres sommets du graphe, dans
le cas où toutes les longueurs sont positives.
On affecte à chaque sommet une étiquette. Les sommets sont
partitionnés en deux sous ensembles S et T :
S est l’ensemble des sommets ayant une étiquette permanente,
T est l’ensemble des sommets ayant une étiquette temporaire.
Une étiquette permanente représente la longueur du plus court
chemin entre 1 et le sommet considéré et une étiquette temporaire
représente une borne supérieure de cette longueur.
Pour un graphe à n sommets, l’algorithme de Dijkstra
procède en (n − 1) itérations : à chaque itération, un sommet est
transféré de l’ensemble T vers l’ensemble S, et les étiquettes
temporaires sont mises à jour.
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Algorithme de Dijkstra (1959)

Algorithme de Dijkstra (1959)


1 Étape 1 : Initialisation :
v1 = 0
∀j 6= 1, vj = d1j si (1, j) ∈ A ; sinon vj = ∞
S = {1}, T = {2, · · · , n}
2 Étape 2 : Fixation d’une étiquette
Trouver k ∈ T , tel que vk = minj∈T (vj )
Faire : T = T \ {k} ; S = S ∪ {k}
Si T = ∅ alors FIN
3 Étape 3 : Mise à jour des étiquettes temporaires
Faire vj = min(vj , vk + dkj )
Aller à l’étape 2

Remarque : Dans le cas des graphes ayant des longueurs de signes


quelconques, on applique Algorithme de Ford- Bellman (1956).
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Exemple (algorithme de Dijkstra)


Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Exemple

Le graphe ci-dessous représente le réseau routier d’une région qui


prend en compte le sens de la circulation, chaque arc représente
une route à sens unique dont le poids est la distance en kilomètre
entre deux sommets. Quel est l’itinéraire le plus court qui relie E à
S?
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Exemple

Pour une simulation de l’algorithme, voir


http : //yallouz.arie.free.fr /terminale cours/graphes/dijkstra.php
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Applications

Problème de flot : acheminement d’une quantité de marchandises


(divisibles : on peut acheminer nos marchandises par des routes
différentes) de la source vers la destination.
Applications
il existe plusieures situations réelles pouvant être modélisées
comme des problèmes de flots dans les réseaux :
logistique : transport de marchandises de différents points
distributeurs vers différents points consommateurs, à travers
un réseaux urbain, ferroviaire, maritime, aérien ou mixte,
distribution d’eau (canalisations)
transport de pétrole : réseau de pipelines
énergie : réseaux électrique, centrales −→ clients
information : réseau téléphonique, réseau d’entreprises,
internet.
problèmes de gestion de stocks,...
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Définitions

Données : Soit G = (N, A) un graphe orienté. Soit (s, t) ∈ N × N


un couple particulier de sommets ; on appelle s la source, et t le
puits. Pour tout (i, j) ∈ A, on note uij la capacité de l’arc, tel que
uij ≥ 0.

Flot : Un flot de source s et de puits t dans le réseau est un


vecteur d’entiers F = (xij ) . Pour chaque arc (i, j) ∈ A, il faut
associer une valeur xij appellée flux sur l’arc (i, j), tel que
0X≤ xij ≤ uij , ∀(i,
Xj) ∈ A (contrainte de capacité),
xij = xji , ∀i ∈ N\{s, t}
j|(i,j)∈A j|(j,i)∈A
(contraintes de conservation de fot)
La valeur du flot est :
X X
v (F) = xsj = xjt
j|(s,j)∈A j|(j,t)∈A
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Problème du flot maximal

Un flot admissible est un flux qui vérifie les contraintes (mais non
nécessairement optimal).
Remarque : Quand deux arcs en sens inverse relient deux sommets,
on peut toujours annuler la fonction flot sur l’un des deux.
Arc saturé : Un arc est dit saturé si sa capacité résiduelle est nulle :
Xij = uij .

Problème : comment trouver un flot qui a la valeur maximale ?


Le problème de flot maximal consiste à transporter la quantité
maximale possible d’une origine (source, s) à une destination
(puits, t) donnés, sans dépasser les capacités des arcs uij .
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Flot maximum et programmation linéaire

Idée de base :
Un flot F peut être amélioré si l’on trouve un chemin de s à t
qui soit non bloqué par rapport à F.
Envoyer un flot le long de ce chemin augmente la divergence
de s sans violer les contraintes de capacité.
Question : si on ne trouve pas un tel chemin, sommes-nous à
l’optimum ?

Flot maximum et programmation linéaire


X X
max v (F) = xsj = xjt
j/((s,j)∈A j/((j,t)∈A
 X X
 xij = xji , ∀i ∈ N\{s, t}
s.c j/((i,j)∈A j/((j,i)∈A
0 ≤ xij ≤ uij

Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Algorithme de Ford-Fulkerson

1 Initialisation :
pour chaque (i, j) ∈ A faire
f (i, j) ← 0
uf (i, j) ← u(i, j)
fin pour
2 Calcul de la capacité résiduelle du chemin améliorant :
tant que il existe un chemin améliorant C dans le graphe
résiduel faire
uf ← min uf (i, j)
(i,j)∈C
mise à jour du flot et de la capicité résiduelle le long des arcs
de C
pour tout arc (i, j) ∈ C du chemin améliorant C faire
f (i, j) ← f (i, j) + uf ; f (j, i) ← f (j, i) − uf
ur (i, j) ← u(i, j) − uf ; uf (j, i) ← f (j, i) + uf
fin pour
fin tant
retourne(f)
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Exemple 1 :flot maximum


Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Exemple 2 :flot maximum

Supposons qu’en période de grande affluence, nous disposions


d’une flotte d’autobus pour faire visiter les différents postes
d’observation du parc. La réglementation limite le nombre
d’autobus pouvant circuler sur chaque tronçon de route. Comment
faire circuler les autobus dans le parc de façon à maximiser le
nombre total d’autobus allant de l’origine (O) à la destination (T) ?
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Données

Soit G = (N; A) un graphe orienté.


A chaque arc (i, j), on associe une capacité uij > 0 et un coût
par unité de flot cij
Il y a au moins une source et au moins un puits
Tous les autres sont des sommets de transfert
On cherche à minimiser le coût total encouru par le transport
du flot des sources (sommets d’offre) vers les puits (sommets
de demande)
des offres ou demandes bi ∀i ∈ N (offre⇔ bi > 0, demande
⇔ bi < 0).
Il s’agit d’un problème semblable à celui du flot maximum mais on
suppose en plus qu’un coût par unité de flot associé à l’utilisation
d’un lien (arc)
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Modèle de flot à coût minimum

Formulons maintenant le problème de flot à coût minimum


consistant à déterminer comment acheminer dans les arcs du
réseau une quantité de flot d’une source à une destination de sorte
à minimiser le coût total.
xij = flot sur l’arc (i, j)
X
min cij xij
((i,j)∈A
 X X
 xij − xji = bi , ∀i ∈ N
s.c j∈Γ+ (i) j∈Γ− (i)
0 ≤ xij ≤ uij , ∀(i, j) ∈ A

bi = 0 (transfert), = offre (source), = - demande (puits)


N = ensemble des sommets ; A = ensemble des arcs
Γ+ (i) = ensemble des arcs sortant du sommet i
Γ− (i) = ensemble des arcs entrant au sommet i
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Modèle de flot à coût minimum

Définition (Flot compatible)


Un flot compatible avec l’offre b = (bi ) est un vecteur d’entiers
xX
= (xij ) associés
X aux arcs tel que
xij − xji = bi , ∀i ∈ N
j∈Γ+ (i) j∈Γ− (i)

But
X : Trouver un flot f compatible avec l’offre b de coût total
cij xij
(i,j)∈A
Applications :
Problème d’acheminement,
Problème de navette aérienne,...
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Cas particuliers

1 Probleme du plus court chemin


Une source et un puits
Plusieurs sommets de transfert
On pose bi = +1 (source), −1 (puits)
Aucune capacité uij = ∞
2 Probleme du flot maximum
bi = +F (source), −F (puits), ou F > somme des capacites
Ajout d’un arc entre s et t : cst = M et ust = F
Puisque cij = 0 sur tous les autres arcs, une solution optimale
consiste a faire passer le maximum de flot entre s et t sans
passer par l’arc (s, t)

Plus court chemin : coûts, mais pas de capacités


Flot maximal : capacités, mais pas de coûts
Transbordement : coûts et capacités
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Exemple

Considérons deux usines (U1 et U2), un centre de distribution


(CD), et deux entrepôts (E1, E2). Chaque usine manufacture un
certain nombre d’unités d’un même produit (offre). Chaque
entrepôt requiert un certain nombre d’unités de ce même produit
(demande). Sur chaque lien (arc) du réseau, il y a un coût de
transport par unité de produit (coût unitaire). De plus, sur certains
arcs, il y a une capactité sur le nombre d’unités transportées. Le
réseau considéré est représenté dans la Figure suivante. L’objectif
est de minimiser le coût de transport total. Comme d’ordinaire,
pour formuler le modèle, identifions en premier lieu les variables
d’intérêt.
Problème du chemin le plus court Problème de flot maximum Problème de flot à coût minimum

Exemple

Nous désignerons par xij le nombre d’unités du produit transportées


sur l’arc (i ; j) (i.e. entre les sommets i et j). La fonction objectif
(en chifrant le montant total en centaines de dollars), contraintes
de conservation, contraintes de capacités et positivités :

Vous aimerez peut-être aussi