Sunteți pe pagina 1din 36

Programmation Linéaire

Algorithme de simplexe
Programmation linéaire
Dans le cas général un programme linéaire peut être
définie sous 2 formes:
Programme linéaire sous forme canonique:
n n
maximiser ∑c x
j =1
j j minimiser ∑c x
j =1
j j

sujet à Ax ≤ b ou sujet à Ax ≥ b
x≥0 x≥0
 c1   0
   
avec c =  ⋮  ∈ IR , c ≠  ⋮ , A(m × n ) et b ∈ IR .
n m

c   0
 n  
Programmation linéaire : Forme standard

Programme Linéaire sous forme Standard:


maximiser cT x
 Ax = b
sujet à 
 x≥0
Avec A matrice m lignes et n colonnes
b ∈ IR+m , c ∈ IR n , c ≠ 0 et rang ( A) = m.

Proposition: Tout problème de programmation linéaire sous


forme canonique admet un problème équivalent de
programmation linéaire sous forme standard.
Exemple
Forme canonique: maximiser 3 x 1 + 5 x 2
 x1 ≤ 4
 ≤
 2 x2 12
sujet à 
3 x1 + 2 x2 ≤ 18
 x 1 , x2 ≥ 0
Forme standard:
maximiser 3 x1 + 5 x 2
 x1 + x3 = 4
 + x4 = 12
 2 x2
sujet à 
3x1 + 2 x2 + x5 = 18
 x1 , x2 , x3 , x4 , x5 ≥ 0
x i (i = 3,4,5) variables d' écarts
Remarque: IL existe une correspondance entre l’ensemble de solutions
d’un programme linéaire sous forme standard et l’ensemble de solutions du
même programme linéaire mais sous forme canonique
Exemple:
Forme canonique Forme standard
max 3 x1 + 5 x 2 max 3x1 + 5x2
 x1 ≤ 4  x1 + x3 = 4
 ≤ 12 
 2 x2  2x2 + x4 = 12
sujet à  . s.à  .
+ 2 x2 ≤ 18
3 x1 3x1 + 2x2 + x5 = 18
 x1 , x2 ≥ 0  x1, x2 , x3 , x4 , x5 ≥ 0
En utilisant les relations x3 = 4 − x1, x4 = 12− 2x2 et x5 = 18− 3x1 − 2x2
On peut vérifier l’équivalence suivante:
(x1, x2 ) est une solution du problème sous forme canonique
si et seulement si ( x1, x2 , x3 , x4 , x5 ) = ( x1, x2 ,4 − x1,12 − 2x2 ,18 − 3x1 − 2x2 )
est une solution du problème sous forme standard
Cherchons les solutions du programme linéaire sous forme standard associées
aux sommets de l’ensemble de contraintes
5 x4
x

Le sommet 1: (0,0 )
Solution associée: x1 = (0,0,4,12,18)
x3
Le sommet 2: (4,0 )
Solution associée: x 2 = (4,0,0,12,6)
Le sommet 3: (4,3 ) x1 x2
Solution associée: x = (4,3,0,6,0)
3

Le sommet 4: (2,6 )
Solution associée: x 4 = (2,6,2,0,0)
Le sommet 5: (0,6 )
Solution associée: x 5 = (0,6,4,0,6)
Chaque solution associée à un sommet possède exactement 2 variables nulles
et 3 variables positives .
Solution de base admissible
1 0 1 0 0  4 
   
{
S = x ∈ IR 3
}
: Ax = b , x ≥ 0 A =  0 2 0 1 0  , b =  12 
3 2 0 0 1   18 
  

x 1 = (0,0,4,12, 18) ; 2 variables = 0 ( x1 et x 2 ) et 3 variables ≥ 0 ( x 3 , x 4 et x 5 )


x 2 = (4,0,0,12, 6); 2 variables = 0 ( x 2 et x 3 ) et 3 variables ≥ 0 ( x1 , x 4 et x 5 )
x 3 = (4,3,0,6,0 ); 2 variables = 0 ( x 3 et x 5 ) et 3 variables ≥ 0 ( x1 , x 2 et x 4 )
x 4 = (2,6,2,0,0); 2 variables = 0 ( x 4 et x5 ) et 3 variables ≥ 0 ( x1 , x 2 et x3 )
x 5 = (0,6,4,0,6 ); 2 variables = 0 ( x1 et x 4 ) et 3 variables ≥ 0 ( x 2 , x 3 et x 5 )

