Vous êtes sur la page 1sur 37

INTRODUCTION À LA

RECHERCHE OPÉRATIONNELLE

Filière Sciences Mathématiques et Informatique


(S5)

M. AZZOUZI IDRISSI

Année universitaire : 2020-2021


Méthode du simplexe

RO_usmba_2020_2021_simplexe 2
Introduction

On a présenté une démarche graphique pour résoudre un


PL à deux variables.

Dans la réalité les problèmes ont plus que deux variables


à déterminer.

Appel à une procédure algébrique pour résoudre les PLs


avec plus de deux variables : Méthode de simplexe.

L’implémentation de l’algorithme correspondant à cette


méthode permet de résoudre des PLs avec plusieurs
centaines de variables et de contraintes.

RO_usmba_2020_2021_simplexe 3
Bases et points extrêmes

Rappels
• A matrice m * n
max z = cx
• x = (x1 , x2 . . . . xn)
s.c. x b
• b = (b1 , b2 . . . . bm)
x 0
• c = (c1 , c2 . . . . . cn)

• Les contraintes définissent un polyèdre


• La solution optimale est un sommet (ou segment reliant deux
sommets) du polyèdre.

Comment énumérer les sommets d’un polyèdre ?

RO_usmba_2020_2021_simplexe 4
RO_usmba_2020_2021_simplexe 5
Mise sous forme standard

L’impact de ces variables d’écart sur la fonction objectif est nul.


Leur existence est tout simplement une mise en forme du PL.
Le fait d’exprimer la valeur de ces variables d’écart à l’optimum donne
une idée sur la quantité de ressources non utilisées.
Passage à la forme standard

Max z  4x  5x
1 2
s.c. 2x  x  s 8
1 2 1
x  2x  s 7
1 2 2
x  s 3
2 3
x , x , s , s , s 0
1 2 1 2 3
RO_usmba_2020_2021_simplexe 6
Mise sous forme standard

• 9 points intéressants (intersection des contraintes)


• 5 points admissibles
 énumération de ces 9 points comme solution de la forme
standard (solutions de base)

RO_usmba_2020_2021_simplexe 7
Mise sous forme standard
s.c. 2x1 + x2 + s1 =8
x1 + 2x2 + s2 =7
x2 + s3 =3
x1 ; x2 ; s1 ; s2 ; s3 0

Sol de Sol Point


x1 x2 s1 s2 s3
base admissible extrême
0 0 8 7 3 V V O (0,0)
0 8 0 -9 -5 V N
0 3,5 4,5 0 -0,5 V N
0 3 5 1 0 V V A (0,3)
4 0 0 3 3 V V B (4,0)
7 0 -6 0 3 V N
0 0 N N
3 2 0 0 1 V V C (3,2)
2,5 3 0 -1,5 0 V N
1 3 3 0 0 V V D (1,3)

{ points extrêmes }  { solutions de base admissibles }


RO_usmba_2020_2021_simplexe 8
Mise sous forme standard
Les points O,A,B,C et D forment un polyèdre. C’est l’espace des
solutions réalisables.
Remarque : En chaque sommet de ce polyèdre, certaines variables sont
nulles tandis que d’autres ne le sont pas.
Définition : Les variables non nulles sont dites de base. Celles qui sont
nulles sont dites hors base.
Variables de base Variables hors base
Sommet Coordonnées
0 =0
O x1 = 0, x2 = 0, s1 = 8 , s2 = 7 , s3 = 3 s1, s2, s3 x1 , x2

A x1 = 0, x2 = 3, s1 = 5, s2 = 1, s3 = 0 x2 , s1, s2 x1 , s3

B x1 = 4, x2 = 0, s1 = 0, s2 = 3, s3 = 3 x1, s2 , s3 x2 , s1

C x1 = 3, x2 = 2, s1 = 0, s2 = 0, s3 = 1 x1, x2 , s3 s1, s2

D x1 = 1, x2 = 3, s1 = 3, s2 = 0, s3 = 0 x1, x2 , s1 s2 , s3

RO_usmba_2020_2021_simplexe 9
Forme algébrique
• Système linéaire A x = b
• Matrice A (m,n), rang A = m  n
• Base de A : sous-matrice B(m, m) inversible

• Solution de base associée à B :


– xN = 0 variables hors base
– xB = B-1b variables de base

