le simplexe pour les nuls - pierre fritschpierre.fritsch.free.fr/simplexe/simplexe.pdf · le...

2

Click here to load reader

Upload: doanhanh

Post on 06-Feb-2018

215 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Le simplexe pour les nuls - Pierre Fritschpierre.fritsch.free.fr/simplexe/Simplexe.pdf · Le simplexe pour les nuls Pierre ritscFh 12 décembre 2005 1 Le problème On considère le

Le simplexe pour les nuls

Pierre Fritsch

12 décembre 2005

1 Le problème

On considère le problème de programmation linéaire suivant :

max(cT x|Ax ≤ b

)où c est un vecteur de taille n, b un vecteur de taille m et A une matrice de dimension

m × n. n représente donc le nombre d'inconnues, et m le nombre de contraintes. On

suppose m ≤ n et rang (A) = m.

2 Algorithme du simplexe

� Soit I un sous-ensemble de n éléments de {1, 2, . . . ,m} et soit x solution de AIx = bI .

� Soit y tel que yi = (cA−1I )i pour i ∈ I et yj = 0 pour j /∈ I.

� Si y ≥ 0 alors x est solution du système.

� Sinon soit i le plus petit indice tel que yh < 0 et soit Ui la colonne correspondante

de A−1I ; déterminer pour chaque ligne Lj de la matrice A la valeur vj = −LjUi.

� Si ∀j, vj ≤ 0 alors cx est non borné pour Ax ≤ b.

� Sinon soit j tel quebj−Ljx

vjsoit minimum parmi les vj positifs. On pose alors I :=

I \ {i} ∪ {j} et on calcule x, intersection des hyperplans correspondants.

3 Un petit exemple

Prenons le cas de 2 variables x et y. On veut maximiser 4x + 5y tout en respectant les

contraintes x + y ≤ 52x + y ≤ 8x + 2y ≤ 8

Ce système se met sous la forme

A =

1 12 11 2

b =

588

c =[

4 5]

1

Page 2: Le simplexe pour les nuls - Pierre Fritschpierre.fritsch.free.fr/simplexe/Simplexe.pdf · Le simplexe pour les nuls Pierre ritscFh 12 décembre 2005 1 Le problème On considère le

On a donc n = 2 et m = 3.

Première étape

� On choisit I = {1, 2} . Les lignes correspondantes de A sont AI =[

1 12 1

]et celles

de b sont bI =[

58

]. On calcule x =

[32

], solution de AIx = bI .

� A−1I =

[−1 12 −1

]permet de calculer y =

[6 −1 0

], tel que yi =

(cA−1

I

)i=([

4 5] [

−1 12 −1

])i

=[

6 −1]ipour i ∈ I et yj = 0 pour j /∈ I.

� On n'a pas y ≥ 0.

� On prend donc i = 2 le plus petit indice tel que yh < 0 et Ui = U2 =[

1−1

]la

colonne correspondante de A−1I . On détermine pour chaque ligne Lj de la matrice

A la valeur vj = −LjUi −−LjU2 : v = −A U2 =

1 12 11 2

[1−1

]=

0−11

, i.e.v1 = 0 , v2 = −1 , v3 = 1 .

� On n'a pas ∀j, vj ≤ 0. J = {3} est l'ensemble des indices j pour lesquels vj est

strictement positif.

� Pour chaque élément j de J , on calculebj−Ljx

vj. Dans notre cas on se limite à j = 3

pour lequel b3−L3xv3

=8−

h1 2

i24 32

351 = 1. Cette quantité est la plus petite des

bj−Ljxvj

calculés. On garde donc j = 3 .

Deuxième étape

� On remplace donc I par I \ {i} ∪ {j} = {1, 2} \ {2} ∪ {3}, soit I = {1, 3} . On a

donc AI =[

1 11 2

]et bI =

[58

], qui donne x =

[23

], solution de AIx = bI .

� A−1I =

[2 −1−1 1

]donne cA−1

I =[

4 5] [

2 −1−1 1

]=

[3 1

]et y =

[3 0 1

].

� On a y ≥ 0 donc x =[

23

]est solution du système.

2