Vous êtes sur la page 1sur 56

Université IBN Tofail

Faculté des Sciences


Département Informatique

Recherche Opérationnelle :
Programmation liniéaire
Chapitre 1

Author: Filière:
Pr. Khalil IBRAHIMI Licence SMI, S5

September 30, 2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire

1 Introduction
Définition La recherche opérationnelle est la discipline des mathématiques
appliquées qui traite des questions d’utilisation optimale des ressources dans
l’industrie, les réseaux, la logistique et les transports. L’objectif du cours
est de donner aux étudiants qui souhaitent occuper un poste d’ingénieur
technique les bases de la recherche operationnelle. La méthodologie de la
recherche opérationnelle (RO) suit le schéma suivant:

• Formulation du problème à résoudre: Les objectifs, les contraintes et


les variables de décision;

• Modélisation du problème (modèle mathématique);

• Solution au problème c’est de trouver la valeur optimale de l’objectif;

• Implémentation de la solution.

L’étudiant au final doit proposer une meilleure utilisation des ressources (util-
isation optimale) face à un problème de recherhce opérationnelle.
Histoire

• La recherche opérationnelle est née pendant la Seconde Guerre mon-


diale des efforts conjugués d’éminents mathématiciens (dont von Neu-
mann, Dantzig, Blackett) à qui il avait été demandé de fournir des
techniques d’optimisation des ressources militaires;

• En 1940 par le Prix Nobel de physique Patrick Blackett qui résolut un


problème d’implantation optimale de radars de surveillance;

• A partir des années 50, la recherche opérationnelle fait son entrée dans
les entreprises;

• Au milieu des années 70, à cause d’un excès d’enthousiasme au départ et


à l’inadéquation des moyens informatiques à l’application des méthodes
de la RO, la discipline s’essoulle;

• A partir du milieu des années 90, on assiste à un retour en force la RO,


les outils informatiques étant maintenant à la hauteur des méthodes
proposées par la recherche opérationnelle (exemple IBM CPLEX Opti-
mizer);

Pr. Khalil IBRAHIMI 1 a.u: 2021-2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire

Exemples des domaine d’applications de la RO:

• Production : maximiser le profit selon la disponibilité de la main


d‘oeuvre, demande du marché, capacité de production, prix de revient
du matériau brut;

• Réseaux de transports : minimiser la distance totale parcourue selon


les quantités de matériaux à transporter, capacité des transporteurs;

• Réseaux de communication, systèmes d’information: conception, con-


figuration;

• Télécomuncations : optimisation de déploillement de stations de base


du réseau mobile;

• Finance;

• Economie;

• Santé;

Exemple du problème de production :


Une usine fabrique 2 produits P1 et P2 nécessitant des ressources d’équipement,
de main d’oeuvre et de matières premières disponibles en quantité limitée.
Les deux produits P1 et P2 rapportent respectivement à la vente 6 dh et 4
dh par unité.

P 1 P 2 Disponibilité(contraintes)
Équipement 3 9 81
0
M aind oeuvre 4 5 55
M atière première 2 1 20
P rof it unitaire 6 4 z = 10

Type de question: Quelles quantités de produits P1 et P2 doit produire


l’usine pour maximiser le bénéfice total venant de la vente des 2 produits?
Problème de transport
Deux usines à Casa et à Tanger fabriquent des produits pour une distribution
aux clients qui se trouvent à Casa, Rabat, Fès selon leurs demandent dj . La

Pr. Khalil IBRAHIMI 2 a.u: 2021-2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire

capacité de production est Ci . Le coût cij de distribution est en fonction de la


quantité transportée entre la source et la destination. La capacité maximale
de production.
U sine Casa T anger
P roduction 60 50
La demande
clients Casa Rabat F es
Demande 20 50 30
Le prix unitaire
P rix/unité Casa Rabat F es
Casa 0 100 300
T anger 500 200 400
Quel est le plan optimal de distribution à coût minimal. La réponse est de
suivre les méthodes qui vont être exposées dans les sections suivantes.

2 Programmation Linéaire
2.1 Rappel sur le calcul matriciel
Matrice
 Une matrice  estun tableau
 rectangualire. Exemple
a11 a12 a13 1 2 3
A= =
a21 a22 a23 4 5 6
A = (aij ) est une matrice de taille 2*3; i=1,2; j=1,2,3. Une matrice carrée
de dimension n*n. Le transposé d’une matrice est obtenu en échangeant les
lignes 
et les colonnes.

1 4
AT = 2 5
3 6
L’inverse d’une matrice A de taille nxn est noté A−1 telque A ∗ A−1 = I. Une
matrice A inversible est dite non sigulière. Si la matrice n’a pas d’inverse
A−1 est dite singulière (det(A) =0) ou non inversible.
Vecteur (colonne) Un vecteur est un tableau à une dimension. Exemple
 
1
x = 2
3

Pr. Khalil IBRAHIMI 3 a.u: 2021-2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire


Vecteur ligne est le transposé de x teq: xT = 1 2 3
Le vecteur unité ei le vecteur dont le iéme élément est égale à 1 et tous les
autres égaux à 0. Vecteurs linéairement dépendants Les vecteurs x1 , x2 , ..., xn
est linéairement dépendants s’il existe des cofficients c1 , c2 , ..., cn non nuls tels
que c1 x1 + c2 x2 + ... + cn xn = 0. Sinon ils sont dits linéarement indépendants
T T
(cas de colonnes d’une matrice I). Exemple. x1 = 1 2 3 , x2 = 2 6 4 , x3 =
T
4 11 9 , sont liniéarement dépendants car,2x1 + 3x2 − 2x3 = 0 Rang
d’une matrice Le rang d’une matrice est un entier compris entre 0 et min(m,
n). Le nombre de colonnes ou de lignes de A linéairement indépendants.

2.2 Formes d’un programme linéaire (PL)


Définition : On a des problèmes qui peuvent être formulés en tant que max-
imisation où minimisation d’un objectif, en fonction des ressources limitées
et de contraintes. Si on arrive à expimer l’objectif sous forme d’une fonction
linéaire en fonction des contraintes sous la forme d’égalités ou d’inégalités
sur ces variables, alors on a un problème de programmation linéaire (PL).
Fonction linéaire : On définit une fonction linéaire f pour tout variable xi
et nombre réel ai par: f (x1 , x2 , ..., xn ) = a1 x1 + a2 x2 + ... + an xn = nj=1 aj xj
P
Si b est un nombre réel et f est une fonction linéaire, alors l’équation f (x1 , x2 , ..., xn ) =
b est une égalité linéaire et les inégalités linéaires: f (x1 , x2 , ..., xn ) ≥ b et
f (x1 , x2 , ..., xn ) ≤ b.
Définition : Un problème de programmation linéaire consiste à min-
imiser ou maximiser une fonction liniéaire soumise à des contraintes liniéaires
(fini).

Type du programme : Si l’objectif du problème est de minimiser, le


programme linéaire porte le nom de programme linéaire de minimisation.
Si l’objectif du problème est de maximiser, le programme linéaire porte le
nom de programme linéaire de maximisation.
La formulation et la résolution du programme linéaire nécessite de mettre le
problème sous forme algébrique, canonique ou standard.
Forme canonique : Nous considérons n nombres réels c1 , c2 , ..., cn ;
m nombres réels b1 , b2 , ..., bm ; et m*n nombres réels aij pour j = 1, ..., n
et i = 1, ..., m. On cherche à P trouver n nombres réels x1 , x2 , ..., xn qui
maximisent la fonction objectif nj=1 cj xj
Sous les contraintes de positivités xj ≥ 0 pour j = 1, ..., n

Pr. Khalil IBRAHIMI 4 a.u: 2021-2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire

Pn
Et contraintes d’inégalité inférieur ou égale à j=1 aij xj ≤ bi pour i =
1, ..., m
Forme canonique matriciel tuple (A, b, c) :
Soit le programme suivant:
maximiser
cT x
T est le transposé.
Sous les contraintes
Ax ≤ b et x ≥ 0.

Avec A = (aij ) est une matrice m x n, b = (bi ) est un vecteur de dimension


m et c = (cj ) est un vecteur de dimension n et x = (xj ) est un vecteur de
dimension n.

2.3 Solution réalisable


Définition : Une solution réalisable est toute configuration des variables x̄
qui satisfait à toutes les contraintes.
Une configuration de x̄ qui ne satisfait au moins une contrainte est dite
irréalisable.
Si un programme n’a aucune soltution réalisable, il est irréalisable; sinon, il
est réalisable.
Si le programme a des solutions réalisables sans avoir la valeur de l’objectif
optimale finie, alors il est non borné.
Valeur de l’objectif:
Nous dirons qu’une solution x̄ a la valeur objectif cT x̄.
Une solution x̄ dont la valeur objectif est suppérieure à toutes les solutions
réalisables est une solution optimale. Sa valeur est appelée valeur de l’objectif
optimale.

2.4 Interprétation géométrique


Si
K = {x|Ax ≤ b, x ≥ 0}
où A est une matrice carrée d’ordre m. Alors K est l’intersection de l’orthan
non négatif de
Rn+ = {x|x ≥ 0}

Pr. Khalil IBRAHIMI 5 a.u: 2021-2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire

et de m demi-espaces (Ax ≤ b), c’est un polyédre de R


