Vous êtes sur la page 1sur 11

Principe de l’algorithme du simplexe

Exemple : Problème de maximisation :


On considère le programme linéaire P: AX≤b
C X = Z(Max)
X ≥0

Pour pouvoir appliquer l’algorithme du simplexe au programme P, il faut que les conditions
suivantes soient vérifiées :
AJ : Matrice unité à permutation près des colonnes.
J : base ; b≥0 ; CJ=0
A b
(0) Soit la matrice des coefficients :
C 0

(1) Si le CJ≤0, alors cette solution de base est optimale, on arrête le traitement.

(2) Si CJ >0, alors trouver s (numéro de colonne) tel que Cs = Max C j


j∈ J
S’il en existe plusieurs, choisir l’un d’eux.
(3) Choisir r (numéro de la ligne) tel que :

br b 
s
=Min  is / Ais > 0
Ar  Ai 

Si tous les A i ≤0, alors on arrête le traitement et le problème n’admet pas de solution
optimale.

(4)- Si r existe, alors : X s va rentrer dans la base et la variable correspondante qui se trouve sur
la ligne r va sortir.

(5)- Ensuite, on complète les calculs par :


- Mettre 0 sur la colonne s et 1 dans la ligne A rs ;

- Diviser la ligne r par A rs ;


- Recopier les colonnes de la base restante.
Ais . Arj
X ij * = X ij -
Ars

C s .br
Z* = Z -
Ars
Ceci est une itération du simplexe, puis, on reprend l’étape (1), et on refait les mêmes étapes
jusqu’à l’arrêt :
o Soit on trouve une solution optimale.
o Soit le problème n’admet pas une solution optimale.
Afin de mieux comprendre les différentes approches théoriques de la méthode du simplexe,
nous allons donner des exemples numériques ou elles seront successivement utilisées.
Les premiers exemples seront détaillés tandis que seule la solution des autres sera donnée
afin qu’ils puissent servir d’exercices.
Etude de cas simple

Une entreprise pouvant fabriquer trois produits P 1 , P 2 et P 3 en utilisant une ligne de production
travaillant jusqu’à 450 heures par semaine dégage pour chaque unité de produit un profit : de 40
unités monétaires pour P 1 , 120 unités monétaires pour P 2 et 30 unités monétaires pour P 3 .
La capacité de production de la ligne utilisée est respectivement de 500, 250 et 750 unités par heure
pour les trois produits.
Une étude de marché a montré que les possibilités de vente ne dépassent pas 10000 unités de P 1 ,
5000 unités de P 2 et 15000 unités de P 3 .
Le problème qui se pose est de répartir la capacité de production entre les trois produits, de manière
à maximiser le profit hebdomadaire.

I- Formulation du problème en un PL :
Mettons le problème sous forme algébrique.
Appelons x 1 , x 2 et x 3 les quantités respectives des produits P 1 , P 2 et P 3 que nous avons à fabriquer
pour maximiser le profit. Ces quantités ne doivent pas dépasser respectivement 10000, 5000 et
15000 par semaine. Ce qui permet d’écrire :
x 1 ≤10000
x 2 ≤5000
x 3 ≤15000

D’autre part, le temps employé pour produire x 1 unités de P 1 est en heures : x 1 ×1/500 R R R R R R

Celui qui correspond à la fabrication de x 2 unités de P 2 est en heures : x 2 ×1/250 et enfin pour
R R R R R R

produire x 3 unités de P 3 est : x 3 ×1/750


R R R R R R

La somme des temps de fabrication ne doit pas dépasser 45 h, disponibilité totale de la


machine. On aura donc :
1 1
x1 + 1 x2
R R R
+
R R x 3 ≤ 450R R

50 25 R
75

Cette contrainte peut être réécrite comme suit :