Les colonnes de la matrice A associées aux variables positives forment


une sous matrice carrée d’ordre 3 inversible appelée base de A

Chaque sommet de l’ensemble de contraintes est associé à une base


de A
x5 x4
1 0 1 0 0
 
A = 0 2 0 1 0
x3 3 2 0 0 1 

x 1 x2
Les bases associées aux points x 1 , x 2 , x 3 , x 4 et x 5
 1 0 0 1 0 0  1 0 0
    3  
x ↔ B =  0 1 0 x ↔ B =  0
1 1 2 2
1 0 x ↔ B =  0 2 1
3

 0 0 1 3 0 1   3 2 0
    
1 0 1 0 1 0
  5  
x ↔ B =  0 2 0 x ↔ B =  2
4 4 5
0 0
 3 2 0 2 0 1 
  
Les bases associées à 2 sommets adjacents différent d’une seule colonne
5 x4 Solution de base admissible
x

x3

x 1 x2

Définition : On dit que les solutions associées aux 5 points (x1, x2, x3, x4
et x5) sont des solutions de base admissibles ou encore des points
extrêmes.
Solution de base admissible: Cas général
Considérons le problème (P) suivant
maximiser cT x
 Ax = b
sujet à 
 x≥0
Avec A matrice m lignes et n colonnes
b ∈ IR+m , c ∈ IR n , c ≠ 0 et rang ( A) = m.
Définition : Une base du problème (P) est toute sous matrice carrée inversible
de A et d’ordre m (m = Nbre de lignes de A = Nbre de contraintes)

−1
Définition : Une base B du problème (P) est dite admissible si B b≥0
Définition : Une solution de base admissible x associée à une base B
est définie par x = B−1b ≥ 0
B
et les autres composantes (de x ) nulles.
Exemples de solutions de bases admissibles:
1 0 1 0 0 4
   
{ }
S = x ∈ IR : Ax = b, x ≥ 0 A =  0 2 0 1 0 , b = 12 
5

3 2 0 0 1  18 
   
La solution
1
x = (0,0,4,12, 18) 1

0 0

est une solution de base, elle est associée à la base  0 1 0
0 0 1 

La solution x = (4,3,0,6,0 )
3
1 0 0
est une solution de base, elle est associée à la base  
0 2 1
3 2 0 

Définition:
Soit x une solution de base associée à la base B.
−1
Les composantes de xB = B b sont appelées des variables de base
et les autres composantes des variables hors base.
Exemples :
1) Solution: x1 = (0,0,4,12,18) : les variables de base : x3 , x4 et x5
les variables hors base: x1 , et x2
2) Solution: x 2 = (4,0,0,12, 6) : les variables de base : x1 , x4 et x5
les variables hors base: x2 , et x3
3) Solution: x 3 = (4,3,0,6,0 ) : les variables de base : x1 , x2 et x4
les variables hors base: x3 , et x5
4) Solution: x 4 = (2,6,2,0,0 ) : les variables de base : x1 , x2 et x3
les variables hors base: x4 , et x5
5) Solution: x 5 = (0,6,4,0,6 ) : les variables de base : x2 , x3 et x5
les variables hors base: x1 , et x4
Algorithme de simplexe
Pour résoudre un programme linéaire sous forme standard
on utilise l’algorithme de simplexe

Principe de l’algorithme

1) Déterminer une solution de base admissible x


associé à la base B
2) Tester si la solution associée à B est optimale
a. Si oui Arrêt
b. Sinon continuer
3) Remplacer une colonne de B par une autre
colonne hors base. La nouvelle base B1 sera
admissible.
4) Poser B = B1 et revenir à 1)
Algorithme de simplexe
1) Trouver x une solution de base admissible associée à une base B.
Calculer cr = max{ c j : j := 1,.., n}, c j = c j − cB B a j : coût réduit de x j .
T −1
2)
3) Si c ≤ 0 la solution associée à la base B est optimale.
r
4) Si c r > 0 et B -1ar ≤ 0 la fonction économique n’est pas bornée.
5) Si cr > 0 et { ( )
i, B - 1 a r i > 0 ≠ φ }
bs  bk 
calculer = min : ykr > 0, yr = B−1ar , b = B−1b
ysr  ykr 
6) Remplacer dans la base B la colonne d’indice s par la colonne d’indice r
et retourner à 2)