Les points de K satisfaisant les contraintes avec le signe d’égalité (Ax = b)
sont situés sur des faces de K. Leur intersection définit un sommet de K
(point extrême)
La maximisation de la fonction objectif sur K, permet de trouver un x∗
dans K et une valeur z ∗ tels que l’hperplan cT x coupe le domaine K en un
point extrême du polyèdre. L’algorithme du Simplex qu’on va présenter
ultérieurement consistera à se déplacer entre les points extrêmes jusqu’à
lorsqu’on trouve un optimum.

2.5 Exemple d’une solution géométrique


La méthode est connue sous le nome de la (méthode de droite de paralléle.
Maximiser
z = x1 + x2
Sous les contraintes
4x1 − x2 ≤ 8
2x1 + x2 ≤ 10
5x1 − 2x2 ≥ −2
x1 , x2 ≥ 0
L’ensemble d’intersections est le polyèdre OABCD. Première méthode est le
recensement des sommets. Calculer la valeur de l’objectif à chaque sommet,
puis de choisir la plus grande qui est l’omptimale.
Deuxième méthode est la méthodes des droites parallèles à la droite qui passe
par l’origine (bénéfice est nulle, x1 + x2 = 0). La solution optimale du PL est
tout point d’intersection du polyèdre avec la droite x1 + x2 = 8 en sommet
B (2, 6).

Pr. Khalil IBRAHIMI 6 a.u: 2021-2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire

La région de réalisation est bornée, il existe une valeur maximale de z dans


laquelle l’interesection de la droite z = x1 + x2 et la région est non vide.

2.6 Propriétés fondamentale de la programmation linéaire


Théorème. Soit A une matrice et b un vecteur.
1.Le système Ax = b a une solution non négative si et seulement si yb ≥ 0
pour tout vecteur y satisfaisant yA ≥ 0.
2.Le système Ax ≤ b a une solution x si et seuelement si yb ≥ 0 pour tout
vecteur y ≥ 0 satisfaisant yA = 0.
Propriété 1 Soit K = {x|Ax ≤ b, x ≥ 0}. Si K est non vide, alors K a
au moins un point extrême.
Propriété 2: Si une fonction linéaire atteint son maximum (ou son min-
imum) sur K, alors cet optimum a lieu en un point extrême de K.
Exemple de problème de production Une usine fabrique 2 produits
P1 et P2 nécessitant des ressources d’équipement, de main d’oeuvre et de
matières premières disponibles en quantité limitée. Les deux produits P1 et
P2 rapportent respectivement à la vente 6 dh et 4 dh par unité.

Pr. Khalil IBRAHIMI 7 a.u: 2021-2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire

P 1 P 2 Disponibilité(contraintes)
Équipement 3 9 81
0
M aind oeuvre 4 5 55
M atière première 2 1 20

Q1. Quelles quantités de produits P1 et P2 doit produire l’usine pour max-


imiser le bénéfice total venant de la vente des 2 produits? (méthode des
droites parallèles)

Q2. Utiliser la méthode du recensement des sommets du polygone pour


maximiser le bénéfice total.
Modélisation

• Choix des variables: Deux variables positives :


- quantité de P1 produite : x1 ≥ 0
- quantité de P2 produite : x2 ≥ 0

• Objectif = Une fonction économique

M ax z = 6x1 + 4x2

• Contraintes = des inégalités ( trois demi-espaces)

3x1 + 9x2 ≤ 81
4x1 + 5x2 ≤ 55
2x1 + x2 ≤ 20

• Appel de la méthode des droites parallèle pour déterminer la production


optimale.

2.7 Difficulté de généralisation de la mèthode géométrique


1. Il est difficile de généraliser la representation géométrique dans un espace
plus de 3 dimensions.
2. Un autre problème lorsque le nombre contraintes augmente même pour
deux variables.

Pr. Khalil IBRAHIMI 8 a.u: 2021-2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire

Théoréme Si l’ensemble des contraintes d’un programme liniéaire forme


un polyèdre non vide, alors il existe une solution optimale qui est le sommet
de ce polyèdre.
La solution optimale du PL est alors trouvée en recensant tous les points du
polyèdre, puis calculer la valeur de la fonction objectif et de choisir la plus
grande valeur qui représente la solution optimale.
Une nouvelle méthode du Simplexe géométrique permet à partir d’une solu-
tion initiale (point de départ du polyèdre), lors de toute itération de passer
d’un sommet à un sommet voisin en lequel la valeur de la fonction objectif
est meilleure. L’algoritme s’arrête lorsqu’on ne trouve aucun sommet voisin
dont la valeur de la fonction objectif est meilleure.

2.8 Interprétation économique d’un programme liniéaire


Soit un P.L suivant:
maximiser n
X
z= cj x j
j=1

Sous les contraintes de positivités (xj ≥ 0)


n
X
aij xj ≤ bi pour i = 1, ..., m
j=1

Cette formulation signifie qu’une entreprise exerce un ensemble d’activités j.


Chaqu’une consomme une ressource aij de bi par unité et peut être exercée
avec une quantité xj . Si enfin le cj est le profit unitaire obtenu de l’activité j.
Alors déterminer les quantités xj de manière que: la valeur de z soit maximal
en respectant les contraintes de la disponbilité des ressources.

2.9 Conversion de programmes linéaires sous forme


canonique
Il existe des programmes linéaires qui ne peuvent pas être sous forme canon-
ique. Par exemple,

• La fonction objectif peut être une minimization au lieu de maximiza-


tion;

Pr. Khalil IBRAHIMI 9 a.u: 2021-2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire

• Il peut avoir des variables sans la contrainte de positivité;

• Il peut avoir des contraintes d’égalités aulieu d’inégalité;

• Il peut avoir des contraintes d’inégalités de signe différent (suppérieur


aulieu d’inférieur où égale).

Constat Lorsqu’on convertit un programme linéaire L en un programme


linéaire L’, on cherche que la solution optimale de L’ donne une solution
optimale au programme L.
Deux programmes linéaires de maximisation L et L’ sont des équivalent
si pour toute solution réalisable de L ayant pour valeur objectif z, il existe
une solution réalisable homologue de L’ ayant la même valeur objectif z et
l’inverse.
Un programme de maximisation L et un programme de minimisation L’ sont
équivalents si pour toute solution réalisable de L ayant pour valeur objectif
z, il existe une solution réalisable homologue de L’ ayant la valeur objectif -z
et l’inverse.

2.9.1 Exemple
Conversion d’un PL de minimisation à un PL de maximisation
Soit le programme linéaire suivant:
minimiser
−2x1 + 3x2
sous les contraintes
x1 + x2 = 7
x1 − 2x2 ≤ 4
0 ≤ x1
On inverse les coefficeints de la fonction objectif.
maximiser
2x1 − 3x2
sous les mêmes contraintes.
Conversion d’un PL au forme canonique On a pas le signe de la
variable x2 . Dans ce cas, on remplace x2 par x02 − x002 avec les contraintes de

Pr. Khalil IBRAHIMI 10 a.u: 2021-2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire

positivités x02 ≥ 0 x002 ≥ 0


maximiser
2x1 − 3(x02 − x002 )
sous les contraintes
x1 + x02 − x002 = 7
x1 − 2(x02 − x002 ) ≤ 4
x1 , x02 , x002 ≥ 0
Ensuite, nous convertissons la contrainte dégalité x1 +x02 −x002 = 7 en inégalités

x1 + x02 − x002 ≥ 7

et
x1 + x02 − x002 ≤ 7
maximiser
2x1 − 3(x02 − x002 )
sous les contraintes

x1 + x02 − x002 ≥ 7
x1 + x02 − x002 ≤ 7
x1 − 2(x02 − x002 ) ≤ 4
x1 , x02 , x002 ≥ 0
En fin, nous prenons l’opposé de la contrainte x1 + x02 − x002 ≥ 7 qui est

−x1 − x02 + x002 ≤ −7

On renome les variables pour la cohérence et on trouve la forme canonique.


maximiser
2x1 − 3x2 + 3x3
sous les contraintes
−x1 − x2 + x3 ≤ −7
x1 + x2 − x3 ≤ 7
x1 − 2x2 + 3x3 ≤ 4
x1 , x2 , x3 ≥ 0

Pr. Khalil IBRAHIMI 11 a.u: 2021-2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire

Forme canonique mariciel


Maximiser
z = cx
sous les contraintes
Ax ≤ b
x≥0
Exemple:
x = (x1 , x2 , x3 )T , b = (−7, 7, 4)T , c = (2, −3, 3)
 
−1 −1 1
A= 1 1 −1 
1 −2 3

2.10 Conversion d’un PL en forme standard


Un programme linéaire est sous forme standard si uniquement les contraintes
de positivités sont des contraintes d’inégalités, toutes les autres contraintes
étant des égalités.
La conversion de la i-éme i = 1, ..., m contrainte d’inégalité à égalite.
n
X
aij xj ≤ bi
j=1

La nouvelle variable d’écart est noté xn+i et la contrainte devient


n
X
xn+i = bi − aij xj
j=1

avec la contrainte de positivité xn+i ≥ 0.


Les variables de gauche xn+i sont des variables de base, alors les variables
de droite xj sont des variables hors-base qui figures seul dans la fonction
objectif.
Exemple
maximiser
2x1 − 3x2 + 3x3
Sous les contraintes
x4 = −7 + x1 + x2 − x3

Pr. Khalil IBRAHIMI 12 a.u: 2021-2022


FSK, SMI, S5 Chapitre 1 Programmation linéaire

x5 = 7 − x1 − x2 + x3
x6 = 4 − x1 + 2x2 − 3x3
x1 , x2 , x3 , x4 , x5 , x6 ≥ 0

On mettre les contraintes de positivité x1 , x2 , x3 , x4 , x5 , x6 ≥ 0 et la forme


standard est:

z = 2x1 − 3x2 + 3x3


x4 = −7 + x1 + x2 − x3
x5 = 7 − x1 − x2 + x 3
x6 = 4 − x1 + 2x2 − 3x3
Soit N designe l’ensemble des indices des variables hors-base et B désigne
l’esemble des indices des variables de base. Une forme standard est un tuple
(N, B, A, b, c, v) telque: X
z=v+ cj x j
j∈N
X
xi = b i − aij xj
j∈N

pour i ∈ B.
La forme standard
B = {4, 5, 6}, N = {1, 2, 3} b = (−7, 7, 4)T , c = (2, −3, 3)T et v = 0.
 
−1 −1 1
A=  1 1 −1 
1 −2 3

Pr. Khalil IBRAHIMI 13 a.u: 2021-2022


Recherche opérationnelle Chapitre 2 Programmation linéaire

1 Algorithme Simplexe
Une nouvelle méthode du Simplexe géométrique permet à partir d’une solu-
tion initiale (point de départ du polyèdre), lors de toute itération de passer
d’un sommet à un sommet voisin en lequel la valeur de la fonction objectif
est meilleure. L’algoritme s’arrête lorsqu’on ne trouve aucun sommet voisin
dont la valeur de la fonction objectif est meilleure.

1.1 Condition d’utilisation


• Toutes les contraintes du PL doivent être en égalités (forme standard);

• Tous les secondes membres sont positifs;

• Si une contrainte i contient le second membre négatif bi < 0, on mutli-


plie la conttrainte par -1.

• Si le signe d’une variable est inconnu à l’avance par exemple xi ≥ −2,


on peut la remplacer par x0i = xi + 2 ≥ 0. Si on pas la borne inférieur,
on la ramplce par xi = x0i − xi ” avec xi ”, x0i ≥ 0.

• La fonction objectif est à maximiser;

• Introduire les variables d’écarts;

• Solution initiale réalisable en origine comme point de départ, sinon


méthode à deux phases pour trouver une solution admissible comme
nouveau point.

1.2 Exemple
1.2.1 La forme standard d’un PL
maximiser
3x1 + x2 + 2x3
Sous les contraintes
x4 = 30 − x1 − x2 − 3x3
x5 = 24 − 2x1 − 2x2 − 5x3
x6 = 36 − 4x1 − x2 − 2x3

Pr. Khalil IBRAHIMI 1 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

x1 , x2 , x3 , x4 , x5 , x6 ≥ 0
Les variables d’écarts x4 , x5 , x6
Une solution intitiale à ce sytème correspond au sommet O(x1 = 0, x2 =
0, x3 = 0). La fabrication est nulle donne un bénifice Z =0 (nul). Il s’agit
d’une solution admissible au sens mathématique des contraintes.

1.2.2 Base en sommet origine O


Les variables de base en fonction des variables hors - base sont :
x4 = 30 − x1 − x2 − 3x3
x5 = 24 − 2x1 − 2x2 − 5x3
x6 = 36 − 4x1 − x2 − 2x3
Z = 0 + 3x1 + x2 + 2x3
Augmenter la valeur de la fonction objectif Z revient à augmenter la valeur
de l’une des variables hors base. On cherche la variable qui augmente de plus
grande marge de bénifice, donc c’est la variable x1 et les autres variables hors
base sont nulles.

1.2.3 La forme standard d’un PL


La variable x1 est augmenté d’une valeur θ et (x2 = 0, x3 = 0)
x4 = 30 − θ
x5 = 24 − 2θ
x6 = 36 − 4θ
Z = 0 + 3θ
Il faut augmenter la valeur du θ en respectant les contraintes de positivités
des variables. Donc, 30 − θ ≥ 0, 24 − 2θ ≥ 0 et 36 − 4θ ≥ 0, ce qui donne la
maximum possible est θ = 9. On trouve un nouveau sommet C = (0+9, 0, 0),
c’est un programme qui génére un bénifice de 27.
Exemple [Base en sommet C] On cherhce x1 en fonction de x6 et on
obtient x1 = 1/4(36 − x2 − 2x3 − x6 )∗ . En remplace x1 par sa valeur dans les
variables de base x4 et x5 , le nouveau système est :
x1 = 9 − 1/4x2 − 1/2x3 − 1/4x6

Pr. Khalil IBRAHIMI 2 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

x4 = 21 − 3/4x2 − 5/2x3 + 1/4x6


x5 = 6 − 3/2x2 − 4x3 + 1/2x6
Z = 27 + 1/4x2 + 1/2x3 − 3/4x6
Cette opération porte le nom de PIVOT. Un pivot choisit une variable hors-
base xe (entrante, e=1), et une variable xl de base dite sortante (l=6) de la
base.
On augmente la valeur de la fonction objectif. On exprime les variables de
base en C en fonction des variables hors base en C.
Exemple [Base en sommet voisin de C] Augmenter la valeur de la fonction
objectif Z = 27 revient à augmenter la valeur de l’une des variables hors
base. On cherche la variable qui augmente de plus grande marge de bénifice,
donc c’est la variable x3 et les autres variables hors base sont nulles. Donc
x3 = θ, x2 = 0, x6 = 0
x1 = 9 − 1/2θ
x4 = 21 − 5/2θ
x5 = 6 − 4θ
Z = 27 + 1/2θ
En respectant les contraintes non négativités, la valeur maximal d’augmentation
est de 3/2. Donc,

x3 = 1/4(6 − 3/2x2 + 1/2x6 − x5 )

.
Exemple [Base en sommet C] On cherhce x3 en fonction de x5 et on
obtient x3 = 3/2 − 3/8x2 − 1/4x5 + 1/8x6 . En remplace x2 par sa valeur dans
les variables de base x1 et x4 , le nouveau système est :

x1 = 33/4 − 1/16x2 + 1/8x5 − 5/16x6


x3 = 3/2 − 3/8x2 − 1/4x5 + 1/8x6
x4 = 69/4 + 3/16x2 + 5/8x5 − 1/16x6

Z = 111/4 + 1/16x2 − 1/8x5 − 11/16x6


Remarque: x3 est la varirable entrante dans la base et x5 est la variable
sortante de la base. On augmente la valeur de la fonction objectif. On

Pr. Khalil IBRAHIMI 3 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

exprime les variables de base en C en fonction des variables hors base en


vosin de C, D.
Exemple [Base en sommet voisin de D] Augmenter la valeur de la fonction
objectif Z = 111/4 revient à augmenter la valeur de l’une des variables hors
base. On cherche la variable qui augmente de plus grande marge de bénéfice,
donc c’est la seule variable x2 et les autres variables hors base sont nulles.
Donc x2 = θ, x5 = 0, x6 = 0

x1 = 33/4 − 1/16θ

x4 = 69/4 + 3/16θ
x3 = 3/2 − 3/8θ
Z = 111/4 + 1/16θ
En respectant les contraintes non négativités, la valeur maximal d’augmentation
est de 4.
x2 = 8/3(3/2 − x3 − 1/4x5 + 1/8x6 )

Exemple [Base en sommet C] On cherhce x2 en fonction de x3 et on


obtient x2 = 8/3(−3/2 − x3 + 1/4x5 − 1/8x6 ). En remplace x2 par sa valeur
dans les variables de base, le nouveau système est :

x1 = 8 + x3 /6 + x5 /6 − x6 /3

x2 = 4 − 8/3x3 − 2/3x5 + 1/3x6


x4 = 18 − x3 /2 + x5 /2
Z = 28 − 1/6x3 − 1/6x5 − 2/3x6
Remarque: x2 est la varirable entrante dans la base et x3 est la variable sor-
tante de la base. Toutes les coefficients de la fonction Z sont négatifs et donc
pas d’augmentation possible et la solution optimale est x∗ = (8, 4, 0, 18, 0, 0)
qui donne la valeur maximal de Z = 3 ∗ 8 + 4 + 0 = 28. B = {1, 2, 4},
N = {3, 5, 6}

Pr. Khalil IBRAHIMI 4 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

1.3 Mise à jour générale des contraintes par PIVOT


La variable entrante est de la forme :
X
xe = b̂e − âej xj − âel xl
j∈N −{e}

Mise à jour des autres variables de bases i ∈ B − {l}:


X
xi = b̂i − âij xj − âil xl
j∈N −{e}

Mise à jour de la fonction objectif:


X
z = v̂ + ĉj xj + ĉl xl
j∈N −{e}

Le mécanisme PIVOT suivant permet de calculer les coefficients de chaque


variable à chaque itération.

2 Méthode algorithmique du Simplex


Critères de Dantzig
A partir de la forme standard du P.L, on exprime la solution au sommet
à l’origine
• Critère 1. Pour déterminer la colonne qui doit entrer dans la base
(entrante), on choisit celle qui comporte le cj > 0 le plus grand de la
fonction économique.
• Critère 2. Pour déterminer la colonne qui doit sortir de la base, on
choisit celle d’indice l tel que bk /ake soit le plus petit (l = k).
Exemple : Max
Z = 0 + 3x1 + x2 + 2x3
SC
x4 = 30 − x1 − x2 − 3x3
x5 = 24 − 2x1 − 2x2 − 5x3
x6 = 36 − 4x1 − x2 − 2x3
e = 1, l = 6, min(30/1, 24/2 = 12, 36/4 = 9) = 9

Pr. Khalil IBRAHIMI 5 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

2.1 Mécanisme PIVOT


Le PIVOT reçoit en entrée n-uplet (N, B, A, b, c, v, l, e) une forme standard
et retourne n-uplet (N̂ , B̂, Â, b̂, ĉ, v̂) d’une nouvelle forme standard. Il utilise
une variable entrante xe d’indice e et une variable sortante xl d’indice l à
chaque appel du procédure.
1. Calcule des coefficients de nouvelle variable de base xe .
b̂e = bl /ale
Pour tout j ∈ N − {e} faire âej = alj /ale
âel = 1/ale
2. Calcule des coefficients des contraintes restantes.
Pour tout i ∈ B − {l} faire b̂i = bi − aie b̂e
Pour tout j ∈ N − {e} faire âij = aij − aie âej
âil = −aie âel
3. Calcule de la fonction objectif:
v̂ = v + ce b̂e
Pour tout j ∈ N − {e} faire ĉj = cj − ce âej
ĉl = −ce âel
4. Mise à jour d’ensemble de nouvelles varirables de base/hors-base.
N̂ = N − {e} ∪ {l} et B̂ = B − {l} ∪ {e}
5. Retourne la nouvelle forme standard (N̂ , B̂, Â, b̂, ĉ, v̂) =Mécanisme
PIVOT(N, B, A, b, c, v, l, e) du simplexe.
La variable entrante est de la forme :
X
xe = b̂e − âej xj − âel xl
j∈N −{e}

Mise à jour des autres variables de bases i ∈ B − {l}:


X
xi = b̂i − âij xj − âil xl
j∈N −{e}

Mise à jour de la fonction objectif:


X
z = v̂ + ĉj xj + ĉl xl
j∈N −{e}

Théorème.
Considérons l’appel à (N̂ , B̂, Â, b̂, ĉ, v̂)=PIVOT(N, B, A, b, c, v, l, e) dans
lequel la valeur du pivot ale 6= 0. Soit x̄ la solution de base après l’appel,
alors x̄j = 0 pour tout j ∈ N̂ , x̄e = ablel , x̄i = bi − aie b̂e pour tout i ∈ B̂ − {e}

Pr. Khalil IBRAHIMI 6 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

2.2 Formalisme de l’algorithme simplexe


1. Initialisation.

(N, B, A, b, c, v) = initialise − simplexe(A, b, c)


2. Simplexe.
Tant que j ∈ N vérifie cj > 0
faire choisir un indice e ∈ N tel que ce > 0
pour tout indice i ∈ B
faire is aie > 0 alors δi = bi /aie
sinon δi = ∞
choisir un indice l ∈ B qui minimise δi
si δi = ∞
alors retourner non borné
sinon (N, B, A, b, c, v) = PIVOT(N, B, A, b, c, v, l, e)
Fin de tant que

3. Pour i allant de 1 à n, faire si i ∈ B, alors x̄i = bi , sinon x̄i = 0


retourner (x̄1 , x̄2 , ..., x̄n ) la solution optimale.

L’algorithme résume la méthode de maximisation par les tableaux di-


rectement.
Lemme 1 Etand donné un programme linéaire (A, b, c), supposez l’initialisation
retourne une forme standard pour laquelle la solution est réalisable. Si sim-
plexe retourne une solution optimale, cette solution est réalisable pour PL.
Si simplexe retourne non borné, alors le programme PL est non borné.
Lemme 2 Soit (A, b, c) un programme linéaire sous forme canonique.
Etant donné un ensemble de variable de base B, il y a unicité de la forme
standard associée.
Lemme 3 Soit I un ensemble d’indices. Pour tout i ∈ I, soeint αi et βi
des réels, et soit xi une variable à valeur réelle. Soit γ un réel quelconque.
Supposons pour toute configuration des xi , l’on ait
X X
αi xi = γ + β i xi
i i

alors αi = βi pour tout i ∈ I, et γ = 0.

Pr. Khalil IBRAHIMI 7 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

2.3 Terminaison de l’algorithme Simplexe


Chaque itération de l’algorithme simplexe augmentait la valeur de la fonction
objectif associée àla solution de base. Il se peut qu’une itération laisse la
valeur de la fonction objectif inchangée. Ce phénomène porte le nom de
dégénérescence, donc bl = 0.
m
Lemme 1 Si SIMPLEXE n’arrive pas à se terminer en au plus Cn+m itérations,
alors il boucle.
Lemme 2 Si Initialisation-SIMPLEXE retourne une forme standard pour
laquelle la solution de base est réalisable, alors soit SIMPLEXE signale qu’un
PL est non borné, soit il se termine avec une solution réalisable en au plus
m
Cn+m itérations.

2.4 Problème de la soultion de base initiale


Situation

• Initialisation: toujours on a une solution réalisable? si non, comment


construire une solution?
L’objectif est de trouver une solution de base admissible qui servira de
point de départ pour l’algorithme du simplexe.
L’idée est de résoudre un problème intermédiaire de minimisation dont
la solution fournira le point de départ de la méthode du simplexe. Ce
problème intermédiaire porte le nom de Phase I du simplexe. Puis de
suivre la méthode standard du simplexe (Phase II).

• A chaque itération de trouver une variable entrante et une sortante.

• Terminaison: en un nombre fini d’itérations, la solution optimale est


trouvée (convergence) ou non.
Méthode de deux phases La méthode des Deux Phases est utilisée lorsque
les variables artificielles apparaissent dans la forme standard ou canonique
du problème linéaire.
Phase 1. Résolution du problème auxiliaire avec une nouvelle fonction ob-
jectif w = −x0 .
Phase 2. On appel à l’algorithme simplexe à partir de la forme standard de
la phase 1 avec la fonction objectif originale.

Pr. Khalil IBRAHIMI 8 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

Exemple.
Maximiser
z = 2x1 + x2
sous les contraintes
x1 + 2x2 + x3 = 5
3x1 − 2x2 + 3x3 = 2
xi ≥ 0
Trouver la solution de base initiale en utilisant les deux phases.
Problème de la soultion de base initiale
Lemme : Prgramme auxiliéaire Soit L un programme linaéaire sous forme
canonique.
Soit Llaux le programme linéaire à n + 1 variables :
maximiser
w = −x0
sous les contriantes n
X
aij xj − x0 ≤ bi
j=1

pour i = 1, 2, ..., m et
xj ≥ 0
pour j = 0, 1, ..., n.
Alors L est réalisable si est seulement si la valeur de l’objectif optimale de
Laux est 0.
INITALISE-SIMPLEXE (A, b, c) Programme auxiliéaire Soit l l’indice
du bi minimal. Alors si bl ≥ 0, la solution de base initiale est réalisable,
retourne (N, B, A, b, c, 0)
Sinon, former un programme linéaire auxiliéaire Laux (voir le lemme précident)
On appel le PIVOT sur la forme standard finale de Laux (N, B, A, b, c, v) =
P IV OT (N, B, A, b, c, v, l, 0) (entrant = x0, sortant =xl , sans que bl >0)
Solution au programme auxiliéaire On a maintenant la solution réalisable
pour Laux .
Répéter le simplexe sauf l’initialisation, jusqu’à l’obtention d’une solution
optimale pour Laux .
Si la solution de base x̄0 = 0 alors retourne la forme standard finale en
supprimant x0 et en restaurant la fonction objectif originale.
Sinon retourne irréalisable.

Pr. Khalil IBRAHIMI 9 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

Exemple du problème de phase I max

z = 2x1 − x2

sc
2x1 − x2 ≤ 2
x1 − 5x2 ≤ −4
x1 , x2 ≥ 0
1. La solution de base (0, 0) est iréalisable, car la contrainte 2 est violée.
Donc, la phase initiale du simplex ne retourne pas la forme standard évidente.
2. Trouver la forme standard
3. Formuler le programme linéaire auxiliaire.

4. Trouver la solution optimale du problème originale.


Exemple du problème de phase I
2. La forme standard du programme auxiliaire
max
z = −x0
sc
2x1 − x2 + x3 − x0 = 2
x1 − x2 + x4 − x0 = −4
Ou bien sous la forme
x3 = 2 + x0 − 2x1 + x2
x4 = −4 + x0 − x1 + x2
xi ≥ 0
Après appel au PIVOT, on convertit ce programme à un autre programme
linéaire dont la solution est réalisable (e=0, l=4 (la plus négative (-4))).
La solution de base de Laux est x1 = 0, x2 = 4/5, x3 = 14/5 et z = 0 (2
PIVOT) On supprime x0 , puis on utlise la fonction z originale à ce stade,
puis on continue le simplex (Phase II).
Lemme 1 Etand donné un programme linéaire (A, b, c), supposez l’initialisation
retourne une forme standard pour laquelle la solution est réalisable. Si sim-
plexe retourne une solution optimale, cette solution est réalisable pour PL.
Si simplexe retourne non borné, alors le programme PL est non borné.

Pr. Khalil IBRAHIMI 10 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

Lemme 2 Soit (A, b, c) un programme linéaire sous forme canonique.


Etant donné un ensemble de variable de base B, il y a unicité de la forme
standard associée.
Lemme 3 Soit I un ensemble d’indices. Pour tout i ∈ I, soeint αi et βi
des réels, et soit xi une variable à valeur réelle. SoitPγ un réel quelconque.
P
Supposons pour toute configuration des xi , l’on ait i αi xi = γ + i βi xi
alors αi = βi pour tout i ∈ I, et γ = 0.
Terminaison de l’algorithme Simplexe Chaque itération de l’algorithme
simplexe augmentait la valeur de la fonction objectif associée à la solution
de base. Il se peut qu’une itération laisse la valeur de la fonction objectif
inchangée. Ce phénomène porte le nom de dégénérescence, donc bl = 0.
m
Lemme 1 Si SIMPLEXE n’arrive pas à se terminer en au plus Cn+m itérations,
alors il boucle.
Lemme 2 Si Initialisation-SIMPLEXE retourne une forme standard pour
laquelle la solution de base est réalisable, alors soit SIMPLEXE signale qu’un
PL est non borné, soit il se termine avec une solution réalisable en au plus
m
Cn+m itérations.

Pr. Khalil IBRAHIMI 11 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 3 Programmation linéaire

0.0.1 Méthode des tableaux


Maximisation par la méthode des tableaux du simplex Soient x = (xB , xN ),
C = (CB , CN ), xB represente les variables de base et xN represente les vari-
ables hors base.
A = (AB , AN ) avec AB une matrice carrée de taille mxm, inversible, cor-
respondant aux variables de base et AN une matrice de taille mx(n − m),
correspondant aux variables hors-base. Le P.L est :
Max
Z = (CB , CN ) ∗ (xB , xN )T = CB xB + CN xN
sc
Ax = (AB , AN ) ∗ (xB , xN )T = AB xB + AN xN = b
avec
xB = A−1 −1
B b − AB AN xN

En annulant xN , la solution de base est alors xB = A−1


B b. On obtient une
solution de base réalisable de départ si xB ≥ 0 (la matrice AB est toujours
constituée à partir des colonnes de la matrice A).
Maximisation par la méthode des tableaux du simplex

Z = CB (A−1 −1
B b − AB N xN ) + CN xN

Z = CB A−1 −1
B b + (CN − AB AN )xN

X
C N xN = cj x j
j∈N
X
A−1
B AN = A−1
B aj
j∈N

Notons
Z0 = CB A−1
B b

Maximisation par la méthode des tableaux du simplex


X X
Z = Z0 + cj x j − CB A−1
B aj x j
j∈N j∈N

Pr. Khalil IBRAHIMI 1 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 3 Programmation linéaire

X
Z = Z0 + (cj − CB A−1
B aj )xj
j∈N
X
Z = Z0 + (cj − zj )xj
j∈N

zj = CB A−1
B aj et cj sont les coefficients de la fonction objectif des variables
hors base. aj est un vecteur de la variable hors base xj .
Maximisation par la méthode des tableaux du simplex Avec

Table 1: Tableau
−xj

z= z0 ... zj − cj ....

xB = A−1
B b ... yj ....

xB , xN ≥ 0

zj = CB A−1
B aj

yj = A−1
B aj = (y1j , ..., ymj )
T

Maximisation par la méthode des tableaux du simplex


On appelle élément pivot le coefficient situé à l’intersection de la colonne
pivot (j) et de la ligne pivot (r) (pivot = yrj ).
Transformation du tableau : Régles I et II

1. Régle I: Choix de la colonne j à introduire dans la nouvelle base B


telque zj − cj < 0, (z0 − (zj − cj ) yyr0
rj
≥ 0) (méthode du rectangle).

zj − cj = min{zk − ck |zk − ck < 0}


pour ak ∈ N

2. Régle II: Choix de la colonne à éliminer de la base B pour obtenir une


nouvelle ligne r telque

Pr. Khalil IBRAHIMI 2 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 3 Programmation linéaire

−xj −xk

z= z0 ... zj −cj ... ... zk − ck


...

xB (1) =y10 ... y1j ... ... y1k ...

... = .... ... .... ... ... .... ...

xB (i) =yi0 ... yij ... ... yik ...

xp = yr0 ... yrj ... ... yrk ...


xB (r) =

xB (m) =ym0 ... ymj ... ... ymk ...

yr0 yi0
= min{ |yij > 0}
yrj yij
pour tout i.
Algorithme (forme condensée des tableaux)

1. Partir d’une solution de base admissible sous forme un tableau


2. Chercher s’il y a une transformation à un tableau en mettant la solution
de base voisine meilleure via les régles précedentes.
3. Respecter les règles I et II
4. Diviser tous les termes de la ligne pivot par la valeur du pivot (p = yrj )
y
( yjk
rj
) ( (r 6= k)).

5. Diviser tous les termes de la colonne pivot à diviser par la valeur du


yij
pivot en inversant le signe (− yrj ) (i 6=) sauf la valeur du pivot.

6. Amener un coefficient 1 au croisement de la colonne pivot et de la ligne


pivot en divisant celle-ci par le coefficient yrj .
7. Appliquer les régles du rectangle (voir l’algorithme) pour tous les tem-
res yij hor de la ligne et de la colonne pivot.

Pr. Khalil IBRAHIMI 3 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 3 Programmation linéaire

(zj −cj )
8. Aussi la valeur du cofficient de z devient − yrj
de la colonne pivot.

9. si zj −cj ≥ 0 pour toute colonne j, alors la solution actuelle est optimale.


Maximisation par la méthode des tableaux du simplex Appliquer la méthôe

−xr −xk
zj −cj
z= z0 ... − yrj
... zk − ck
... ...
y
1j
xB (1) =y10 ... − yrj ... ... y1k ...

... = .... ... .... ... ... .... ...


y
ij
xB (i) =yi0 ... − yrj ... ... yik ...

xj = yyr0rj
... 1/yrj ... ... yrk
yrj
...
xB (j) =
y
xB (m) =ym0 ... − ymj
rj
... ... ymk ...

des rectangles pour la mise à jour des autres cofficients.


Exemple Trouver le plan optimal par la méthode des tableaux
max
z = 5x1 + 8x2
sc
x1 + x2 ≤ 2
x1 − 2x2 ≤ 0
−x1 + 4x2 ≤ 1
x≥0
Trouver par la méthode des tableaux la solution du problème en min-
imisant la fonction objectif.
min
z = 5x1 + 8x2

Pr. Khalil IBRAHIMI 4 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 3 Programmation linéaire

−x1 −x2

z= 0 -5 -8

x3 = 2 1 1

x4 = 0 1 -2

x5 = 1 -1 4

Maximisation par la méthode des tableaux du simplex


On a besoin de trois variables d’écarts x3 , x4 , etx5 positives.
Appliquer les régles I et II. Variable entrante est x2 et sortante est x5 car
min(2/1, 1/4) = 1/4
Maximisation par la méthode des tableaux du simplex Itération 1. On

−x1 −x5

z= 2 -7 2

x3 = 7/4 5/4 -1/4

x4 = 1/2 1/2 1/2

x2 = 1/4 -1/4 1/4

a −7 < 0, on peut choisir x1 comme entrante (régle I) et x4 sortante


min((7/4)/(5/4), (1/2) / (1/2)) = 1 (régle II).
Maximisation par la méthode des tableaux du simplex Itération 2. La
solution optimale est (x1 ∗ = 1, x2 ∗ = 1/2) et la valeur optimale est z∗ =
9 = 5 ∗ 1 + 8 ∗ 1/2. car les zj − cj >= 0 pour toutes colonnes du tableau.

0.1 Dualité d’un programme linéaire


Définition Un programme linéaire de maximisation, a un programme linéaire
dual dans lequel l’objectif est de minimiser et dont la valeur optimale égale
à celle du programme origine (primal).

Pr. Khalil IBRAHIMI 5 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 3 Programmation linéaire

−x4 −x5

z= 9 14 9

x3 = 1/2 -5/2 -3/2

x1 = 1 2 1

x2 = 1/2 1/2 1/2

Primal maximiser n
X
cj x j
j=1

Sous les contraintes de positivités


n
X
aij xj ≤ bi pour i = 1, ..., m
j=1

xj ≥ 0 pour j = 1, ..., n

En générale, pour déterminer le dual de P.L. donné sous forme quelconque,


on commence par le ramener à la forme cnonique ou standard.
Dual minimiser m
X
bi y i
i=1

Sous les contraintes de positivités


m
X
aij yi ≥ cj pour j = 1, ..., n
i=1

yi ≥ 0 pour i = 1, ..., m
Lemme 3: Dualité faible Pour toute solution réalisable x̄ du primale et
toute solution réalisable ȳ du dual, alors
n
X m
X
cj x̄j ≤ bi ȳi
j=1 i=1

Pr. Khalil IBRAHIMI 6 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 3 Programmation linéaire

Corollaire Pour toute solution réalisable x̄ du primale et toute solution réalisable


ȳ du dual, alors is
Xn Xm
cj x̄j = bi ȳi
j=1 i=1

Alors x̄ et ȳ sont solutions optimales pour les programmes linéaires primal


et dual respectivement.
Solution optimale du dual Supposons que la dernière forme standard du
primal par simplexe est comme suit:
X
z = v0 + c0j xj
j∈N

X
xi = b0i − a0ij xj i ∈ B
j∈N

alors, une solution optimale du duale est

ȳi = − c0n+i si n + i ∈ N, sinon 0




[Primal] Soit le primal d’un PL

M ax Z = 4x1 + 12x2 + 3x3

x1 ≤ 1000
x2 ≤ 500
x3 ≤ 1500
3x1 + 6x2 + 2x3 ≤ 6750
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0

Le primal contient 4 contraintes, donc, on utilise 4 variables yi . [dual] Le


dual du primal est

M in Z 0 = 1000y1 + 500y2 + 15000y3 + 6750y4

y1 + 3y4 ≥ 4

Pr. Khalil IBRAHIMI 7 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 3 Programmation linéaire

y2 + 6y4 ≥ 12
y3 + 2y4 ≥ 3
y1 ≥ 0, y2 ≥ 0, y3 ≥ 0, y4 ≥ 0

0.1.1 Théorème des écarts complémentaires


Théorème des écarts complémentaires
[Primal]
max z = c.x
s.c
Ax ≤ b,
x≥0

[Dual]
min w = y.b
s.c
yA ≥ c,
y≥0

Théorème/relaxation
Des solutions admissibles x (pour primal) et y (pour dual) sont optimales si
et seulement si X
yi (bi − aij xj ) = 0, i = 1, ..., m
j
X
( aij yi − cj )xj = 0, j = 1, ..., n
i

Exemple

(y1 + 2y2 + 4y3 − 3)x1 = 0


(y1 + 2y2 + y3 − 1)x2 = 0
(3y1 + 5y2 + 2y3 − 2)x3 = 0

Pr. Khalil IBRAHIMI 8 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 3 Programmation linéaire

y1 (30 − x1 − x2 − 3x3 ) = 0
y2 (24 − 2x1 − 2x2 − 5x3 ) = 0
y3 (36 − 4x1 − x2 − 2x3 ) = 0
Exemple

(y1 + 2y2 + 4y3 − 3)8 = 0


(y1 + 2y2 + y3 − 1)4 = 0
(3y1 + 5y2 + 2y3 − 2)0 = 0

y1 (30 − 8 − 4 − 3 ∗ 0) = 0
y2 (24 − 2 ∗ 8 − 2 ∗ 4 − 5 ∗ 0) = 0
y3 (36 − 4 ∗ 8 − 4 − 2 ∗ 0) = 0
ce qui donne
y1 = 0, y2 = 1/6, y3 = 2/3

0.1.2 Interpretation économique de la dualité


L’objectif est de minimiser le prix à payer pour racheter
Pm toutes les ressources
à condition que le prix unitaire à une activité i=1 aij yi est suppérieur au
profit cj .

0.2 Programme linéaire entier


Dans un programme linéaire dont les variables xi ∈ N , alors le programme
est dit entier.

Pr. Khalil IBRAHIMI 9 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

1 Introduction à la théorie des graphes


1.1 Concepts généraux
Définition Un graphe G =(X, U) est constitué de deux éléments X et U. X
est l’ensemble de ses sommets et U est l’ensemble de ses arcs.
• Graphe est orienté si ses arces sont constitués des couples de sommets
ordonnés.

• Graphe est non orienté si ses arêtes sont constitués des couples de
sommets non ordonnés.

• Chaine est un ensemble d’arcs de longueur q reliant deux sommets x


et y (u1 , u2 , ..., uq ) tel que u1 est incident par ses extrémités à à x et
uq est incident à y par l’un de ses extremités. Pour tout arc ur avec
1 ≤ r ≤ q − 1 est incident à son précedent et son suivant.

• Chaine est simple si tous ses arcs sont distincts.

• Chaine est élémentaire si tous ses sommets sont distincts.

• cycle est une chaine dont les extrémités sont confondues (x=y).

• Un graphe est connexe s’il existe une une chaine entre toutes paire de
sommets.

• Un graphe sans cycle est une forêt.


Définition
• Dans un graphe orienté, chaque arc u=(i,j) est ordonné

• i est appelé l’initial de l’arc u, i=I(u)

• j est appelé le terminal de l’arc u, j=T(u).

• Un chemin est une chaine orienté dans le même sens

• Un circuit est un chemin dont ses extrémités sont confondues.

• l’arc u=(i,j) estincident à i et à j.

• cycle est une chaine dont les extrémités sont confondues (x=y).

Pr. Khalil IBRAHIMI 1 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

• Un graphe est connexe s’il ne contient aucun cycle (il existe au moins
une chaine entre toute paire de sommets).

• Un graphe sans cycle est une forêt.

• On appel un sous graphe G’=(X’, U’) du graphe G =(X, U) tel que


X 0 ∈ XetU 0 ∈ U ayant des extrémités dans X.

• Graphe partiel engendré par U’ ayant les mêmes sommets que G.

Définition

• Le degré d’un sommet x dans un graphe G =(X, U) est noté dG (x) =



d+
G (x) + dG (x)

• d+
G (x) = |{u ∈ U |x = I(u)}|: degré sortant de x (nombre d’arcs sor-
tants de x)

• d−
G (x) = |{u ∈ U |x = T (u)}|: degré entrant de x (nombre d’arcs entrant
au sommet x)

• si d− +
G (x) 6= 0 et dG (x)=0, le sommet x est un puits

• si d+ −
G (x) 6= 0 et dG (x)=0, le sommet x est une source

• Un circuit est un chemin dont ses extrémités sont confondues.

• L’ensemble des prédesseurs d’un sommet i est noté P(i).

• L’ensemble des successeurs d’un sommet i est noté S(i).

• Deux arcs sont adjacents s’ils sont incidents à un même sommet.

• Deux sommets x et y sont adjacents s’il existe (x,y) ou (y,x) dans U.

• l’arc u=(i, j) est une boucle si i=j.

• Le nombre de sommets est appelé l’ordre du graphe G.

Pr. Khalil IBRAHIMI 2 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

Graphe orienté

Graphe non orienté

1.2 Modélisation d’un graphe


Modélisation d’un graphe
Le dessin d’un graphe ne suffit pas pour des graphes de grande dimension,
il faut recourir à un ordinateur selon le type de problème.
• Matrice d’adjacence
• Matrice d’incidence
• Liste d’adjacence
Matrice d’adjacence sommets-sommets Un graphe G =(X, U) est con-
stitué de deux éléments X et U. X est l’ensemble de ses sommets et U est

Pr. Khalil IBRAHIMI 3 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

l’ensemble de ses arcs.


• Le graphe G est modélisé par une matrice d’ajacence A = (ai,j ) carrée
d’ordre n (nombre de sommets) dont les éléments sont les relations
entre ses sommets.
• si le graphe
 est non orienté, alros
1 si il existe une arete entre i et j
ai,j =
0 sinon.
• La présence de 1 en diagonale signifie qu’il y a des boucles.
• La matrice est sysmétrique (aij = aji )
• si le graphe est orienté

1 si il existe un arc entre i et j
ai,j =
0 sinon.
• La matrice est non sysmétrique
Matrice d’incidence sommets - arcs Un graphe G =(X, U) est constitué
de deux éléments X et U sans boucle. X est l’ensemble de ses sommets et U
est l’ensemble de ses arcs.
• Soient n le nombre de sommets de G et m le nombre d’arcs de G. Le
graphe est représenté par une matrice A = (ai,j ) de la forme suivante:
n lignes et m colonnes tel que, si le graphe est orienté:

 1 si i = T (uj )
ai,j = −1 si i = I(uj )
0 sinon.

pour i ∈ X, j ∈ U
Matrice d’incidence sommets - arcs Un graphe G =(X, U) est constitué
de deux éléments X et U sans boucle. X est l’ensemble de ses sommets et U
est l’ensemble de ses arcs.
• si le graphe est non orienté:

1 si i est une extrémité de l’arc uj
ai,j =
0 sinon.
pour i ∈ X, j ∈ U

Pr. Khalil IBRAHIMI 4 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

Liste d’adjacence Une autre manière de représenter un graphe est d’utiliser


les listes d’adjacence de chacun des sommets. Un graphe G =(X, U) est con-
stitué de deux éléments X et U. X est l’ensemble de ses sommets et U est
l’ensemble de ses arcs.
• Chaque sommet i a une liste de ses successuers S(i)

• Chaque sommet i a une liste de ses prédesseurs P(i)

• Cas d’un graphe orienté


Liste d’adjacence

• Cas d’un graphe non orienté. On donne pour chaque sommet i la liste
de ses voisins (S(i) ∪ P (i))

Connexité et graphe réduit

• Un graphe est connexe s’il existe au moins une chaı̂ne entre toute paire
de ses sommets

• Un graphe est fortement connexe s’il existe au moins un chemin entre


toute paire de ses sommets.

• Un graphe G=U’, X’) est un graphe réduit de G =(X, U) si


