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 : 2017


2017--2018
Méthode du simplexe

RO_usmba_2017_2018_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 PL


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

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


méthode permet de résoudre des PL avec plusieurs
centaines de variables.

RO_usmba_2017_2018_simplexe 3
Bases et points extrêmes

Rappels
• A matrice m * n
max z = cx
• x = (x1 , x2 . . . . xn)
s.c. Ax  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_2017_2018_simplexe 4
RO_usmba_2017_2018_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 de donner 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 Max z  4x  5x
1 2 1 2
s.c. 2x  x  8 s.c. 2x  x  s 8
1 2 1 2 1
x  2x  7 x  2x  s 7
1 2 1 2 2
x 3 x  s 3
2 2 3
x , x 0 x , x , s , s , s 0
1 2 1 2 1 2 3
RO_usmba_2017_2018_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_2017_2018_simplexe 7
Mise sous forme standard
s.c. 2x1 + x2 + s1 =8
x 1 + 2 x2 + 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_2017_2018_simplexe 8
Mise sous forme standard
Les points O,A,B,C et D forment un polyèdre. C’est la région réalisable.
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_2017_2018_simplexe 9
RO_usmba_2017_2018_simplexe 10
RO_usmba_2017_2018_simplexe 11
RO_usmba_2017_2018_simplexe 12
RO_usmba_2017_2018_simplexe 13
RO_usmba_2017_2018_simplexe 14
Algorithme du simplexe

Méthode de résolution : é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_2017_2018_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_2017_2018_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_2017_2018_simplexe 17
Algorithme du simplexe

RO_usmba_2017_2018_simplexe 18
Algorithme du simplexe

RO_usmba_2017_2018_simplexe

RO_usmba_2017_2018_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_2017_2018_simplexe 20
Algorithme du simplexe

RO_usmba_2017_2018_simplexe 21
Algorithme du simplexe

RO_usmba_2017_2018_simplexe 22
Algorithme du simplexe

RO_usmba_2017_2018_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_2017_2018_simplexe 24
Algorithme du simplexe
La forme canonique
Soit le PL :
max z = 20x1 + 10x2
s:c: x1 + 2x2  120
x1 + x2  100
x1  70
x2  50
x1, x2  0

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

Toutes les variables

Variables A = (aij) bj 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_2017_2018_simplexe 26
Algorithme du simplexe

La forme tableau
Toutes les variables

Coefficients de
la fonction A = (aij) bj
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_2017_2018_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_2017_2018_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.

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_2017_2018_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_2017_2018_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_2017_2018_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_2017_2018_simplexe 32
Algorithme du simplexe

Principe heuristique

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

RO_usmba_2017_2018_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_2017_2018_simplexe 34
Algorithme du simplexe

2ème itération
x2 est la variable ayant le coefficient en z positif le plus élevés. 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_2017_2018_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 - 5s1 - 15s3
RO_usmba_2017_2018_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 bCi/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_2017_2018_simplexe 37

Vous aimerez peut-être aussi