(
Remarque: Si B = a i1 , a i2 ,… , a is ,… , a im ) alors la colonne
de B d’indice s est associée à la variable x is
Algorithme de simplexe: Exemple

Exemple: max Z = − x1 + 3x2


 s.à − x1 + 2x2 ≤ 6


 x1 + x2 ≤ 5
 x1 , x2 ≥ 0
Forme standard:
max Z = − x1 + 3x2
 s.à − x1 + 2 x2 + x3 =6
  −1 2 1 0  6
 A =  , b =  
 x1 + x2 + x4 =5  1 1 0 1  5
 x1 , x2 , x3 , x4 ≥0
Itération1 :
1 0 1 0
 = [a 3 , a 4 ], c = (0,0), cBT B−1 = (0,0).
−1
B =  T B =  ,
1 
Base initiale :
0 B  0 1 
B b = (6,5) = (x3 , x4 ) ,
−1 T T
Solution de base associée à la base :

x = (0 , 0 , 6 , 5 ) .
T
et
Calcul des coûts réduits :
c1 = −1, c2 = 3, c2 > 0 ⇒ x n’est pas optimale

Variable d’entrée :
c r = max c j = c 2 ⇒ la variable d’entrée est x2 .
Variable de sortie :
 bi  b1
min  , y i 2 > 0 =
6
= ⇒ la variable de sortie est xi1 = x3 .
 yi 2  y12 2

Changement de base : ( { }) 2 0
B′ = B − ais ∪{ar } = [a2 , a4 ] =  .
1 1

B = B′ .
Fin de l’itération 1
Itération2 : B −1 = 1  1 0
, c BT B −1 3 
=  , 0 .
2  −1 2 2 
B b = (3,2) = (x2 , x4 ) ,
−1 T T
Solution de base associée à la base :
x = (0 ,3 , 0 , 2 ) .
T

Calcul des coûts réduits :


1
c1 = , c3 = −3, c1 > 0 ⇒ x n’est pas optimale
2
Variable d’entrée :
c r = max c j = c1 ⇒ la variable d’entrée est x1 .
Variable de sortie :
 bi  b2
min  , y i1 > 0 =
2
= ⇒ la variable de sortie est xi = x4 .
 y i1  y 21 3 −1 2
2

( { })
Changement de base : B′ = B− ais ∪{ar } = [a1, a2 ] =  .
 1 1
1  −1 2
, c B B =  , .

Itération3 : −1
B =  T −1 4 1
2  1 1  3 3
T
 4 11
Solution de base associée à la base : B b =  ,  = ( x1, x2 )
−1 T

 4 11 
T  3 3 
x =  , ,0 ,0  .
 3 3 
4 1
Calcul des coûts réduits : c3 = − , c4 = −
3 3

maxc j ≤ 0 ⇒ x est optimale


Algorithme de simplexe sous forme de tableaux
Tableau associé à une itération de l’algorithme de simplexe:

Les indices
Les cœfficients des variables de base cB
de variables
de base Le second membre

i1 ci1
B -1 A B -1b
⋮ ⋮
im cim
c1 … cn
Les cœfficients
de la fonc. écon. c1 … cn cBT B−1b

Les coûts réduits


La valeur de la solution
Problème : comment passer d’un tableau (associé à une itération) à un
nouveau tableau (associé à l’itération suivante)
Solution : utiliser les opérations du pivot
Au cour d’une itération de l’algorithme de simplexe on détermine la variable de
sortie en calculant le minimum suivant