- Les éléments de X’ sont des composantes fortement connexe de G.
- Un arc (Ci , Cj ) ∈ U 0 s’il existe au moins dans le graphe G un arc en
tre un sommet de Ci et un sommet de Cj .

• Recherche d’une composante fortement connexe : Soit S ∈ X, la com-


posante fortement connexe de G contenant S est déterminée comme
suit:
- déterminer l’ensemble des sommets accessibles à partir de S noté (X1 )
- déterminer l’ensemble des sommets qui peuvent atteindre S (X2 )
CF C(S) = X1 ∩ X2
Coloriage d’un graphe Il y a plusieurs problèmes qui peuvent modélisés
par la coloration des graphes.
• Affectation des fréquences aux cellules d’un opérateur de télécoms.

• Organisation des examens

Pr. Khalil IBRAHIMI 5 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

• Cohabiter des personnes incompatible

• Coloration des sommets:affecter une couleur à tous les sommets sans


que deux sommets ajacents ont la même couleur

• Coloration des arrêtes: affecter une couleur à tous les arrêtes telle que
les arrêts ayant des sommets en commun sont de couleurs différentes.

• Indice chromatique : nombre minimum de couleurs pour colorier le


graphe ξ(G).

Généralité sur les arbre

• Un arbre T=(X, U) est un graphe connexe sans cycle.