3x 1 + 6x 2 + 2x 3 ≤67500
R R R R R R
De plus, du fait la non négativité des quantités produites, on a les contraintes suivantes :
x 1 ≥0, x 2 ≥0, x 3 ≥0
L’objet du problème est de choisir x 1 , x 2 et x 3 de manière à ce que le profit soit maximal, le profit
étant égal à 40x 1 + 120 x 2 +30 x 3 unités monétaires.

Ainsi, le programme linéaire peut être écrit comme suit :


Max Z= 40x 1 + 120 x 2 +30 x 3
S/C:
x1 ≤10000
x2 ≤5000
x 3 ≤15000

30x 1 + 60x 2 + 20x 3 ≤67500


x 1 ≥0, x 2 ≥0, x 3 ≥0

II- Méthode du Simplexe


Transformer le PL en forme standard
1. Mise sous forme standard

Transformer le PL en forme standard consiste à introduire des variables d’écarts pour chaque
contrainte de manière a réécrire les inégalités ≤ sous la forme d’égalités =
Chacune de ces variables d’écart représente le nombre de ressources non utilisés.

S/C:
x 1 + + x4 = 10000
x 2 + x5 = 5000
x3 + x6 = 15000
30x 1 + 60x 2 + 20x 3 + x 7 = 67500
x 1 , x 2 , x 3 , x 4, x 5 , x 6, x 7 ≥ 0

La fonction objective ne change pas

Max Z= 4x 1 + 12 x 2 +3 x 3

2. Solution de base est :

X 4 =10 000, X 5 = 5000, X 6 = 15000, X 7 =67500


x 1 =x 2 =x 3 =0 , Z=0
Donc Solution de base réalisable

Reprenons ce programme sous forme de tableau :

X1 X2 X3 X4 X5 X6 X7 bi Ratio
10000/0
X4 1 0 0 1 0 0 0 10000
X5 0 1 0 0 1 0 0 5000 5000/1LP
X6 0 0 1 0 0 1 0 15000 15000/0
X7 3 6 2 0 0 0 1 67500 67500/6
C j 40 120 30 0 0 0 0 0

La base est constituée des vecteurs : X 4 , X 5 , X 6 et X 7

Variable Hors Base(VHB)=0 Variable de Base (VB)


X 4= 10 000
x 1 =0 X 5= 5 000
x 2 =0
x 3 =0 X6 = 15 000
X7 = 67 500
Z=0

Le plus grand coefficient positif de Z est 120, celui qui correspond à X 2 :


C’est donc A 2 que nous allons faire entrer dans la base.

- Nous rapportons les éléments de b à ceux de X 2 , et choisissons le plus petit rapport positif, qui est
b 2 /a 22 égal à 5000/1=5000.
C’est donc le vecteur X 5 correspondant à la ligne 2 que nous allons faire sortir de la base.
L’élément a 22 et le pivot de la transformation qu’implique la sortie de X 5 de l’ancienne base, et
l’entrée de X 2 dans la nouvelle.
Pour déterminer les nouveaux éléments du tableau, nous appliquons les ce qui suit :
- Mettre 0 sur la colonne 2 et 1 à la place de l’élément a 22 ;
- Diviser la ligne 2 par a 22 ;
- ²Recopier les colonnes de la base restante en utilisant les formules :
Ai2 . A2 j
X ij * = X ij -
A22

C 2 .b2
Z* = Z -
A22

Ceci permet d’avoir le tableau suivant :

X1 X2 X3 X4 X5 X6 X7 bi Ratio

X4 1 0 0 1 0 0 0 10000 10000/1LP
X2 0 1 0 0 1 0 0 5000
X6 0 0 1 0 0 1 0 15000
67500/3
X7 3 0 2 0 -6 0 1 67500
cj 40 0 30 0 -120 0 0 60000

La nouvelle solution est donc:


x 1 =0
x 2 =5000
x 3 =0
Z=60000

Poursuivons l’algorithme.
Au 2ème pas, le pivot est b 11 =1.
En appliquons les mêmes étapes de l’itération précédente, nous obtenons le tableau :

X1 X2 X3 X4 X5 X6 X7 bi Ratio