RO_usmba_2020_2021_simplexe 10
RO_usmba_2020_2021_simplexe 11
Forme algébrique
• on met les variables hors base à 0
• On en déduit la valeur des variables de base

• Ax = b, x0
• (xB, 0) associée à B est une solution de base admissible si xB0
• {points extrêmes du polyèdre }  { solutions de base admissibles
du système linéaire correspondant}
• solution de base dégénérée : certaines variables de base sont nulles
• si A est inversible, la solution de base est unique.

RO_usmba_2020_2021_simplexe 12
Base voisine et pivotage
Deux sommets voisins correspondent à deux bases B et B’ tel qu'on
remplace une variable dans B pour obtenir B’

Passer à un sommet voisin = changer de base (base voisine) : Principe


de pivotage.

Reprenons l’exemple précédant:

Qui faire entrer dans la base ? ( y )


Quelle est la valeur max que pourra prendre y ?

RO_usmba_2020_2021_simplexe 13
Base voisine et pivotage
Valeur max que pourra prendre y
•  
•  
•  

Y doit justifier les 3 contraintes; donc le bilan est que : ymax = 3


Dans ce cas on a :
• s1 = 5-2x
• s2 = 1-x,
• s3 =0
On dit que y entre dans la base (y 0) et que s3 sort de la base (s3=0)
{s1, s2, s3} U {y} \ {s3} = {s1, s2, y}

(x, y, s1, s2, s3) = (0, 3, 5, 1, 0)  la nouvelle base est : (s1, s2, y)

RO_usmba_2020_2021_simplexe 14
Algorithme du simplexe

Méthode de résolution des PLs = énumérer d’abord tous les


sommets, calculer ensuite la fonction f sur ces points et prendre
enfin le sommet pour lequel f est optimisée :

• Ça marche si le nombre de sommets est fini

• limitation : ce nombre peut être très grand ...

L'algorithme du simplexe (G. B. Dantzig 1947) = Algorithme


itératif qui permet de résoudre un problème de programmation
linéaire.

RO_usmba_2020_2021_simplexe 15
Algorithme du simplexe

Principe d'amélioration locale

A partir d'un sommet, chercher un sommet voisin qui améliore la


fonction objectif.

Principe d'amélioration locale (maximisation) :

Soit x0 1 sommet non optimum. Alors Ǝ x, un sommet voisin de x0, tel


que f (x) > f (x0).

Méthode de résolution : on part d'un sommet x0 quelconque, on passe


à un sommet voisin pour lequel f augmente, et ainsi de suite.

Remarque : on passe d'un problème continu (z = variable réelle) à un


problème discret (nombre fini de sommets)

RO_usmba_2020_2021_simplexe 16
Algorithme du simplexe

Illustration 2D :
Max z  4x  5x
1 2
s.c. 2x  x  8
1 2
x  2x  7
1 2
x 3
2
x , x 0
1 2
Z = 4x1 + 5x2

x0 = (0, 0), z = 0  x = (0, 3), z = 15


x0 = (0, 3), z = 15  x = (1, 3), z = 19
x0 = (1, 3), z = 19  x = (3, 2), z = 22

x = (3,2) , z = 22
∗ ∗

RO_usmba_2020_2021_simplexe 17
Algorithme du simplexe

Illustration par un exemple :

1.Standardisation :

Maximiser z = 4x + 5y


Base initiale : {s1, s2, s3} par exemple, donc

• s1, s2, s3 = variables de base

• x, y = variables hors base

RO_usmba_2020_2021_simplexe 18
Algorithme du simplexe
Illustration par un exemple :

1.Solution de base associée

• On met les variables hors base à 0


• On en déduit :
• valeur des variables de base
• valeur de z

Ce qui correspond donc au point O(0,0)

RO_usmba_2020_2021_simplexe 19
Algorithme du simplexe
Maximisation
Observation essentielle : z = 4x + 5y = 0  on peut augmenter z si x
ou y rentre dans la base (Changement de base).

Essayons avec y : quelle est la valeur max que pourra avoir y ?


• s1 = 8 - 2x - y  0  y 8
• s2 = 7 - x - 2y  0  y  3,5
• s3 = 3 - y  0  y3
Bilan : ymax = 3
Dans ce cas on a :
• s1 = 5 – 2x
• s2 = 1 - x
• s3 = 0 (sort de la base)
Candidat pour une nouvelle base : {s1, s2, s3} U {y} \ {s3} = {s1, s2, y}
RO_usmba_2020_2021_simplexe 20
Algorithme du simplexe
Nouvelle de base ?