• L’orientation des arcs est sans importance pour l’arbre.

• Un arbre de n ≥ 2 sommets comporte n-1 arcs.

• Tout graphe connexe possède un graphe partiel qui est un arbre.

• Feuille d’un arbre est un sommet de degré 1.

• Un arbre T d’ordre n suppérieur à 2 comportes au moins deux fauilles.

• Forêt est tout graphe sans cycle.

• Les composantes fortement connexes d’une forêt sont des arbres

• Exemple d’arbre:

Arbre binaire

• Un arbre binaire T est un arbre de n sommets comportant un seul


sommet de dégré 2 et dont tous les autres sommets sont de degré 1 ou
3 (voir l’exemple précédent avec n=11).

Pr. Khalil IBRAHIMI 6 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

• Le sommet de degré 2 est appelé racine de T.

• Le sommet de degré 3 est appelé un sommet interne de T.

• La racine a deux fils, chaque sommet interne a un père et deux fils et


chaque feuille a un père.

• La distance entre deux sommets est la longueur de l’unique chaı̂ne entre


eux.

• Un sommet x est dit de niveau i si x à une distance i de la racine de T.

• La racine de T est au niveau 0

• La profondeur d’un arbre binaire T est le niveau maximum associé à


ces sommets.

Arborescence

• Racine d’un graphe: un sommet a d’un graphe est une racine s’il existe
dans G un chemin joignant a à tout autre sommet du G.