X1 1 0 0 1 0 0 0 10000
X2 0 1 0 0 1 0 0 5000
X6 0 0 1 0 0 1 0 15000 15000/1

X7 0 0 2 -3 -6 0 1 7500 7500/2LP

cj 0 0 30 -40 -120 0 0 10000

La nouvelle solution est :


x 1 =10000
x 2 =5000
x 3 =0
Z=100 000

Au 3ème pas, le pivot est b 43 =2, ce qui donne le tableau suivant :

X1 X2 X3 X4 X5 X6 X7 bi Ratio
X1 1 0 0 1 0 0 0 10000 10000/1
X2 0 1 0 0 1 0 0 5000
X6 0 0 0 3/2 3 1 -1/2 11250 11250/3/2LP
X3 0 0 1 -3/2 -3 0 1/2 3750
cj 0 0 0 ½ -30 0 -3/2 111250
La nouvelle solution est :
x 1 =10000
x 2 =5000
x 3 =3750
Z=111 250
Enfin, le pivot est b 34 =3/2 , ce qui donne le tableau suivant :

X1 X2 X3 X4 X5 X6 X7 bi
X1 1 0 0 0 -2 -2/3 1/3 2500
X2 0 1 0 0 1 0 0 5000
X4 0 0 0 1 2 2/3 -1/3 7500
X3 0 0 1 0 0 1 0 15000
cj 0 0 0 0 -40 -1/3 -4/3 115000

La nouvelle solution est : Z=115 000

x 1 =2500 X4=7500
x 2 =5000
x 3 =15000

Cette solution est optimale car tous les Cj sont négatifs ou nuls.
Exemple N° 1

Nous supposerons le problème écrit sous forme de la maximisation de la fonction objectif.


Soit le programme linéaire suivant :

𝑀𝑀𝑀𝑀𝑀𝑀(𝑍𝑍) = 9𝑋𝑋1 + 7𝑋𝑋2


10𝑥𝑥1 + 5𝑥𝑥2 ≤ 50
(𝑃𝑃) �
6𝑥𝑥1 + 6𝑥𝑥2 ≤ 36
45𝑥𝑥1 + 18𝑥𝑥2 ≤ 81
𝑥𝑥1 ≥ 0, 𝑥𝑥2 ≥ 0

Nous allons d’abord introduire les variables d’écart


𝑥𝑥3 , 𝑥𝑥4 𝑒𝑒𝑒𝑒 𝑥𝑥5 à𝑓𝑓𝑓𝑓𝑓𝑓 𝑑𝑑𝑑𝑑 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 𝑛𝑛𝑛𝑛𝑛𝑛 𝑖𝑖𝑖𝑖é𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔é𝑠𝑠 𝑜𝑜𝑜𝑜 é𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔é𝑠𝑠 𝑒𝑒𝑒𝑒 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡
𝑙𝑙𝑙𝑙 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑒𝑒𝑒𝑒 𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠, 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 :

1- Mise sous Forme standard :


10𝑥𝑥1 + 5𝑥𝑥2 + 𝑥𝑥3 = 50
6𝑥𝑥1 + 6𝑥𝑥2 + 𝑥𝑥4 = 36
45𝑥𝑥1 + 18𝑥𝑥2 + 𝑥𝑥5 = 81
𝑀𝑀𝑀𝑀𝑀𝑀(𝑍𝑍) = 9𝑋𝑋1 + 7𝑋𝑋2 + 0𝑋𝑋3 + 0𝑋𝑋4 + 0𝑋𝑋5

2- Solution de base

VHB=0 VB

𝑥𝑥1 = 0 𝑥𝑥3 = 50 𝑍𝑍 = 0 solution de base réalisable


𝑥𝑥2 = 0 𝑥𝑥4 = 36
𝑥𝑥5 = 18

x1 x2 x3 x4 x5 bi Ratios