L’ancienne base était {s1, s2, s3}

L’expression de z en fonction des variables hors base est :

z = 4x + 5y = 15 + 4x -5s3

La solution de base associée est:

RO_usmba_2020_2021_simplexe 21
Algorithme du simplexe
Itération
z = 15 + 4x -5s3 peut encore augmenter si x entre dans la base.

Il faut déterminer donc la variable qui sort de la base ?

Valeur maximale de x :
• s1 = 5 - 2x + s3 0  x 2.5
• s2 = 1 - x + 2 s 3  0  x  1
s3 = 3 - y  0  aucune contrainte sur x

Bilan : xmax = 1 entre dans la base et s2 en sort:

La nouvelle base est donc {s1, x, y} :

𝟐 𝟑
RO_usmba_2020_2021_simplexe 22
Algorithme du simplexe
Itération (suite)
z = 19 - 4s2 +3s3 peut encore augmenter si s3 entre dans la base.

Si s3entre dans la base, quelle est la variable qui sort donc ?

Valeur maximale de s3 :
• s1 = 3 + 2s2 - 3s3 0  s3  1
• x = 1 - s2 + 2s3  0  aucune contrainte sur s3
• y = 3 - s 3 0  s3  3
Bilan : s3max = 1 et s1 sort de la base :

La nouvelle base est donc {s3, y, x} :

𝟐 𝟏
RO_usmba_2020_2021_simplexe 23
Algorithme du simplexe

L’optimum
On a :
z = 22 - 2s2 - s1  z  22

Or la solution de base :

x = 3, y = 2, s3 = 1 donne z = 22

L’optimum est obtenu à l’aide des coefficients de z*


exprimée avec les variables hors base (  0).

RO_usmba_2020_2021_simplexe 24
Algorithme du simplexe
La forme canonique
Soit le PL :
max z = 20x1 + 10x2
x1 + 2x2  120
x1 + x2  100
s.c. x1  70
x2  50
x1, x2  0

La forme standard
max z = 20x1 + 10x2
x1 + 2x2 + s1 = 120
s.c x1 + x2 + s2 = 100
x1 + s3 = 70
x2 + s4 = 50
z - 20x1 - 10x2 =0
RO_usmba_2020_2021_simplexe 25
Algorithme du simplexe
La forme tableau

Toutes les variables

Variables A = (aij) bi Valeurs des


de base matrice des coefficients des variables de base
courante contraintes du programme standard courante

Valeur de la
coefficients de la fonction
fonction
économique sous sa forme initiale
économique (*)

RO_usmba_2020_2021_simplexe 26
Algorithme du simplexe

La forme tableau
Toutes les variables

Coefficients de
la fonction A = (aij) bi
Variables Valeurs des
économique matrice des coefficients des
de base variables de
associés aux contraintes du programme
courante base courante
variables de standard
base courante

coefficients de la fonction Valeur de la


économique sous sa forme fonction
initiale économique

RO_usmba_2020_2021_simplexe 27
Algorithme du simplexe

La forme tableau

z x1 x2 s1 s2 s3 s4 bi bi/aie

s1 1 2 1 0 0 0 120

s2 1 1 0 1 0 0 100

s3 1 0 0 0 1 0 70

s4 0 1 0 0 0 1 50

z 20 10 0 0 0 0 0

RO_usmba_2020_2021_simplexe 28
Algorithme du simplexe
Principe heuristique
1) Faire entrer dans la base la variable ayant le coefficient le plus
grand (le plus grand apport > 0 ds Z) : x1. C’est la variable entrante
(aie).

z. x1 x2 s1 s2 s3 s4 bi bi/aie
s1 1 2 1 0 0 0 120
s2 1 1 0 1 0 0 100
s3 1 0 0 0 1 0 70
s4 0 1 0 0 0 1 50

z 20 10 0 0 0 0 0

La variable à faire sortir de la base ?


RO_usmba_2020_2021_simplexe 29
Algorithme du simplexe
Principe heuristique
2) On calcule les rapports bi/aie . La ligne correspondante au rapport
positif le plus petit indique la variable sortante

z x1 x2 s1 s2 s3 s4 bi bi/aie