• Un graphe G est une arborescence de racine a si :


- Le sommet a est une racine de G
- G est un arbre

• L’arborescence est un arbre mais l’inverse est fausse.

• Le concept d’arborescence est orienté

• Exemple d’arborescence de racine A0 :

Pr. Khalil IBRAHIMI 7 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

2 Arbre de couvrant de poids minimum


Arbre couvrant de poids minimum

• Un arbre couvrant est un graphe partiel d’un graphe connexe.

• Chaque arc u est associé à une longueur ou un poids l(u) ou pondération.

• Soit G=(X, U) un graphe connexe. L’abre couvrant de poids minimum


est un graphe partiel dont la somme des poids des arcs est minimum.

• Soit Γ = (X, T ) un arbre couvrant de G, alors


X
l(Γ) = l(u)
u

est la longueur de Γ

• Soit E l’ensemble des arbres couvrant de G. Alors l’abre couvrant à


poids minimum est l’arbre dont

l(γ) = min l(Γ) (1)


Γ∈E

2.1 Algorithme KRUSKAL


Algorithmes de recherche d’un arbe couvrant - 1 On distingue deux algorithmes
de recherche dans un graphe G=(X, U) connexe.

• Algorithme KRUSKAL: Permet de construire un arbre couvrant de


poids minimums en commençant par construire les arcs de poids mini-
mums de telle sorte que les cycles soient interdits.