x3 10 5 1 0 0 50 50�10 𝐿𝐿𝐿𝐿
x4 6 6 0 1 0 36 36�
6
𝑥𝑥5 45 18 0 0 1 81 81�45
𝐶𝐶𝑗𝑗 − 𝑍𝑍 9 7 0 0 0 0
↓ 𝑐𝑐𝑐𝑐
x1 x2 x3 x4 x5 bi Ratios
x1 1 1 1 0 0 5 8
�1�
2 10 2
x4 0 3 −6 1 0 6 6� LP
3
10
𝑥𝑥5 0 15,75 -0,45 0 1 58,5 58,5�
15,75
𝐶𝐶𝑗𝑗 − 𝑍𝑍 0 5 ↑ 𝑐𝑐𝑐𝑐 −9 0 0 0
2 10

x1 x2 x3 x4 x5 bi
x1 1 0 2 −1 0 4
10 6
x4 0 1 −2 1 0 2
10 3
𝑥𝑥5 0 0 -2,7 -5,25 1 27
𝐶𝐶𝑗𝑗 − 𝑍𝑍 0 0 −4 −5 0 -50
10 6
Tous les Cj ≤ 0 donc c ′ est la solution optimale: 𝑍𝑍 = 50
𝑥𝑥1 = 4 𝑥𝑥3 = 0
𝑥𝑥2 = 2 𝑥𝑥4 = 0
𝑥𝑥5 = 27
Exercice N°2: L’algorithme du Simplexe

2𝑥𝑥1 + 𝑥𝑥2 ≤ 4
⎧ 4𝑥𝑥 − 3𝑥𝑥 ≤ 2
⎪ 1 2
−3𝑥𝑥1 + 2𝑥𝑥2 ≤ 3
⎨2𝑥𝑥 + 3𝑥𝑥 = 𝑍𝑍(𝑀𝑀𝑀𝑀𝑀𝑀)
⎪ 1 2
⎩ 𝑥𝑥1 , 𝑥𝑥2 ≥ 0
1- Mise sous Forme standard :
2𝑥𝑥1 + 𝑥𝑥2 + 𝑋𝑋3 ≤ 4
4𝑥𝑥1 − 3𝑥𝑥2 + 𝑋𝑋4 ≤ 2
−3𝑥𝑥1 + 2𝑥𝑥2 + 𝑋𝑋5 ≤ 3
2𝑥𝑥1 + 3𝑥𝑥2 = 𝑍𝑍(𝑀𝑀𝑀𝑀𝑀𝑀)

2- Solution de base

VHB=0 VB

𝑥𝑥1 = 0 𝑥𝑥3 = 4 𝑍𝑍 = 0 solution de base réalisable


𝑥𝑥2 = 0 𝑥𝑥4 = 2
𝑥𝑥5 = 3

𝑉𝑉𝑉𝑉 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝑥𝑥4 𝑥𝑥5 𝑏𝑏𝑖𝑖 Ration


𝑥𝑥3 2 1 1 0 0 4 4
𝑥𝑥4 4 -3 0 1 0 2 2/4LP
𝑥𝑥5 -3 2 0 0 1 3
1CP -3 0 0 0 0

𝑉𝑉𝑉𝑉 𝑥𝑥1 𝑥𝑥2 𝑥𝑥3 𝑥𝑥4 𝑥𝑥5


𝑥𝑥3 0 5� 1 −4� 0 3
2 2
𝑥𝑥1 1 −3� 0 1� 0 1�
4 4 2
𝑥𝑥5 0 −1� 0 3� 1 9�
4 4 2
0 −9� 0 −1� 0 −1�
4 4 2

𝐶𝐶𝑖𝑖𝑖𝑖 ≤ 0 Donc c’est la solution optimale

1 9 1
𝑥𝑥1 = , 𝑥𝑥2 = 0, 𝑥𝑥3 = 3, 𝑥𝑥4 = 0, 𝑥𝑥5 = , 𝑍𝑍 ∗ =
2 2 2

Vous aimerez peut-être aussi