s1 1 2 1 0 0 0 120 120
s2 1 1 0 1 0 0 100 100
s3 1 0 0 0 1 0 70 70
s4 0 1 0 0 0 1 50 
z 20 10 0 0 0 0 0

La variable à faire sortir de la base est s3

RO_usmba_2020_2021_simplexe 30
Algorithme du simplexe
Principe heuristique
3) L’élément ase à l’intersection de la colonne pivot (variable entrante)
et de la ligne pivot (variable sortante) est appelé pivot de la
transformation.

z x1 x2 s1 s2 s3 s4 bi bi/aie
s1 1 2 1 0 0 0 120 120
s2 1 1 0 1 0 0 100 100
s3 1 0 0 0 1 0 70 70
s4 0 1 0 0 0 1 50 
z 20 10 0 0 0 0 0

RO_usmba_2020_2021_simplexe 31
Algorithme du simplexe
Principe heuristique
4) On divise la ligne pivot (variable sortante) par le pivot

5) Dans la colonne pivot (variable entrante) on ne garde que le pivot


(=1). Les autres termes sont mis à zéro

6) Dans la colonne de gauche, on remplace la variable sortante par la


variable qui entre dans la base

7) Pour la ligne pivot, chaque fois que la ligne pivot rencontre une
colonne en zéro on recopie la colonne.

8) Pour la colonne pivot, chaque fois que la colonne pivot rencontre une
ligne en zéro on recopie la ligne.

9) Pour les autres termes, on applique la méthode du rectangle:

RO_usmba_2020_2021_simplexe 32
Algorithme du simplexe

Principe heuristique

c . . . a
. .
. .
. .
. .
ligne
pivot
p . . b  a a-bc/p
colonne
pivot

RO_usmba_2020_2021_simplexe 33
Algorithme du simplexe
1ère itération

z x1 x2 s1 s2 s3 s4 bi bi/aie

s1 0 2 1 0 -1 0 50
s2 0 1 0 1 -1 0 30
x1 1 0 0 0 1 0 70
s4 0 1 0 0 0 1 50
z 0 10 0 0 -20 0 -1400

x1, s1, s2, s4 en base et x2, s3 hors base et la solution de base devient :
(70, 0, 50, 30, 0, 50) et une valeur 1400 de la fonction économique

RO_usmba_2020_2021_simplexe 34
Algorithme du simplexe

2ème itération
x2 est la variable ayant le coefficient en z positif le plus élevé. Donc
x2 est la variable entrante.
Le rapport bi/aie minimum nous donne s1 variable sortante.

z x1 x2 S1 s2 s3 s4 bi bi/aie

s1 0 2 1 0 -1 0 50 25
s2 0 1 0 1 -1 0 30 30
x1 1 0 0 0 1 0 70 
s4 0 1 0 0 0 1 50 50
z 0 10 0 0 -20 0 1400

RO_usmba_2020_2021_simplexe 35
Algorithme du simplexe
2ème itération

z x1 x2 s1 s2 s3 s4 bi

x2 0 1 1/2 0 -1/2 0 25
s2 0 0 -1/2 1 -1/2 0 5
x1 1 0 0 0 1 0 70
s4 0 0 -1/2 0 1/2 1 25
z 0 0 0 0 -20 0 -1650

x1, x2, s2, s4 en base et s1, s3 hors base et la solution de base devient:
(70, 25, 0, 5, 0, 25) et une valeur 1650 de la fonction économique.

La solution est optimale car tous les coefficients de la fonction


économique sont négatifs ou nuls. Z = 1650
RO_usmba_2020_2021_simplexe 36
Algorithme du simplexe

Phasage de l’algorithme du simplexe


Input : 1 PL et 1 solution de base admissible
Output : 1 sol de base admissible optimale sinon déclarer " PL non
borné "
1. Identifier la colonne pivot = variable entrante
• choisir la variable hors base xj qui permet de maximiser la
fonction objectif : variable entrante
• Si pas de colonne pivot : stop la solution de base est optimale
2. Identifier la ligne pivot = variable sortante
• Choisir la ligne ayant le rapport bi/aie minimal : variable sortante
• Si pas de variable sortante : stop le tableau courant est non
borné
3. Mise à jour de la base et du tableau
• Pivoter autour des coefficients aij et recommencer en 1
RO_usmba_2020_2021_simplexe 37

Vous aimerez peut-être aussi