Pr. Khalil IBRAHIMI 8 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

2.2 Algorithme PRIM


Algorithmes de recherche d’un arbe couvrant - 2

• Algorithme PRIM: Soit un arc v=(x, y) d’un graphe G=(X, U). Le


graphe Cv (G) résultant de la conraction de l’arc v est obtenu à partir
de G :
-En remplaçant les sommets x et y par un seul sommet xy.
- L’extrémité I(u) (resp. T(u)) de l’arc u ∈ Cv (G) est xy si et seulement
si l’extrémité initiale (resp. terminale) de l’arc correspondant dans G

est x ou y.

Exemple de conraction de l’arc (x, y).

Pr. Khalil IBRAHIMI 9 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 2 Programmation linéaire

Pr. Khalil IBRAHIMI 10 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 5 Plus court chemin

1 Les algorithmes des plus courts chemins


Service de livraison Service de livraison des produits
• Point de départ : usine de fabriquation

• Objectif: optimiser le temps et/ou le coût de transport.

• Réseau de transport avec les distances entre les sommets/points de


livraison.

• Il faut un algorithme pour calculer le PCC en fonction d’une destina-


tion.
Modélisation du réseau de transport :
-des points de livraison: un ensemble X de sommets
-des liaisons : un ensemble d’arcs U
-des longueurs : d(u) pour tout u ∈ U
Contextes d’utilisation:
-réseaux géographiques

