Vous êtes sur la page 1sur 28

INTRODUCTION À LA

RECHERCHE OPÉRATIONNELLE

Filière Sciences Mathématiques et Informatique


(S5)

M. AZZOUZI IDRISSI

Année universitaire : 2022-2023


Résolution des Programmes linéaires
• Résolution graphique (Pbs à 2 & à 3 dim)

• Approche algébrique

• Algorithme du simplexe

• Problèmes de minimisation & Problèmes irréguliers

• Analyse de la variance

• Dualité

Simplexe_2022_2023_IAM 2/30
• Algorithme du simplexe

Simplexe_2022_2023_IAM 3
Algorithme du simplexe
• Introduction
• Principe d'amélioration locale
• Illustration 2D
• Illustration par un exemple :
• Forme canonique & Forme canonique standard
• La forme tableau
• Principe heuristique
• Phasage de l’algorithme du simplexe

Simplexe_2022_2023_IAM 4
Introduction

L’algorithme du simplexe est une méthode de résolution des PLs


basée sur l’approche algébrique.

Elle consiste à énumérer d’abord tous les sommets du polyèdre,


calculer ensuite la fonction objectif sur ces points et prendre
enfin le sommet pour lequel la fonction objectif 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 les problèmes de programmation
linéaire.

Simplexe_2022_2023_IAM 5
Principe d'amélioration locale

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


fonction objectif.

Enoncé ; cas de maximisation:


Soit x0 1 sommet non optimum. Alors Ǝ x, un sommet voisin de x0, tel
que f (x) > f (x0).

En pratique cette méthode de résolution consiste à:


Partir d'un sommet x0 quelconque, passer ensuite à un sommet voisin
pour lequel la fonction objectif 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)

Simplexe_2022_2023_IAM 6
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
Simplexe_2022_2023_IAM 7
Illustration 2D :

𝑀𝑎𝑥 𝑍 4𝑥 5𝑥
2𝑥 5𝑥 8
𝑥 2𝑥 7
𝑠. 𝑐
𝑥 3
𝑥 ,𝑥 0

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
x0 = (3, 2), z = 22  x = (4, 0), z = 16

x∗ = (3,2) , z∗ = 22
Simplexe_2022_2023_IAM 8
Algorithme du simplexe

Illustration par un exemple :

1.Standardisation :

Maximiser z = 4x + 5y

2x y 8 2x y 𝑠 8
x 2y 7 x 2y 𝑠 7
𝑠. 𝑐  𝑠. 𝑐
y 3 𝑦 𝑠 3
x, y 0 x, y, 𝑠 , 𝑠 , 𝑠  0

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

• s1, s2, s3 = variables de base

• x, y = variables hors base

Simplexe_2022_2023_IAM 9
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 (en fct des variables hors
base)
– valeur de Z

𝑠 8 2x y 8
𝑠 7 x 2y 7
𝑠 3 y 3

𝑥 𝑦 0; 𝒁 𝟒𝐱 𝟓𝐲 𝟎

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

Simplexe_2022_2023_IAM 10
Algorithme du simplexe
2. 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 - 2x - s1  y 8
• s2 = 7 - x - 2y  0  2y = 7 - x – s2  y  3,5
• s3 = 3 - y  0  y = 3 - s3  y3
Bilan : ymax = 3 (la valeur de y doit justifier toutes les contraintes)
Dans ce cas on a :
• s1 = 8 - 2x - y = 5 – 2x
• s2 = 7 - x - 2y = 1 - x
• s3 = 0 (sort de la base)
Candidat pour une nouvelle base : {s1, s2, s3} U {y} \ {s3} = {s1, s2, y}
Simplexe_2022_2023_IAM 11
Algorithme du simplexe
3. Nouvelle de base ?

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

𝑠 8 2x y 𝑠 8 2x y 5 2x 𝑠
𝑠 7 x 2y  𝑠 7 x 2y 1 x 2𝑠
𝑠 3 y 𝑠 3 y

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

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

La solution de base associée est:

𝑠 5 2x 𝑠 5
𝑠 1 x 2𝑠 1
𝑦 3 𝑠 3
𝒙 𝒔𝟑 𝟎 𝐞𝐭 𝐙 𝟏𝟓
Simplexe_2022_2023_IAM 12
Algorithme du simplexe
4. 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 s3  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} :

𝑠 3 2𝑠 3𝑠
𝑥 1 𝑠 2𝑠
𝑦 3 𝑠
𝐳 𝟏𝟗 𝟒𝒔𝟐 𝟑𝒔𝟑
Simplexe_2022_2023_IAM 13
Algorithme du simplexe
z = 19 - 4s2 +3s3 peut encore augmenter si s3 entre dans la base.

Si s3 entre 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 - s3  0  s3  3
Bilan : s3max = 1 et s1 sort de la base :

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

𝑠 1 2/3𝑠 1/3𝑠
𝑥 3 1/3𝑠 2/3𝑠
𝑦 2 2/3𝑠 1/3𝑠
𝐳 𝟐𝟐 𝟐𝒔𝟐 𝒔𝟏

Simplexe_2022_2023_IAM 14
Algorithme du simplexe

5. 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).

Simplexe_2022_2023_IAM 15
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 canonique standard


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

Toutes les variables

Variables A = (ij) 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 (*)

Simplexe_2022_2023_IAM 17
Algorithme du simplexe

La forme tableau
Toutes les variables

Coefficients de
la fonction A = (ij) 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

Simplexe_2022_2023_IAM 18
Algorithme du simplexe

La forme tableau

z x1 x2 s1 s2 s3 s4 bi bi/ie

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

Simplexe_2022_2023_IAM 19
Algorithme du simplexe
Principe heuristique
1) Faire entrer dans la base la variable ayant la plus grande contribution
dans la fonction objectif (le plus grand apport > 0 ds Z) : x1. C’est la
variable entrante (colonne pivot : ie).

z. x1 x2 s1 s2 s3 s4 bi bi/ie
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 ?


Simplexe_2022_2023_IAM 20
Algorithme du simplexe
Principe heuristique
2) On calcule les rapports bi/ie . La ligne correspondante au plus petit
rapport positif (ligne pivot) indique la variable sortante

z x1 x2 s1 s2 s3 s4 bi bi/ie

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

Simplexe_2022_2023_IAM 21
Algorithme du simplexe
Principe heuristique
3) L’élément se à 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/ie
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

Simplexe_2022_2023_IAM 22
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:

Simplexe_2022_2023_IAM 23
Algorithme du simplexe

Principe heuristique

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

Simplexe_2022_2023_IAM 24
Algorithme du simplexe
1ère itération

z x1 x2 s1 s2 s3 s4 bi bi/ie

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

Simplexe_2022_2023_IAM 25
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/ie minimum nous donne s1 variable sortante.

z x1 x2 S1 s2 s3 s4 bi bi/ie

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

Simplexe_2022_2023_IAM 26
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
Simplexe_2022_2023_IAM 27
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/ie 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
Simplexe_2022_2023_IAM 28

Vous aimerez peut-être aussi