3 Chapitre3
3 Chapitre3
3 Chapitre3
Résolution d’un
Programme Linéaire
avec la méthode de simplexe
Plan du chapitre 3
I- Mise en œuvre de l’algorithme du simplexe
Exemple introductif :
problème de maximisation avec contraintes ≤
– A) Forme standard
– B) Bases et solutions de base : définition et correspondance par
rapport aux solutions de base trouvées graphiquement
Initialisation : Solution réalisable de base de départ
à Premier tableau
– C) notion de voisinage :
Solution réalisable de base voisine
Notion de meilleure valeur
à 1er et 2ème critères de Dantzig
à Colonne Pivot, Ligne Pivot et Nombre pivot
– D) Critère d’arrêt
II- Exemples de minimisation avec contraintes ≤
III- Résolution de PL quelconques
IV- Cas particuliers
V- Interprétation des résultats générés par TORA
1
01/10/2021
Introduction
I- Mise en œuvre de
l’Algorithme du simplexe
L’algorithme de simplexe (G. B. Dantzig, 1947) est un algorithme itératif
permettant de résoudre un problème de programmation linéaire. Dans sa
version la plus classique, la méthode comporte 3 étapes :
2
01/10/2021
C1 : -2 x1 + x2 ≤ 1
C2 : 2x1 + x2 ≤ 2
C3 : x1 + 2x2 ≤ 12
x2 (D 1)
3
01/10/2021
4
01/10/2021
Max(Min) Z = c1 x1 + c2 x2 +…+ cn xn
Maximiser Z = cx
s.c: Ax ≤ b
x≥0
où:
# x & # b &
% 1 ( % 1 (
% x2 ( % b2 (
% ( % (
x =% . (, c = ( c1, c2 ,..., cn ), b = % . (
% . ( % . (
% x ( % b (
% n ( % m (
$ ' $ '
# a a12 .. .. a1n &
% 11 (
% a21 a22 .. .. a2 n (
% (
A = ( aij , i = 1,..., n, j = 1,..., m ) = % . (
% . (
% a am 2 amn ((
% m1
$ '10
5
01/10/2021
Exemple 1 introductif
Une société cherche à décider les quantités à fabriquer
de deux types P1 et P2. Les prix de vente unitaires sont
respectivement de 1 dinar pour P1 et de 3 dinars pour
P2. La différence respective entre les quantités de P2 et le
double des quantités de P1 ne doit pas excéder 1
Chaque unité de P1 nécessite 2 unités de matières
premières et 1 heure ouvrier. Tandis que chaque unité
de P2 nécessite 1 unité de matières premières et 2 heures
ouvrier. Tous les jours, la société dispose de 12 unités de
matières première et de 3 ouvriers qui travaillent chacun
4 heures par jour.
Modéliser ce problème sous forme d’un programme
linéaire.
6
01/10/2021
01/10/2021
Max Z = C * X
Ecriture matricielle : AX ≤ b
X ≥ 0
x1
X : Vecteur colonne à 2 variables
x2
(n=2 : nombre de variables)
C (1,3) : Vecteur ligne à 2 valeurs
1
b : 12 Vecteur colonne à 3 valeurs
12
(m=3 : nombre de contraintes)
-2 1
A : 2 1 Matrice (m,n) des coefficients techniques
1 2 à m=3 lignes et n=2 colonnes
7
01/10/2021
La forme standard :
Max Z = x1 + 3x2 + 0 s1 + 0 s2 + 0 s3
-2x1 + x2 + s1 = 1
2x1 + x2 + s2 = 12
x1 + 2x2 + s3 = 12
x1 , x2 ≥ 0 ;
s1 , s2 ,s3 ≥ 0
8
01/10/2021
• x1=0, x2=0
On aura alors s1=1 , s2=12 , s3=12
C’est le point 0 qui à l’ensemble des solutions
∈
réalisables.
9
01/10/2021
Interprétation économique
Les variables d’écart :
S1=1 : La différence de production demandé est bien inférieur ou
égale à 1
S2 =12 : La ressource MP est abondante (totalement inutilisée)
S3=12 : la ressource ouvrier est abondante (totalement inutilisée)
Le profit :
ZO=0 : Profit nul
• x1=0, s1=0
On aura alors x2=1 , s2=12 , s3=10
C’est le point D qui à l’ensemble des solutions réalisables.
∈
On note :
BD =(x2,s2,s3) : la base associée au point D
HD=(x1,s1) : la hors-base associée au point D
x2,s2,s3 : sont appelées variables de base (XB)
x1,s1 : sont appelés variables hors base (XH)
x2
s2 XB
On peut noter alors D s3
x1 XH
s1
10
01/10/2021
Interprétation économique
Les variables d’écarts :
S1=0 : La différence de production demandée est exactement égale à 1
(c’est à dire que la contrainte est satisfaite au sens stricte)
S2 =11 : La ressource MP est en excès (partiellement inutilisée)
S3=10 : la ressource ouvrier est en excès (partiellement utilisée)
Le profit :
ZD=3 : Je réalise un profit de 3 DT
• x1=0, s2=0
On aura alors x2=12 , s1=-11 , s3=-12
C’est le point G qui à l’ensemble des solutions réalisables.
∉
On note :
BG =(x2,s1,s3) : la base associée au point G
HG=(x1,s2) : la hors-base associée au point G
x2,s1,s3 : sont appelées variables de base (XB)
x1,s2 : sont appelés variables hors base (XH)
x2
s1 XB
On peut noter alors G s3
x1 XH
s2
11
01/10/2021
S1=1 X1=6 X1=4 X1=2 X2=1 X1=12 X2=12 X2=6 X1 =11/4 X1=-1/2
S2=12 S1=13 X2=4 X2=5 S2=11 S1=25 S1=-11 S1=-5 X2=13/2 S2=13
S3=12 S3=6 S1=5 S2=3 S3=10 S2=-12 S3=-12 S2=6 S3=-15/4 S3=25/2
X1=0 X2=0 S2=0 S1=0 X1=0 X2=0 X1=0 X1=0 S1=0 X2=0
X2=0 S2=0 S3=0 S3=0 S1=0 S3=0 S2=0 S3=0 S2=0 S1=0
Remarque
Il est bien sur inutile d’énumérer à chaque
fois les différentes bases d’un PL et de les
classer en bases réalisables et bases non
réalisables et de chercher la base optimale
car le nombre de points extrêmes peut être
très élevé en cas de PL de grande taille.
Il suffit de définir :
Le tableau de simplexe
La notion de voisinage
La notion de meilleure valeur
12
01/10/2021
s1 0 -2 1 1 0 0 1
XB s2 0 2 1 0 1 0 12
s3 0 1 2 0 0 1 12
zj
Z =
cj - zj
13
01/10/2021
De même :
0 et D sont voisins, d’ailleurs on remarque que les
deux bases associées sont égales à une variable prés :
B0=(s1,s2,s3) et BD=(x2,s2,s3)
En passant de 0 à D, on fait sortir la VB s1 de la base
et on la remplace par x2 (qui en fait est une VHB de 0) :
on dit qu’on fait un changement de base.
Ensuite, en suivant le même raisonnement, on passe de
DàC:
O (s1,s2,s3) – D (x2,s2,s3) – C (x2,s2,x1)
14
01/10/2021
cj 1 3 0 0 0
MAX X1 X2 s1 s2 s3 b RT
s1 0 -2 1 1 0 0 1
s2 0 2 1 0 1 0 12
s3 0 1 2 0 0 1 12
zj 0 0 0 0 0
Z =
cj - zj
15
01/10/2021
16
01/10/2021
s1 0 -2 1 1 0 0 1
s2 0 2 1 0 1 0 12
s3 0 1 2 0 0 1 12
zj 0 0 0 0 0
Z = 0
Cj-zj 1 3 0 0 0
Remarques :
1) En fait , dans le premier tableau, on choisit comme
variable entrante celle qui a le plus grand cj dans la fonction
objectif
2) Les variables s1,s2 et s3 sont déjà dans la base, donc leur
coût réduit est nul !!
17
01/10/2021
s1 0 -2 1 1 0 0 1 1
s2 0 2 1 0 1 0 12 12
Lp
s3 0 1 2 0 0 1 12 6
zj 0 0 0 0 0
Z = 0
Cj-zj 1 3 0 0 0
L1 est la ligne pivot :
X2 rentre dans la base et on choisit le min entre :
1/1 ; 12/1 ; 12/2 à 1 donc s1 quitte la base. probablement le
tableau suivant correspondra au point D
18
01/10/2021
19
01/10/2021
2èmeTableau de simplexe
cj 1 3 0 0 0
b RT
MAX x1 x2 s1 s2 s3
x2 3 -2 1 1 0 0 1 X
s2 0 4 0 -1 1 0 11 11/4
Lp X1 S3
s3 0 5 0 -2 0 1 10 2
-2 0
zj -6 3 3 0 0 4 0
Z = 3
Cj-zj 7 0 -3 0 0 5 1
X1, rentre en base : c’est la colonne pivot et L3 est la nouvelle ligne Pivot
5 : c’est l’intersection de la colonne pivot et de la ligne pivot. Il s’agit alors du
nombre pivot
On divise la ligne pivot Lp par 5 à L’p=Lp/5
On effectue les changements suivants : L1 –(- 2)* L’p et L2 – 4 L’p
Il s’agit bien du point D
Z =3*1 + 0*11 + 0* 10 = Z 0 + (cj-zj)x2 *x2 = 0 + 3 *1 =3 (le produit du coût réduit de x2 dans le tableau
précèdent par la nouvelle valeur de x2 dans le tableau courant)
3èmeTableau de simplexe
cj 1 3 0 0 0
b RT
MAX x1 x2 s1 s2 s3
x2 3 0 1 1/5 0 2/5 5
s2 0 O 0 3/5 1 -4/5 3
x1 1 1 0 -2/5 0 1/5 2
zj 1 3 1/5 0 7/5
Z = 17
Cj-zj 0 0 -1/5 0 -7/5
20
01/10/2021
4- Critère d’arrêt
Variable entrante : x1 : c’est celle qui a un coût réduit le plus grand négatif
variable sortante : s2 : c’est celle qui a le plus petit ratio test
Nouvelle base : (s1,x1)
21
01/10/2021
Min x1 x2 s1 s2 b RT
Cj -25 -15 0 0
s1 0 O 4/3 1 -2/3 440/3 110
x1 -25 1 1/3 0 1/3 140/3 140
zj -25 -25/3 0 -25/3 Z=-3500/3
Cj - z j 0 -20/3 0 25/3
La base : (s1,x1)
Variable entrante : x2 c’est celle qui a un coût réduit le plus grand négatif ;
variable sortante : s1 c’est celle qui a le plus petit ratio test
Nouvelle base : (x2,x1)
Min x1 x2 s1 s2 b RT
Cj -25 -15 0 0
x2 -15 0 1 3/4 -1/2 110
x1 -25 1 0 -1/4 1/2 10
zj - 25 - 15 -5 -5 Z= -1900
Cj - z j 0 0 5 5
La base : (x2,x1) est optimale puisque tous les cj-zj sont positifs ou nuls. On ne peut
plus diminuer encore plus la fonction objectif
22
01/10/2021
2- Exercice d’application
Faites les changements nécessaires afin de pouvoir appliquer
l’algorithme de simplexe
23
01/10/2021
Le PL s’écrit alors :
Max Z = -6X1 - 3X2 + 2X3 +0S1 + 0 S2 – M a1 –Ma2
X1 + X2 - X3 –S1 + a1= 28
X1- 2X2 + 2X3 –S2 + a2= 22
X1,X2,X3 ≥ 0 ; S1, S2 ≥ 0 ; a1, a2 ≥ 0
24
01/10/2021
Max x1 x2 x3 s1 s2 a1 a2 b RT
Cj -6 -3 2 0 0 -M -
M
a1 -M 1 1 -1 -1 O 1 0 28 28
a2 -M 1 -2 2 0 -1 0 1 22 22
zj -2M M -M M M -M -
M X
Cj - zj -6+2M -3-M 2+M -M -M 0 O
25
01/10/2021
Max x1 x2 x3 s1 s2 a1 a2 b RT
Cj -6 -3 2 0 0 -M -M
a1 -M O 3 -3 -1 1 1 -1 6 2
x1 -6 1 -2 2 0 -1 0 1 22 X
zj -6 -3M+12 -3M-12 M - -M M-6
M+6 X
Cj - zj 0 3M-15 -3M+14 -M M-6 0 -
2M+
6
Max x1 x2 x3 s1 s2 a1 a2 b
Cj -6 -3 2 0 0 -M -M
x2 -3 0 1 -1 -1/3 1/3 1/3 -1/3 2
x1 -6 1 0 0 -2/3 -1/3 2/3 1/3 26
zj -6 -3 3 5 1 -5 -1 Z = -162
Cj - zj 0 0 -1 -5 -1 -M+5 -M+1
Tous les cj-zj sont négatifs ou nuls, le tableau est donc optimal.
La solution optimale est donnée par :
X1=26
X2=2
X3=s1=s2=0
Et Z= -162
26
01/10/2021
Remarques :
1) Dans Z on associe aux variables artificielles -M en cas
d’une maximisation et M en cas d’une minimisation.
2) Les coefficients d’une variable artificielle relative à
une contrainte de type ‘≥’ sont opposés à ceux de la
variable d’écart correspondante, et ceci au niveau de
toutes les itérations.
3) Les coefficients d’une variable artificielle relative à
une contrainte de type ‘=’ sont égales à ceux de la
variable d’écart correspondante, et ceci au niveau de
toutes les itérations. (donc a=s pour une contrainte de
type =)
4) Si une variable artificielle quitte la base, elle n’aura
plus la possibilité d’entrer une 2ème fois dans la base.
On peut simplifier du tableau toute variable
artificielle quittant la base.
27
01/10/2021
28
01/10/2021
Résumé : Application de
l’algorithme du Simplexe
Le second membre doit être positif, sinon multiplier la contrainte par -1
Comment obtenir la forme standard ?
Les variables doivent être positives.
Si x <= 0 on pose x’ = -x
Si x est libre on pose x = x’ – x’’ avec x’ et x’’ >=0 (d’ailleurs dans la
résolution, l’un des deux sera nul et les deux colonnes sont opposées dans le
tableau)
V- TORA
• Pour la lecture de l’output, il faut noter que la
ligne Z(max) correspond à l’opposé de la ligne
des couts réduits habituellement calculés
29