-états d’un système Exemple

Chemin Un
chemin dans un graphe G = (X, U) orienté reliant deux sommets x et y de
longueur q est:
• une suite d’arcs consécutifs (u1 , u2 , ..., uq )

• u1 est incident à x par son extrémité initiale I(u1 ) = x.

SMI-S5 1 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 5 Plus court chemin

• uq est incident à y par son extrémité terminale T (uq ) = y.


• les arcs intérmidaires ui pour i = 2, ..., q sont incidents à ui−1 (T (ui−1 ) =
I(ui )).
La longueur d’un chemin c dans un graphe G = (X, U) est une application
d : U − − − R: X
d(c) = d(u)
u∈C

Chaque arc u a une longueur d(u) (distance/poids).


Problème: Trouver un chemin le plus court entre deux sommets sur un
réseau R = (X, U, d). Définition du plus court chemin (PCC)
Plus court chemin entre deux sommets i et j est un chemin dont la
longueur est le minimum:
n min{d(c)/c est un chemin de i à j} s0 il existe un chemin
δ(i, j) =
∞, sinon
Condition d’existence du PCC entre i et j dans un réseau est : descendant
de i et les ascendant de j ont des sommets en commun.
Pas de circuit absorbant sur les points en commun.

P
PCC Circuit négatif Un circuit C tel que u∈C d(u) < 0 est dit circuit
absorbant. Définition Etant donné un réseau R = (X, U, d) sans circuits
absorbants et admettant que le sommet s comme racine, à chaque sommet
x on associe la longueur du PCC de s à x dans R tel que : δ(x) = d(s, x).
Théoréme Etant donné un réseau R = (X, U, d) où chaque arc u = (i, j) ∈ U
a une longueur d(u), tel que ,
δ(T (u)) − δ(I(u)) ≤ d(u)
si et seulement si R n’a pas de circuit de longueur négatif.
Le sommet s a une distance δ(s) = 0. Arborescence de plus courts chemins

SMI-S5 2 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 5 Plus court chemin

Sur un graphe G=(X, U) orienté pondéré qui ne contient aucun ciruit ab-
sorbant/négatif depuis la racine s. Arborescence Une arborescence de plus
cours chemins de racine s est un sous graphe orienté G’=(X’, U’), tel que :
• X’ est l’ensemble de sommets accessible à partir de s dans G.

• G’ forme une arborescence de racine s.

• pour tout x ∈ X 0 , le chemin unique de s à x dans G’ est un plus court


chemin de s vers x dans G.
Algorithmes de recherche du plus court chemin Deux algorithmes :

• Algorithme de Dijkstra.

Si les longueurs d’arcs d(u) ≥ 0 pour tout u ∈ U .

• Objectif :
Recherche des plus courts chemins d’un sommet à tous ses descendants.

• Résultat: Arborescence unique des plus courts chemins de la racine


aux autres sommets de R.

• Algorithme de Bellman
-S’il n’y a pas de circuits dans R
-Le seul sommet sans prédésseurs est la racine s.

• Objectif : De proche en proche, on calcul le plus court chemin de s à


x si on calculé le plus court chemin à ses prédésseurs.
Il calcul le plus court chemin de s à tous les sommets.

• Résultat: Plusieurs Arborescences des plus courts chemins de la racine


aux autres sommets de R.
Initialisation des algorithmes

• Pour chaque sommet x ∈ X − s, d(x) = ∞

• l’ensemble de prédécesseurs de chaque sommet est vide.

• la racine d(s)=0.

SMI-S5 3 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 5 Plus court chemin

Application des algorithmes: Routage à vecteur de distance et à état de liens


dans les réseaux informatiques.
Algorithme Dijkstra Entrée :
un graphe G = (X, U ) avec des longueurs d’arcs d(i, j) ≥ 0; un sommet
particulier s.
Résultat : longueur δi des plus courts chemins de s à i.
Début
Z = {s}, δs = 0
pour tout v ∈ X − {s} faire δv = d(s, v)
s’il n’y a pas d’arc entre s et v on pose d(s, v) = ∞
Tant que Z 6= X faire
début
calculer δx = min{δv |v ∈/ Z}

