Académique Documents
Professionnel Documents
Culture Documents
Recherche Opérationnelle :
Programmation liniéaire
Chapitre 1
Author: Filière:
Pr. Khalil IBRAHIMI Licence SMI, S5
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:
• 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
• A partir des années 50, la recherche opérationnelle fait son entrée dans
les entreprises;
• Finance;
• Economie;
• Santé;
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
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
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.
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.
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
M ax z = 6x1 + 4x2
3x1 + 9x2 ≤ 81
4x1 + 5x2 ≤ 55
2x1 + x2 ≤ 20
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
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
x5 = 7 − x1 − x2 + x3
x6 = 4 − x1 + 2x2 − 3x3
x1 , x2 , x3 , x4 , x5 , x6 ≥ 0
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
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.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
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.
.
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/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 )
x1 = 8 + x3 /6 + x5 /6 − x6 /3
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}
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.
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.
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
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
−xj −xk
yr0 yi0
= min{ |yij > 0}
yrj yij
pour tout i.
Algorithme (forme condensée des tableaux)
(zj −cj )
8. Aussi la valeur du cofficient de z devient − yrj
de la colonne pivot.
−xr −xk
zj −cj
z= z0 ... − yrj
... zk − ck
... ...
y
1j
xB (1) =y10 ... − yrj ... ... y1k ...
xj = yyr0rj
... 1/yrj ... ... yrk
yrj
...
xB (j) =
y
xB (m) =ym0 ... − ymj
rj
... ... ymk ...
−x1 −x2
z= 0 -5 -8
x3 = 2 1 1
x4 = 0 1 -2
x5 = 1 -1 4
−x1 −x5
z= 2 -7 2
−x4 −x5
z= 9 14 9
x1 = 1 2 1
Primal maximiser n
X
cj x j
j=1
xj ≥ 0 pour j = 1, ..., n
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
X
xi = b0i − a0ij xj i ∈ B
j∈N
x1 ≤ 1000
x2 ≤ 500
x3 ≤ 1500
3x1 + 6x2 + 2x3 ≤ 6750
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
y1 + 3y4 ≥ 4
y2 + 6y4 ≥ 12
y3 + 2y4 ≥ 3
y1 ≥ 0, y2 ≥ 0, y3 ≥ 0, y4 ≥ 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 (30 − x1 − x2 − 3x3 ) = 0
y2 (24 − 2x1 − 2x2 − 5x3 ) = 0
y3 (36 − 4x1 − x2 − 2x3 ) = 0
Exemple
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
• Graphe est non orienté si ses arêtes sont constitués des couples de
sommets non ordonnés.
• 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.
• cycle est une chaine dont les extrémités sont confondues (x=y).
• Un graphe est connexe s’il ne contient aucun cycle (il existe au moins
une chaine entre toute paire de sommets).
Définition
• 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
Graphe orienté
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
• Cas d’un graphe non orienté. On donne pour chaque sommet i la liste
de ses voisins (S(i) ∪ P (i))
• Un graphe est connexe s’il existe au moins une chaı̂ne entre toute paire
de ses sommets
• 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.
• Exemple d’arbre:
Arbre binaire
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.
est la longueur de Γ
est x ou y.
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 )
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
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.
• Algorithme de Dijkstra.
• Objectif :
Recherche des plus courts chemins d’un sommet à tous ses descendants.
• Algorithme de Bellman
-S’il n’y a pas de circuits dans R
-Le seul sommet sans prédésseurs est la racine s.
• la racine d(s)=0.
Z = Z ∪ {x}
pour tout v ∈ X − Z faire δv = min{δv , δx + d(x, v)}
fin
Fin Tant que
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.
Modélisation
Chaine améliorante
• Si l’arc u ∈
/ U , f (u) = 0.
• Une coupe minimum d’un réseau est une coupe dont la capacité est
minimale à toutes les coupes du réseau.
• δ − = min{δ − , δ + }
Définition
• S: Source, et t : puits
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