bs  bk 
= min : ykr > 0, yr = B−1ar , b = B−1b
ysr  ykr 
Opérations d’un pivot sur ysr
1) Diviser la ligne de la variable x is par le pivot ysr
La ligne obtenu est la ligne de la variable xr
2) Soustraire de la ligne i le multiple da la ligne de la variable xr par
yir pour tout i = 1, … , m et i ≠ s.
3) Retrancher de la ligne des coûts réduits le multiple de la ligne de la variable
xr par cr .
Exemple 1
max Z = − x1 + 3x2
 s.à − x1 + 2 x2 + x3 =6
  −1 2 1 0  6
 A =  , b =  
 x1 + x2 + x4 =5  1 1 0 1  5
 x1 , x2 , x3 , x4 ≥0  bi  b1
min  , y i 2 > 0 =
 yi 2  y12
Itération 1 1 2 3 4
3 0 -1 2 1 0 6

4 0 1 1 0 1 5
-1 3 0 0
Variable de pivot
sortie x 3 -1 3 0 0 0

max c j (Variable d’entrée x2 )


Itération 2 1 2 3 4
2 3 -1/2 1 1/2 0 3
4 0 3/2 0 -1/2 1 2
Variable de sortie x4 -1 3 0 0 pivot
1/2 0 -3/2 0 9
Variable d’entrée x1
1 2 3 4
Itération 3
2 3 0 1 1/3 1/3 11/3
1 -1 1 0 -1/3 2/3 4/3
-1 3 0 0
0 0 -4/3 -1/3 29/3
1 2 3 4
2 3 0 1 1/3 1/3 11/3
1 -1 1 0 -1/3 2/3 4/3
-1 3 0 0
0 0 -4/3 -1/3 29/3
max c j ≤ 0
donc la solution est optimale est
T
 4 11 
x =  , ,0 ,0 
3 3 
Exemple 2
maximiser3x1 + 5x2
 x1 + x3 = 4
 + x4 = 12
 2 x2
sujet à  .
3x1 + 2x2 + x5 = 18
 x1 , x2 , x3 , x4 , x5 ≥ 0
Itération1 1 2 3 4 5
3 0 1 0 1 0 0 4
4 0 0 2 0 1 0 12
5 0 3 2 0 0 1 18
3 5 0 0 0
3 5 0 0 0 0
Itération1  bi  b2
min  , y i 2 > 0 =
1 2 3 4 5
 yi 2  y 22
3 0 1 0 1 0 0 4
4 0 0 2 0 1 0 12
5 0 3 2 0 0 1 18
3 5 0 0 0
Variable de
Pivot
3 5 0 0 0 0
sortiex 4
max c j = c 2 = 5 > 0 (Variable d’entrée x2 )
Nouveau
3 0 1 0 1 0 0 4
tableau
2 5 0 1 0 1/2 0 6

5 0 3 0 0 -1 1 6

3 5 0 0 0

3 0 0 -5/2 0 30
 bi  b3
Itération2 min  , y i1 > 0 =
1 2 3 4 5
 y i1  y 31
3 0 1 0 1 0 0 4
2 5 0 1 0 1/2 0 6
5 0 3 0 0 -1 1 6
3 5 0 0 0
Variable de Pivot
sortie x 5
3 0 0 -5/2 0 30

max c j = c1 = 3 > 0 (Variable d’entrée x1 )


Nouveau 3 0 0 0 1 1/3 -1/3 2
tableau
2 5 0 1 0 1/2 0 6

1 3 1 0 0 -1/3 1/3 2

3 5 0 0 0

0 0 0 -3/2 -1 36
Itération 3
1 2 3 4 5
3 0 0 0 1 1/3 -1/3 2
2 5 0 1 0 1/2 0 6
1 3 1 0 0 -1/3 1/3 2
3 5 0 0 0
0 0 0 -3/2 -1 36

max c j = c 5 ≤ 0 ⇒ La solution est optimale

La solution optimale est x = (2 , 6 , 2 , 0 , 0 )


T
Exemple 3
maximiser - x1 + 2 x2 + x3
 x1 + x2 + x3 ≥ 4
2 x − x3 ≥ 3

sujet à  1 .
 x2 + x3 ≤ 2
 x1 , x2 , x3 ≥ 0
Forme Standard:
maximiser - x1 + 2 x2 + x3
 x1 + x2 + x3 − x4 =4
2 x − x3 − x5 =3
 1