Z = Z ∪ {x}
pour tout v ∈ X − Z faire δv = min{δv , δx + d(x, v)}
fin
Fin Tant que

Algorithme Dijkstra Algorithme gère un sous ensemble de sommets dont


les longueurs finales de plus court chemin à partir de la racine (s=A dans
l’exemple) ont déjà été calculées.

Exemple d’arborescence de racine A Les plus courts chemins sont marqués


sur les sommets.

SMI-S5 4 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 5 Plus court chemin

Algorithme Bellman Sur un réseau R = (X, U, d) sans circuits et un seul


sommet s dont les prédésseurs sont vides.
on connaı̂t seulement le point de départ s
on marque X si on découvre un chemin de s à X
la marque de X ne peut que décroı̂tre
si la marque est définitive, le chemin doit être minimal !
Algorithme Bellman Entrée : un graphe G = (X, U ); un sommet parti-
culier s.
Résultat : longueur δ des plus courts chemins, A.
Début
Z = {s}, δs = 0, A(s) = ∅,
δi = ∞ pour tout i 6= s
Tant que j ∈/ Z et P (j) ⊂ Z et P (j) 6= ∅ faire

calculer
δj = min{δ(I(u)) + d(u)}
(u ∈ U/T (u) = j)
Z = Z ∪ {j} A(j) = {u}
Fin Tant que
Exemple La figure suivante présente un graphe avec les distances minimales
de s à chaque sommet. Les longuers minimales sont mmarquées sur chaque

sommet depuis s.

SMI-S5 5 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 5 Plus court chemin

Arborescence Itération 1: δ1 = 1, A(1) = {(s, 1)}, Z = {s, 1}

Iteration 6: δ6 = 5, A(6) = {(4, 6)}, Z = {s, 1, 2, 3, 4, 5, 6}

SMI-S5 6 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 6 Probl‘emes du flot maximum

1 Problèmes du flot maximum


Exemple du réseau de transport Une usine S
Trois demandes en F (30), G (16) et H (15) (en conteneurs)
Des disponibilités d’un réseau de transport
Comment satisfaire au mieux la demande ?

Définition d’un flot

• On appelle un réseau de transport un graphe orienté fini de sommets


sans boucles avec une source s et une puits t , G=(X, U).

• Chaque arc a une capacité c(u) (valeure de l’arc = débit max).

• Au plus un arc entre deux sommets.

• Un flot dans un réseau G est une fonction à valeur entier f: X x X —


R tel que:
- Une loi de conservation aux sommets intermédiaires x différent de s
et de t. X X
f (a, x) = f (b, x)
a∈P (x) b∈S(x)

- Contrainte de capacité: Le flux d’un arc u est f (u) (0 ≤ f (u) ≤ c(u))


- Symétrie : pour tout i, j ∈ XxX, on a f (i, j) = −f (j, i)

• La valeur du flot est la somme des flux entrant à t:


X X
V (f ) = f (x, t) = f (x, s)
x∈P (t) x∈S(s)

Modélisation

SMI-S5 1 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 6 Probl‘emes du flot maximum

Chaine améliorante

• Un arc u est sturé si f (u) = c(u).

• Si l’arc u ∈
/ U , f (u) = 0.

• Une chaine améliorante est une chaine élémentaire de la source s à la


destination t (puits) telle que : aucun arc direct ne soit saturé et que
les flux des arcs indirects soient strictements positifs.

• L’algorithme de Ford-Fulkerson permet de trouver une chaine améliorante


et d’augmenter la valeur du flot.

• La recherche d’une chaı̂ne améliorante = phase de marquage

• Amélioration du flot = dans la phase d’augmentation


Réseaux résiduels (Graphe d’écarts)

• Capacité résiduel d’un arc = la quantité de flux supplémentaire à


ajouter sans dépasser la capacité de l’arc:

cf (u) = c(u) − f (u)

• Le réseau résiduel de G=(X, U) et un flot f, est constitué des arcs de


G qui peuvent supporter un flux supplémentaire (Gf = (X, U 0 )) avec
pour tout u ∈ U 0 , cf (u) > 0

Ajouter un flot au flot existant Soit un flot f de G=(X, U) et un flot f’ de


Gf = (X, U 0 ). Alors la somme f + f 0 est un flot de G de valeur |f + f 0 |
=|f | + |f 0 |
Chemin améliorant Définition Un chemin p améliorant du graphe G de
flot f est un chemin élémentaire de s vers t dans le réseau résiduel Gf .

SMI-S5 2 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 6 Probl‘emes du flot maximum

La cpacité résiduelle de p est la quantité maximale transportée via les arcs


du chemin p :
cf (p) = min{cf (u) : u ∈ p}
Lemme Soit G=(X, F) un réseau de transport, soit f un flot de G et soit p
un chemin améliorant de Gf . On définit un efonction fp :

fp (u) = cf (p)siu ∈ p, −cf (p)siu ∈ p(inverse), sinon0
Alors fp est un flot de Gf de valeur |fp | = cf (p) > 0
Coupe

• Soient X1 un ensemble de sommets de G, et X2 = X−X1 son complémentaire


dans G tellle que s ∈ X1 et t ∈ X2 . La coupe de G est C = (X1 , X2 ) =
{u/u ∈ X1 xX2 }.

• Elle sépare un sommet a d’un sommet b lorsque a ∈ X1 et b ∈ X2 .

• Si f est un flot de G, alors le flot net à travers la coupure (X1 , X2 ) est


f (X1 , X2 )

• La capacité de la coupe est notée c(C) = u∈(X1 xX2 ) c(u).


P

• Une coupe minimum d’un réseau est une coupe dont la capacité est
minimale à toutes les coupes du réseau.

• La coupe inverse de C est C 0 = {u/u ∈ X2 xX1 }

• Le flot est compatible si pour tout u , f (u) ≤ c(u)

• Un flot est complet si tous les chemins de s à t sont saturés.

Lemme Pour tout flot f compatible et tout coupe C séparant s et t, la valeur


du flot v(f ) = f (C) − f (C 0 ).
Aussi v(f ) ≤ c(C)
L’égalité implique la maximalité du flot et la minimalité de la coupe.
Flot maximum et coupe minimum Théorème Si f est un flot dans G d
source s et de puits t alors les contitions suivantes sont équivalentes:

• f est un flot maximam de G

SMI-S5 3 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 6 Probl‘emes du flot maximum

• Gf ne contient aucun chemin améliorant

• |f | = c(X1 , X2 ) pour la coupe de G.


Algorithme Ford-Fulkerson: Phase de marquage
Marquer la source s par +
Tant que cela est possible
Choisir un sommet x non marqué vérifiant l’une des deux conditions:
si il exite y ∈ X tel que :

y est marqué et y ∈ P (x))et(f (y, x) < c(y, x)

Alors marquer + le sommet x.


S’il exsite y ∈ X tel que :

y est marqué et y ∈ S(x))et(f (y, x) > 0

Alors marquer - le sommet x.


Noté Γp (x) = y: Prédécesseur de x dont le marquage est y.
Si le puits t est marqué on s’arrête et le flot actuel n’est pas maximal. La
chaine améliorante est trouvée.
Si le puits t n’est pas marqué, alors la chaine n’existe pas.
Algorithme Ford-Fulkerson: Phase d’augmentation
Tant que qu’il existe une chaı̂ne améliorante p faire
Augmenter le flux sur la chaine améliorante comme suit:

• δ + = min{c(u) − f (u)}, pour tout arc direct u de p.

• δ − = min(f (u)), pour tout arc indirect u de p.

• δ − = min{δ − , δ + }

• pour tout arc direct u faire : f (u) = f (u) + δ

• pour tout arc indirect u faire : f (u) = f (u) − δ

Lorsque n’existe pas de chaine améliorante, le flot est optimal.

Flot de départ (f0 ) LE flot intial est de valeur V (f0 ) = 37.

SMI-S5 4 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 6 Probl‘emes du flot maximum

Montrer que le chemin améliorant


est p =(S, C, G, F, et P) et cf (p) = 4
Augmentation du flot f0

Montrer que le flot


maximal est 57 à la fin de l’algorithme.
Flot à valeur maximal et à coût minimum
Problème
- Transporter le maximum entre s et t
- Coût de transport doit être minimal

Définition

• Réseaux de transport R=(X, U, C)

• S: Source, et t : puits

• A chaque arc u = (i, j) sont associés: la capacité c(u) > 0 et le coût


unitaire p(i, j)

• Le coût du flux f (i, j) sur l’arc u est : f (i, j) ∗ p(i, j)

SMI-S5 5 a.u: 2022-2023/uit


Recherche opérationnelle Chapitre 6 Probl‘emes du flot maximum

P
Le coût d’un flot f est la somme des coûts sur tous les arcs (i,j) f (i, j) ∗
p(i, j)
Exercice

1. Modéliser ce problème un flot maximal


2- Trouver le graphe d’écarts
3- Trouver la coupe minimale et sa valeur
4- Déduire la valeur du flot maximal.

SMI-S5 6 a.u: 2022-2023/uit

Vous aimerez peut-être aussi