Prof.Rachid NACIRI
Introduction générale 1
3 Méthode du simplexe 21
3.1 Notion de matrice de base et de Solution de base . . . . . . . . . . . . . 21
3.2 Algorithme primal du simplexe . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.1 Théorème fondamentale de la programmation linéaire . . . . . . 25
3.3 Premier critère de Dantzig . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4 Deuxième critère de Dantzig . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4.1 Tableau simpliciale . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5 Méthode à deux phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
i
Introduction générale
1
Chapitre 1
Objectifs du chapitre :
æ Présentation des notions de bases liées à la formulation d’un problème de
programmation linéaire.
æ Pouvoir modéliser un problème économique en un problème de program-
mation linéaire.
Un programme linéaire (en bref, PL) est un problème d’optimisation qui consiste à
maximiser ou à minimiser une fonction linéaire et qui dépend de n variables satis-
faisant un nombre d’équations et inéquation dites contraintes. En langage mathéma-
tique, on décrira de tels modèles de la manière suivante :
[max] ou [min] z = c1 x1 + . . . + cn xn
s.c
:
a11 x1 + . . . + a1n xn (=, ≤, )b1
.. .. ..
. . .
a x + . . . + a xn (=, ≤, )b
i1 1 in i
. . .
..
.. ..
am1 x1 + . . . + amn xn (=, ≤, )bm
x1 , x2 , . . . , x n ∈ R
o Les coefficients ( aij )1≤ j≤n , (bi )1≤i≤m et (ci )1≤i≤n doivent avoir une valeur bien
1≤ i ≤ m
déterminée (avec certitude) et peuvent être positifs, négatifs ou nuls.
2
3 chapitre 1. Formulation d’un programme linéaire
.
o Les variables x1 , .., xn , sont dite variables de décision, ils constituent les incon-
nues du problème.
o La fonction z( x1 , . . . , xn ) est dite fonction objective.
Definition 1.2.1
o Un programme linéaire est dite sous forme standard s’il est écrit sous la
forme :
[max] z = c1 x1 + . . . + cn xn
s.c
:
a11 x1 + . . . + a1n xn = b1
.. .. ..
. . .
a x + . . . + a xn = b
i1 1 in i
.. .. ..
. . .
am1 x1 + . . . + amn xn = bm
x1 , x2 , . . . , x n ≥ 0
o Un programme linéaire est dite sous forme canonique s’il est écrit sous
la forme :
[max] z = c x + . . . + c x [min] z = c1 x1 + . . . + cn xn
1 1 n n
s.c : s.c
:
a11 x1 + . . . + a1n xn ≤ b1 a11 x1 + . . . + a1n xn ≥ b1
..
.. .. .. .. ..
. . . . . .
ou
ai1 x1 + . . . + ain xn ≤ bi
a x + . . . + a xn ≥ b
i1 1 in i
.. .. .. .. .. ..
. . .
. . .
am1 x1 + . . . + amn xn ≤ bm am1 x1 + . . . + amn xn ≥ bm
x1 , x2 , . . . , x n ≥ 0 x1 , x2 , . . . , x n ≥ 0
Remarque 1.2.1
Tout programme linéaire peut être mis sous forme standard respectivement sous
forme canonique. En effet,
Ê Tout problème de maximisation peut être transformé en un problème de
minimisation et vice versa :
max[z( x )] = min[−z( x )]
0
Ë Une variable négative xi peut être remplacée par une variable positive xi ,
0
telle que xi = − xi
Ì Une variable xi de signe quelconque peut être remplacée par deux va-
riables positives xi+ , xi− , telle que xi = xi+ − xi−
n
Ì Une équation de type ∑ aij x j = bi peut être remplacée par les deux in-
j =1
équations suivantes :
n n
∑ aij x j ≤ bi et ∑ aij x j ≥ bi
j =1 j =1
n n
Í Toute équation de type ∑ aij x j ≥ bi (respectivement ∑ aij x j ≤ bi ) peut
j =1 j =1
n n
être remplacée par l’inéquation ∑ − aij x j ≤ −bi (respectivement ∑ −
j =1 j =1
aij x j ≥ −bi )
n
Î Toute inégalité de type ∑ aij x j ≤ bi peut être remplacée par une égalité,
j =1
soit : n n
∑ aij x j ≤ bi ⇔ ∃xe ≥ 0 telle que ∑ aij x j + xe = bi
j =1 j =1
Exemple 1.2.1
Considérons le programme linéaire suivant :
[min] z = 2x1 − 5x2 + 4x3 − x4
s.c :
x1 − x2 + x3 ≤ 4
(P ) :
3x − 5x + 4x + x = 10
1 2 4 3
2x1 + 5x2 + 4x3 ≥ 6
x1 , x3 ≥ 0, x2 ≤ 0, x4 ∈ R
Forme standard : Pour la forme standard les variable de décision doivent être posi-
tives. En effet, on remarque que :
ä La variable de décision x2 est négative, on pose alors x2+ = − x2
ä La variable de décision x4 est de signe quelconque , donc il existe x4+ , x4−
positifs tels que x4 = x4+ − x4−
Donc après substitution on obtient :
[min] z = 2x1 + 5x2+ + 4x3 + x4− − x4+
s.c :
x1 + x2+ + x3 ≤ 4
(P ) :
3x + 5x + + 4x + − 4x + + x = 10
1 2 4 4 3
2x1 − 5x2+ + 4x3 ≥ 6
x1 , x3 , x2+ , x4+ , x4− ≥ 0
On obtient alors,
[min] z = 2x1 + 5x2+ + 4x3 + x4− − x4+
s.c :
x1 + x2+ + x3 + e1 = 4
(P ) :
3x + 5x + + 4x + − 4x + + x = 10
1 2 4 4 3
2x1 − 5x2+ + 4x3 − s1 = 6
x1 , x3 , x2+ , x4+ , x4− ≥ 0
Produits M1 M2 ... Mm
P1 a11 a12 ... a1m
P2 a21 a22 ... a2m
.. .. .. ..
. . . ... .
Pn an1 an2 ... anm
Sachant que chaque unité de produits Pi est vendu par ci DH, 1 ≤ i ≤ n. Formuler le
problème de la recherche d’un plan de production maximisant le chiffre d’affaires de
l’entreprise sous forme d’un programme linéaire.
z = c1 x1 + . . . + c n x n
o Modèle.
Exemple 1.4.1
Une raffinerie souhaite utiliser quatre types de pétrole pour produire trois sortes
d’essence, A, B et C, dont les prix de vente sont, respectivement, 55$, 45$ et 35$
pour chaque baril vendu. L’information relative aux types pétrole est résumée dans
le tableau suivant :
L’essence A ne doit pas être composée de plus de 30% de pétrole de type 1, ni plus
de 50% de pétrole de type 3, mais elle doit être composée d’au moins 40% de pétrole
de type 2. L’essence B doit être composée d’au moins 10% de pétrole de type 2, mais
d’au plus 50% de pétrole de type 1. L’essence C ne doit pas être composée de plus
de 70% de pétrole de type 1.
Objectif :
La difficulté dans ce type de problème réside dans le fait de trouver une notation
adéquat pour exprimer les variable de décision. Ici On doit déterminer les quantité
d’essence de type A,B,C à fabriquer, mais chaque essence est composé quatre type de
pétrole
On dispose d’une quantité limiter pour chaque matière première. D’où les contraintes
de capacité suivantes :
Chaque essence est un mélange de quatre type de pétrole avec des proportions bien
déterminées. D’où les contraintes de mélange suivantes :
Le chiffre d’affaires associé à une production xij en tenant compte des charge ( Pétrole
utilisé) est :
z = 55( x1A + x2A + x3A + x4A ) + 45( x1B + x2B + x3B + x4B ) + 35( x1C + x2C + x3C + x4C )
−30( x1A + x1B + x1C ) − 60( x2A + x2B + x2C ) − 40( x3A + x3B + x3C ) − 50( x4A + x4B +
x4C )
Exemple 1.4.2
Le tableau suivant représente les demandes journalières en chauffeurs dans une
entreprise de transport
Lu Ma Me Je Ve Sa Di
13 18 21 16 12 25 9
Les chauffeurs travaillent cinq jours d’affiliée (et peuvent donc avoir leurs deux jours
adjacents de congé n’importe quand dans la semaine).
Objectif :
Déterminer les effectifs formant les sept équipes possibles de chauffeurs de manière
à:
ä Couvrir tous les besoins,
ä Engager un nombre minimum de chauffeurs.
x1 + x4 + x5 + x6 + x7 ≥ 13 lundi
x1 + x2 + x5 + x6 + x7 ≥ 18 Mardi
x1 + x2 + x3 + x6 + x7 ≥ 21 Mercredi
x1 + x2 + x3 + x4 + x7 ≥ 16 Jeudi
x1 + x2 + x3 + x4 + x5 ≥ 12 vendredi
x2 + x3 + x4 + x5 + x6 ≥ 25 Samedi
x3 + x4 + x5 + x6 + x7 ≥ 9 Dimanche
z = x1 + x2 + x3 + x4 + x5 + x6 + x7
Objectifs du chapitre :
æ Interprétation graphique d’un programme linéaire .
æ Méthode pour la résolution graphique d’un programme linéaire à deux
variables.
12
13 chapitre 2. Résolution graphique de programmes linéaires à deux variables
Remarque 2.1.1
Pour déterminer le demi-plan a considérer pour une contrainte, on choisi un
point quelconque situé hors de la droite : s’il vérifie la contrainte, l’ensemble des
solutions cherché et le demi-plan contenant ce point, sinon, il s’agit de l’autre
demi-plan.
Exemple 2.1.1
Considérons la contrainte :
(C ) : 4x1 + 5x2 ≥ 20
o La région admissible est vide. Dans ce cas le problème est sans solution.
contraintes contradictoires
Exemple 2.1.2
Considérons le système suivant :
4x + 5x2 ≤ 20
1
3x1 + 10x2 ≤ 30
x ≥ 0, x ≥ 0
1 2
La région vérifiant les deux contrainte est l’intersection des deux demi-plan (le po-
lygone ABCD ) :
Exemple 2.1.3
(Région admissible non bornée)
Considérons le système suivant :
2x − x1 ≤ 1
2
6x2 − x1 ≤ 9
x ≥ 0, x ≥ 0
1 2
Après avoir trouver la région admissible du système, il reste a trouver le ou les points
de cette région ou la fonction objective sera optimale (maximale ou minimale).
o L’ensemble des point appartenant a la région admissible est dites solution ad-
missible ou solution réalisable.
o Tout point qui optimise (maximise ou minimise ) la fonction objective est dite
solution optimale.
La question qui se pose à ce stade est de savoir comment trouver graphiquement la
(ou les) solution optimale d’un problème de programmation linéaire. En effet, consi-
dérerons le programma linéaire à deux variables suivant :
[max] z= ax1 + bx2 ⇐ Fonction objective
s.c :
a x + a12 x3 ≤ b1
11 1
a21 x1 + a22 x2 ≤ b2
x ≥ 0, x ≥ 0
1 2
−a z
x2 = x1 +
b b
Remarque 2.1.2
Pour une famille de droites parallèle (ayant la même pente), les droites qui
occupe la position la plus élavée et celle qui a le plus grande ordonnée à l’origine
et vice-versa.
Soit,
−a z
Az = { x1 + , z ∈ R}
b b
−a
Az représente la famille de droites parallèles de pente b (constante), et d’ordonnée à
l’origine bz . Pour z fixé la droites Az représente l’ensemble des point réalisant le profil
Remarque 2.1.3
o Pour une valeur fixé de z, on note par la suite l’intersection entre la droite
Az et la région admissible D par Az D
T
vide)
Exemple 2.2.1
Région admissible bornée Considérons le programme linéaire suivant :
[max] z= ax1 + bx2 ⇐ Fonction objective
s.c :
4x + 5x2 ≤ 20
1
3x1 + 10x2 ≤ 30
x ≥ 0, x ≥ 0
1 2
Après avoir représenté la région admissible (le polygone (ABCD)) ainsi que les
droites correspondantes au différentes valeur de z on obtient le graphe suivant :
D = { D } 6= ∅, A5 D 6= ∅, A10 D 6= ∅, A16 D = { B} 6= ∅,
\ \ \ \
A0
et
D=∅
\
∀z > 16 A10
Exemple 2.2.2
(Région admissible bornée (solution optimal infinie))
Considérons le programme linéaire suivant :
max z = 2, 5x1 + x2
sc
3x1 + 5x2 ≤ 15
5x1 + 2x2 ≤ 10
Exemple 2.2.3
(Région admissible non bornée (solution optimal unique))
Considérons le programme linéaire suivant :
max z = −3x1 + 4x2
sc
x1 − x2 ≤ −1
0, 5x1 + x2 ≤ 2
Exemple 2.2.4
(Région admissible non bornée (solution optimal infinie))
Considérons le programme linéaire suivant :
max z = − x1 + 2x2
sc
3x1 + 5x2 ≤ 15
5x1 + 2x2 ≤ 10
Exemple 2.2.5
(Région admissible non bornée (Pas de solution optimal))
Considérons le programme linéaire suivant :
max z = x1 + x2
sc
3x1 + 5x2 ≤ 15
5x1 + 2x2 ≤ 10
Méthode du simplexe
Objectifs du chapitre :
æ Présenter la méthode du Simplexe qui est une procédure algébrique per-
mettant de résoudre les programmes linéaires avec plus de deux variables.
Dans tout ce qui suit, désigne par (P ) le programme linéaire suivant écrit sous sa
forme standard :
[max] z = c1 x1 + . . . + cn xn
s.c
:
a11 x1 + . . . + a1n xn = b1
.. .. ..
. . .
(P ) :
a x + . . . + a xn = b
i1 1 in i
.. .. ..
. . .
am1 x1 + . . . + amn xn = bm
x1 , x2 , . . . , x n ≥ 0
21
22 chapitre 3. Méthode du simplexe
Remarque 3.1.1
Le programme P peut être écrit sous la forme matricielle suivante :
[max] z = t cx
s.c :
(P ) :
Ax = B
x ≥ 0
où,
a a12 ... a1n
11
.. .. .. ..
. . . .
b1 c1 x1
. . .
. , c = .. et x = ..
A=
ai1 ai2 ... ain ,b= .
. .. .. ..
.. . . . bm cn xn
am1 am2 ... amn
Remarque 3.1.2
Puisque rang( A) = m, donc il existe une matrice B carrée (m × m) extraite de A
qui est inversible
Definitions 3.1.1
Par la suite, si B est une base de (P ), on notera par xB les vecteurs de base associés à
B et par xN les vecteurs hors base.
Exemple 3.1.1
Considérons le système suivant :
5x + 2x2 + 3x3 + 4x4 + x5 = 22
1
5x1 + x2 + x3 + 5x4 + 4x5 = 22
4x + 2x + 3x + 3x = 18
1 2 3 4
Alors,
5 2 3 4 1 22
A=
5 1 1 5 4
, b = 22
4 2 3 3 0 18
Ê
5 2 4
B= 5 1 5 Est une matrice de base
4 2 3
x 2
1
x2 = 2 la solution de base réalisable non-dégénérée associée à B
xB =
x4 2
! !
x3 0
xN = = vecteurs hors bases
x5 0
Ë
5 2 3
B= 5 1 1
Est une matrice de base
4 2 3
x1 4
xB =
x2 = 4
est une solution de base non-réalisable
x3 −2
! !
x4 0
xN = = vecteurs hors bases
x5 0
Ì
5 3 4
B= 5 1 5 Est une matrice de base
4 3 3
x1 0
x3 = 2 la solution de base réalisable dégénérée associée à B
xB =
x4 4
! !
x2 0
xN = = vecteurs hors bases
x5 0
x1 0
x2 0
Í xB = x3 = 4 est une solution réalisable mais pas de base.
x 2
4
x5 2
Definitions 3.2.1
o Un ensemble non vide X est dite convexe si :
∀ x, y ∈ X et α, β ∈ [0, 1] avec α + β = 1; on a αx + βy ∈ X.
D = { x = ( x1 , . . . , xn ) ⊂ Rn /Ax = b et x ≥ 0}
et
Z = {z = c1 x1 + . . . + cn xn /( x1 , . . . , xn ) ∈ D}
Remarque 3.2.1
Théorème 3.2.1
o Si P admet une solution de base réalisable, alors P admet une solution
de base réalisable.
o Si P admet une solution de base optimale, alors P admet une solution
de base optimale.
Remarque 3.2.2
Pour un problème de programmation linéaire
Exemple 3.2.1
Résoudre le programme linéaire suivant en utilisant le théorème fondamentale du
simplexe :
max z = x1 + 2x2
sc
x1 + x2 + x3 = 6
x2 + x4 = 10
x1 , x2 , x3 , x4 , ≥ 0
Le premier critère de Dantzig dite aussi condition d’optimalité donne une condition
suffisante pour qu’une solution de (P ) soit optimale.
Remarque 3.3.1
Soit B une de P , Alors on peut toujours s’arranger pour écrire l’équation Ax = b
sous la forme :
B xB + N xN = b,
x1 !
. xB
avec A = ( B\ N ), x = .
. = xN
xn
Théorème 3.3.1
Soit B une base du programme linéaire, et x B la solution de base correspondante.
cN = cn − cb B−1 N ≤ 0 ⇒ z( x B ) = max Z .
!
yB
Démonstration. Soit y = , une solution réalisable de (P ), d’après la remarque
yN
on a
B yB + N yN = b
ce qui implique
yb = B−1 b − B−1 Ny N
donc,
z(y) = cB yB + cN yN
= cB (B −1 b − B −1 N yN ) + cN yN
= c B B −1 b + ( c N − c B B −1 N ) y N
Dans le cas le premier critère n’est pas satisfaits, donc il faut essayer de trouver une
nouvelle solution réalisable qui augmentera la valeur de la fonction économique. C’est
le deuxième critère de Dantzig donne une méthode pour
Definition 3.4.1
On dit qu’un programme linéaire sous forme standard, est sous forme cano-
nique par apport à une base B. Si B est la matrice identité et les coûts correspon-
dant aux variables de base sont nuls.
Remarque 3.4.1
Si le programme linéaire (P ) est sous forme canonique par apport une base B
alors :
xB = b − N xN
et
z = cB b + (cN − cB N ) xN
Exemple 3.4.1
On Considère le programme linéaire suivant :
max z = 4x1 + 5x2
sc
2x1 + x2 + x3 = 8
x + 2x + x = 7
1 2 4
x2 + x5 = 3
x1 , x2 , x3 , x4 , x5 ≥ 0
On a
x1 4
2 1 1 0 0 x2 8 5
A= x = x3 b = 7 c= 0
1 2 0 1 0
0 1 0 0 1 x 3 0
4
x5 0
Alors le programme linéaire est sous forme canonique par apport à B avec,
1 0 0 x3 !
x1
B=
0 1 0 avec xB = x 4
xN =
x2
0 0 1 x5
! 8
0
Pour xN = 7 ≥ 0.
on a xB =
0
3
Théorème 3.4.1
Soit B une base du programme linéaire, et x B la solution de base réalisable
correspondante.
S’il existe 1 ≤ r ≤ m − n tel que cNr > 0, alors soit :
o Le problème (P ) admis une solution optimale non bornée.
0
o Il existe une base B telle que z( x B 0 ) ≥ z( x B ).
!
xB = B −1 b
Démonstration. Comme x B est une solution de base , alors x B = .
xN = 0
Construisons une nouvelle solution en changeant la valeur d’un élément du vecteur
xN (hors-base) soit :
0
xN = (0, 0, . . . , 0) −→ xN = (0, . . . , xr , . . . , 0) avec a > 0,
| {z } |{z}
longueur m−n r −meposition
0
x B = B −1 b − N x N
D’autre part on a
r-ème colonne
z}|{ 0
a1m+1 ... a1r ... a1n
.
..
.. .. .. .. ..
0
. . . . .
B −1 NxN
= xr
aim+1 ... air ... ain
..
.. .. .. .. .. .
. . . . .
0
amm+1 amr ... amn
x ×a a
r . 1r .1r
..
.
.
=
xr × air
= xr a
ir
.. .
..
.
xr × amr amr
xB ≥ 0 ⇔ ∀ 1 ≤ i ≤ m bi − xr × air ≥ 0
∀ xr > 0, bi − a × air ≥ 1 ≤ i ≤ m.
Donc,
0
z ( x B ) = c B b + c N x N = z ( x 0 ) + c Nr × x r
d’où
lim z( xB ) = lim z( x0 ) + cNr × xr = +∞
xr →+∞ xr →+∞
bi
xr = min{ , tel que air > 0}
air
Remarque 3.4.2
Supposons qu’on est dans le deuxième cas du théorème précédent. Donc il existe
1 ≤ i0 ≤ m
bi bi
xr = min{ , tel que air > 0} = 0
air a i0 r
Alors, D’après l’équation (3.1) on a
b − xr × a1r
x1 b a 1
1 .1r ..
..
.. .
.
. . .
bi − x r × a i r
xB = = bi 0 − x r a i 0 r
x i0 = | 0 {z 0
}
.. ..
.
..
=0
. . ..
.
xm bm amr
bm − xr × amr
Donc ce cas on dit que la variable xi0 est sortie de la base et que la variable xr
est entré en base. Cette opération est dite pivotage.
Exemple 3.4.2
On Considère le programme linéaire suivant :
max z = 4x1 + 5x2
sc
2x1 + x2 + x3 = 8
x + 2x + x = 7
1 2 4
x2 + x5 = 3
x1 , x2 , x3 , x4 , x5 ≥ 0
On a
x1 4
2 1 1 0 0 x2 8 5
A= x = x3 b = 7 c= 0
1 2 0 1 0
0 1 0 0 1 x 3 0
4
x5 0
o Trouver une base réalisable.
Etape 1 :
On commence par trouver une base réalisable initiale du programme linéaire. par
apport a laquelle ce dernier est canonique. En effet une base évidente est
1 0 0 x
3
!
x1
B=
0 1 0 avec xB =
x4
xN =
x2
0 0 1 x5
! 8
0
Pour xN = 7 ≥ 0. Donc B est une base réalisable.
on a xB =
0
3
On a
z = cB b + (cN − cB N ) xN = 0
| {z }
cN =(4,5)
Donc d’après le premier critère de Dantzig la solution n’est pas optimale. Ici les deux
composante de cN sont positif
o Augmenter la valeur de z
bi 8 7 3
min{ , tel que air > 0} = min{ , , } = 3
air 1 2 1
donc x2max = 3 ce qui implique que x5 sort de la base puisque il aura une valeur
nulle et x2 entre dans la base. Donc la nouvelle valeur de z est 15.
Note : Pour que le système soit sous forme canonique par apport à la nouvelle
solution de base il faut que le coût de la variable x2 soit nul. i.e c2 = 0. et la base et
On pose :
2 0 1 0 -1
A1 =
1 0 0 1 -2
0 1 0 0 1
on a !
x1
z = 15 + 4x1 − 5x5 = 15 + (4 − 5)
| {z } x5
cN
Donc cN 1 >0, donc la solution n’est pas optimale, alors on peut augmenter la valeur
de x1
o Augmanter la valeur de z
D’où,
5 − |{z}
2 × x1
x3 a11
1 − |{z}
1 × x1
x4 =
a21
x2
3 − 0 × x1
|{z}
a31
bi 5 1
min{ , tel que air > 0} = min{ , } = 1
air 2 1
donc x1max = 1 ce qui implique que x4 sort de la base puisque il aura une valeur
nulle et x1 entre dans la base. Donc la nouvelle valeur de z est 19
On voit bien que la valeur de z a augmentée : z = 15 → z = 19
Note : Pour que le système soit sous forme canonique par apport à la nouvelle
solution de base il faut que le coût de la variable x1 soit nul. i.e c1 = 0. et la base et
égale à la matrice identité. En effet,
!
x1
z = 15 + (cN − cB N ) xN = 15 + (4 − 5)
| {z } x5
cN =(4 −5)
!
1 + 2x5 − x4
= 15 + (4 − 5) = 19 − 4x4 + 3x5
x5
On pose :
0 0 1 -2 3
A1 =
1 0 0 1 -2
0 1 0 0 1
on a !
x4
z = 19 − 4x4 + 3x5 = 19 + (−4 3)
| {z } x5
cN
Donc cN 2 = 3 >0, donc la solution n’est pas optimale, alors on peut augmenter la
valeur de x5
o Augmenter la valeur de z
D’où,
3 − |{z}
3 × x5
a15
x3
1 − (−2) × x5
x1 =
| {z }
a25
x2
3− 1 ×x
|{z} 5
a35
bi 3 3
min{ , tel que air > 0} = min{ , } = 1
air 3 1
donc x5max = 1 ce qui implique que x3 sort de la base puisque il aura une valeur
nulle et x5 entre dans la base. Donc la nouvelle valeur de z est 22
On voit bien que la valeur de z a augmentée : z = 19 → z = 22
Note : Pour que le système soit sous forme canonique par apport à la nouvelle
solution de base il faut que le coût de la variable x5 soit nulle. i.e c5 = 0. et la
nouvelle base est égale à la matrice identité. En effet,
!
x4
z = 19 + (cN − cB N ) xN = 19 + (−4 3)
| {z } x5
cN =(−4 3)
!
x4
= 19 + (−4 3) = 22 − 2x4 − x3
1 + 32 x4 − 31 x3
Soit (P ) un programme linéaire sous forme canonique par apport à une base B donc
d’après la remarque :
z = z + cN xN (⇔ z − cN xN = z)
P: B xB + N xN = b
x , x ≥ 0
B N
Le système précèdent peut être sous forme d’un tableau qu’on appelle tableau sim-
pliciale équivalant à (P ) :
z }| {
z }| { vecteur de base
z x1 x2 ... xm xm +1 xm +2 ... xn
z 1 0 0 ... 0 -cm+1 -cm+2 ... -cn z
x1 0 b1
x 1 0
2 0 .. b2
xB . B= . N .. La solution de base
.. 0
.
0 1
xm 0 bm
Exemple 3.4.3
Le programme linéaire suivant est sous forme canonique par apport à la base associé
aux vecteur de base ( x2 , x5 , x6 ), on a :
z = 5 + 4x1 + x3 − 2x4
z x1 x2 x3 x4 x5 x6
x + x2 − x3 + 3x4 = 5
1 z -4 -1 z=5
1 0 2 0 0
P : − x1 + x5 − x4 = 2 ⇔ x2 0 1 1 -1 3 0 0 b1 = 5
2x1 + 2x3 + x6 = 4 x5 0 -1 0 0 -1 1 0 b2 = 2
x1 , . . . , x6 ≥ 0
x6 0 2 0 2 0 0 1 b3 = 4
Exemple 3.4.4
On Considère le programme linéaire suivant :
max z = 4x1 + 5x2
sc
2x1 + x2 + x3 = 8
x + 2x + x = 7
1 2 4
x2 + x5 = 3
x1 , x2 , x3 , x4 , x5 ≥ 0
z x1 x2 x3 x4 x5
z 1 − c N1 = − 4 − c N2 = − 5 0 0 0 z=0
x3 0 2 1 1 0 1 b1 = 8
x4 0 1 2 0 1 0 b2 = 7 La solution de base
x5 b3 = 3
0 0 1 0 0 0
On a cN1 , cN2 > 0, donc la solution n’est pas optimale. On choisi d’augmenter la
valeur de x2 . La colonne contenant les coefficients de la variable x2 est dite colonne
pivot.
colonne pivot
z}|{
z x1 x2 x3 x4 x5
z 1 -4 -5 0 0 0 z=0
x3 0 2 1 1 0 0 b1 = 8
x4 0 1 2 0 1 0 b2 = 7
x5 0 0 1 0 0 1 b3 = 3
b1 b2 b3
min{ , , }
a21 a22 a23
. la ligne qui correspond a la valeur minimale est dite ligne pivot, l’intersection
entre la colonne pivot et la ligne pivot est dite pivot
z x1 x2 x3 x4 x5
z 1 -4 -5 0 0 0 z=0
b1 8
x3 0 2 1 1 0 0 b1 = 8 a21 = 1
b2 7
x4 0 1 2 0 1 0 b2 = 7 a22 = 2
b2 3
x5 0 0
1 0 0 1 b3 = 3 a23 = 1 ⇐ valeur minimale
pivot
z x1 x2 x3 x4 x5 z x1 x2 x3 x4 x5
z 1 -4 -5 0 0 0 0 z 1 -4 -5 0 0 0 0
x3 0 2 1 1 0 0 8 ⇒ x3 0 2 1 1 0 0 8 Ligne1
x4 0 1 2 0 1 0 7 x4 0 1 2 0 1 0 7 Ligne2
0 0
1 0 0 1 3
x5 1 1 1 1 1 1 1 x5 0 0
1 0 0 1 3 Ligne3
Puis, on cherche une combinaison entre la ligne pivot est chaque ligne du tableau
y compris la ligne des coûts afin d’annuler les composantes de la colonne pivot, la
colonne de x2 dans ce cas.
ä Annuler la valeur de a22 = 2 : Pour annuler la valeur de a22 il suffit de
remplacer la ligne2 par ligne2 − 2 × ligne3 .
ä Annuler la valeur de a12 = 1 : Pour annuler la valeur de a12 il suffit de
remplacer la ligne1 par ligne1 − ligne3 .
ä Annuler la valeur de c2 = −5 : Pour annuler la valeur de c2 il suffit de
remplacer la ligne0 par ligne0 + 5 × ligne3 .
z x1 x2 x3 x4 x5
z 1 −4 → −4 + 5 × 0 −5 → −5 + 5 × 1 0 → 0 + 5 × 0 0 → 0 + 5 × 0 0 → 0 + 5 × 1 0 → 0 + 5 × 3
x3 0 2 → 2−0 1 → 1−1 1 → 1−0 0 → 0−0 0 → 0−1 8 → 8−3
x4 0 1 → 1−2×0 2 → 2−2×1 0 → 0−2×0 1 → 1−2×0 0 → 0−2×1 7 → 7−2×3
x2 0 0
1 0 0 1 3
z x1 x2 x3 x4 x5
z 1 -4 0 0 0 5 15
x3 0 2 0 1 0 -1 5
x4 0 1 0 0 1 -2 1
x2 0 0 1 0 0 1 3
Note : Afin de calculer les valeurs de chaque cellule du tableau assez facilement,
on peut procédé de la manière suivante (règle des carrés) : par exemple si on veut
0
calculer la nouvelle valeur de A qu’on note A ;
colonne pivot
z}|{
A ... B
.. ..
. ? .
C ... pivot ⇐ Colonne pivot
On a
0 A × pivot − B × D
A =
pivot
. Deuxième itération :
On a cN1 > 0, donc la solution n’est pas optimale. Donc, on peux augmenter la
valeur de x1 .
colonne pivot
colonne pivot z}|{
z
z}|{
x1 x2 x3 x4 x5 z x1 x2 x3 x4 x5
z 1 -4 0 0 0 5 15 z 1 -4 0 0 0 5 15
⇒ b1 5
x3 0 2 0 1 0 -1 5 x3 0 2 0 1 0 -1 5 a11 = 2
b2 1
x4 0 1 0 0 1 -2 1 x4 0
1 0 0 1 -2 1 a12 = 1 ⇐ valeur minimale
pivot
x2 0 0 1 0 0 1 3 x2 0 0 1 0 0 1 3 b3
= 3
=?
a13 0
Alors la variable sortante est x4 , après calcule on retrouve le tableau simpliciale
suivant :
z x1 x2 x3 x4 x5
z 1 0 0 0 4 -3 19
x3 0 0 0 1 -2 3 3
x1 0 1 0 0 1 -2 1
x2 0 0 1 0 0 1 3
Troisième itération : On a cN5 > 0, donc la solution n’est pas optimale. Donc, on
peux augmenter la valeur de x5 .
colonne pivot colonne pivot
z}|{ z}|{
z x1 x2 x3 x4 x5 z x1 x2 x3 x4 x5
z 1 0 0 0 4 -3 19 z 1 0 0 0 4 -3 19
⇒ x3 -2 b1
= 3
= 1 ⇐ valeur minimal
x3 0 0 0 1 -2 3 3 0 0 0 1 3 3 a15 3
x1 0 1 0 0 1 -2 1 x1 0 1 0 0 1 -2 1 a25 = −2 < 0
b3 3
x2 0 0 1 0 0 1 3 x2 0 0 1 0 0 1 3 a35 = 1 =3
Donc, la variable sortante est x5 , après calcule on retrouve le tableau simpliciale
suivant :
z x1 x2 x3 x4 x5
z 1 0 0 1 2 0 22
1 −2
x3 0 0 0 3 3 1 1
2 −1
x1 0 1 0 3 3 0 3
−1 2
x2 0 0 1 3 3 0 2
La difficulté pour appliqué l’algorithme précèdent réside dans le fait de trouver une
base réalisable initiale par apport a laquelle le programme linéaire est sous forme
canonique. Si une telle base est trouvée , alors le premier tableau peut être formé
aisément et donc l’algorithme peut démarrer.
Exemple 3.5.1
Considérons le programme linéaire suivant :
max z = − x1 − x2 max z = − x1 − x2
sc sc
Forme standard
3x − 4x2 ≤ −12 3x + 4x2 − e1 = 12
1
⇐⇒
1
2x1 + x2 ≤ 4 2x1 + x2 + e2 = 4
x1 , x2 ≥ 0 x , x , e , e ≥ 0
1 2 1 2
La solution de base (e1 , e2 ) n’est pas réalisable puisque la solution comporte une
coordonneé négative (on a e1 = −12). Formulation du programme linéaire artificiel :
min w = a1
sc
3x1 + 4x2 − e1 + a1 = 12
(P a ) :
|{z}
variable arti f iciel
2x1 + x2 + e2 = 4
x , x , e , e , a ≥ 0
1 2 1 2 1
Le programme linéaire artificiel admet une solution de base réalisable, les vecteurs
de base sont ( a1 , e1 ). Pour qu’on puisse dresser le premier tableau simplicial il faut
que (P a ) soit sous forme canonique par apport à la base en question. On remarque
que le coût de a1 est non nul (c a1 = −1). D’après la première contrainte du système
précédent on a :
− a1 = −12 + 3x1 + 4x2 − e1
Donc (P a ) devient :
−12 + 3x1 + 4x2 − e1
w = |{z}
| {z }
w0
cN xN
a
(P ) : 3x + 4x2 − e1 + a1 = 12
1
2x1 + x2 + e2 = 4
x , x , e , e , a ≥ 0
1 2 1 2 1
w0 x1 x2 e1 e2 a1
w0 1 -3 -4 1 0 0 -12
a1 0 3 4 -1 0 1 12
e2 0 2 1 0 1 0 4
On a cNx , cNx2 > 0, donc la solution n’est pas optimale. On peux augmenter la
1
valeur de x2 .
w0 x1 x2 e1 e2 a1
w0 1 -3 -4 1 0 0 -12
12
a1 0 3
4 -1 0 1 12 4 = 3 ⇐ valeur minimal
pivot
4
e2 0 2 1 0 1 0 4 1 =3
Donc la variable sortante est a1 . Après calcule on trouve le tableau simplicial suivant
z x1 x2 e1 e2 a1
z 1 0 0 0 0 1 0
Valeur optimale nulle
3 −1 1
a1 0 4 1 4 0 4 3
5 1 −1
e2 0 4 0 4 1 4 1
max z = − x1 − x2 w//0 x1
/ x2 e1 e2 a/1
/
max z = − x1 − x2
sc sc
w//0
/ /
1 /
0 /
0 /
0 /
0 /
1 /
0
3
3x + 4x2 − e1 = 12 x + x2 − 14 e1 = 3
1
⇔ 3 −1 1 ⇔ 4 1
a1
0 4 1 4 0 /4 3
5 1
2x1 + x2 + e2 = 4 4 x 1 + 4 e1 + e2 = 1
5 1 −1
e2
x , x , e , e ≥ 0 0 4 0 4 1 //4/ 1
x , x , e , e ≥ 0
1 2 1 2 1 2 1 2
Le programme linéaire admet une solution de base réalisable ( x2 , e2 ), pour former
le premier tableau simpliciale, la variable x2 doit avoir un cot nulle. D’après la
première contrainte on a ;
3 1
x 2 = 3 − x 1 + e1
4 4
donc ;
max z = −3 − 41 x1 − 14 e1
sc
3
x + x2 − 14 e1 = 3
4 1
5 1
4 x 1 + 4 e1 + e2 = 1
x , x , e , e ≥ 0
1 2 1 2
m
z x1 x2 e1 e2
1 1
z 1 4 0 4 0
-3
3 −1
a1 0 4 1 4 0 3
5 1
e2 0 4 0 4 1 1
Objectifs du chapitre :
æL’objective de chapitre est de présenter une bref introduction sur la théorie
des graphe ainsi qu’un algorithme qui traite le problème du chemin minimale.
Les graphes et leurs algorithmes sont des outils mathématiques utilisés pour mo-
déliser et résoudre des problèmes complexes dans des domaines aussi variés que
l’optimisation (production industrielle , aide à la décision . . . . ) , la conception de
réseaux (électriques, routiers, télécommunication...) ou la modélisation des systèmes
évolutifs (automatique, économies...)
Definition 4.1.1
Un graphe fini G = (X, U) est défini par un ensemble fini X = x1 , x2 , . . . , xn dont
les éléments sont des points, appelés sommets ou nœuds, et par l’ensemble fini
U = u1 , u2 , ..., um dont les éléments sont des lignes orientées ou non.
Remarque 4.1.1
ä Si les lignes d’un graphe ne sont pas orientées elles sont appelées arêtes,
et dans ce cas, le graphe est dit non orienté.
ä Si les lignes d’un graphe sont orientées, on parle d’arcs ou branches ou
encore flèches, et le graphe devient orienté ou digraphe.
ä le nombre de sommets que contient un graphe représente l’ordre du
graphe.
46
47 chapitre 4.Théorie des graphe
Definition 4.1.2
Soit G = ( X, U ) un graphe est défini par :
o Deux sommets xi et x j sont dites adjacents s’il existe un arc ur tel que
( xi , x j ) ∈ ur
o Si ( xi , x j ) ∈ ur alors xi est dit un précédent et x j un successeur de xi
Cette représentation consiste en un dessin où les sommets sont reliés par des arcs :
Exemple 4.2.1
ä f et g sont adjacents.
ä a admet e comme précédent est successeur.
ä c n’admet aucun successeur.
Definition 4.2.1
On appelle application multivoque d’un graphe G = ( X, U ) l’application définie
par :
Γ : X → P (X)
xi 7→ successseur de xi
Exemple 4.2.2
Dans le graphe suivant on a X = { a, c, e, f , g} :
Definition 4.2.2
Soit G = ( X, U ) un graphe d’ordre n. On appelle matrice booléenne de G, la
matrice M = ( aij ) tel que :
a = 1 s0 il existe u ∈ U tel que ( x , x ) ∈ u
ij i j
aij =
0 sinon
Exemple 4.2.3
La matrice booléenne de du graphe suivant :
est :
0 0 1 0 0
0 0 0 0 0
M= 0 0 0 0 1
0 1 1 0 1
1 1 0 0 0
Definition 4.3.1
o Un graphe G = ( X, U ) est dit valué si chaque arc u possède une longueur
l ( u ).
o Un chemin α est une liste de sommet { x1 , . . . , xk } telle qu’il existe un arc
entre chaque pair de sommets successif, soit
o Un chemin α est simple si chaque arc du chemin est empruntée une seule
fois.
o Un circuit est un chemin simple finissant à son point de départ x1 = xk
Exemple 4.3.1
Dans le graphe suivant :
On a :
ä Les chemins { f , g, a, e} et { f , g, c} sont simples.
ä Le chemin { f , g, a, e, g, a} n’est pas simple puisque l’arc (g, a) est emprunté 2
fois.
ä { g, a, e, g} est un circuit
ä { f , g, a, e} est un chemin élémentaire
min(l (α) =
α
∑ l (u))
u∈α
Théorème 4.3.1
Dans un graphe avec une valuation positive l(u) de ses arêtes :
o Un plus court chemin entre 2 sommets est élémentaire
o Les plus courts chemins vérifient le principe d’optimalité : Si p= {s, . . . , t}
est un plus court chemin entre s et t, alors pour tout sommet x sur le
chemin, le sous-chemin de p jusqu’à x, {s, ..., x }, est un plus court chemin
de s à x.
∀ xi ∈ Γ( x j ) ∩ Y D ( xi ) 7→ min{ D ( xi ), D ( x j ) + l ( xi , x j )}
et retourner en b.
Exemple 4.3.2
Calculer le plus court chemin entre le sommet 1 et le sommet 6 :