sujet à  .
 x2 + x3 + x6 =2
 x1 , x2 , x3 , x4 , x5 , x6 ≥0
maximiser -x1 + 2 x2 + x3
 x1 + x2 + x3 − x4 =4
2 x − x3 − x5 =3

sujet à  1 .
 x2 + x3 + x6 =2
 x1 , x2 , x3 , x4 , x5 , x6 ≥0
La matrice formées par les colonnes des variables d’écart ≠ matrice identité

 1 1 1 -1 0 0
 
A = . 2 0 - 1 0 - 1 0 
 0 1 1 0 0 1
 
Problème: solution de base initiale?

Solution : Utiliser des variables artificielles

max imiser − x1 + 2 x 2 + x 3 − Mz1 − Mz 2


 x1 + x2 + x3 − x4 + z1 =4
2 x − x3 − x5 + z2 =3

sujet à  1
 x2 + x3 x6 =2
 x1 , x2 , x3 , x4 , x5 , x6 , z1 , z2 ≥0
M un nombre positif très grand

 1 1 1 −1 0 0 1 0
 
A =  2 0 −1 0 −1 0 0 1
 0 1 0 0 0 1 0 0
 
Une base initiale est formée par les colonnes des variables z1 , z 2 et x 6
Itération 1:
1 2 3 4 5 6 z1 z2
z1 -M 1 1 1 -1 0 0 1 0 4
z2 -M 2 0 - 0 -1 0 0 1 3
1
6 0 0 1 1 0 0 1 0 0 2
Variable de
sortie z -1 2 1 0 0 0 -M -M
2
-1+3M 2+M 1 -M -M 0 0 0 -7M
max c j = c1 > 0 Base initiale = colonnes de
variables z1, z2 et x6

(Variable d’entrée x1 ) Pivot


Itération 2:
1 2 3 4 5 6 z1 z2

z1 -M 0 1 3/2 -1 1/2 0 1 -1/2 5/2

1 -1 1 0 -1/2 0 -1/2 0 0 1/2 3/2

6 0 0 1 1 0 0 1 0 0 2

-1 2 1 0 0 0 -M -M

0 2+M (3M+1)/2 M (M+1)/2 0 0 (1-3M)/2 -(5M+3)/2

Variable de max c j = c 3 > 0


sortie z1 Pivot
(Variable d’entrée x3 )
Itération 3:
1 2 3 4 5 6 z1 z2

3 1 0 2/3 1 -2/3 1/3 0 2/3 -1/3 5/3

1 -1 1 1/3 0 -1/3 -1/3 0 1/3 1/3 7/3

6 0 0 1/3 0 2/3 -1/3 1 -2/3 1/3 1/3

-1 2 1 0 0 0 -M -M

0 5/3 0 1/3 -2/3 0 (-1-3M)/3 (-3M+2)/3 -2/3

Toutes les variables artificielles sont hors base, donc on supprime les colonnes
associées à ces variables.
Itération 3:
1 2 3 4 5 6
3 1 0 2/3 1 -2/3 1/3 0 5/3

1 -1 1 1/3 0 -1/3 -1/3 0 7/3

6 0 0 1/3 0 2/3 -1/3 1 1/3

-1 2 1 0 0 0
Variable de
sortie x 6 0 5/3 0 1/3 -2/3 0 -2/3

max c j = c 2 > 0
Pivot
(Variable d’entrée x2 )
Itération 4:
1 2 3 4 5 6
3 1 0 0 1 -2 1 -2 1

1 -1 1 0 0 -1 0 -1 2
2 2 0 1 0 2 -1 3 1
-1 2 1 0 0 0 Pivot
Variable de
sortie x 3 0 0 0 -3 1 -5 1

max c j = c 5 > 0
(Variable d’entrée x5 )
Itération 5:
1 2 3 4 5 6
5 0 0 0 1 -2 1 -2 1

1 -1 1 0 0 -1 0 -1 2
2 2 0 1 1 0 0 1 2
-1 2 1 0 0 0
0 0 -2 -1 0 -3 2

max c j ≤ 0 ⇒ la solution est optimale

x = (2,2,0,0,1,0) T

S-ar putea să vă placă și