Vous êtes sur la page 1sur 5

Objectifs Programmation Linaire

La mthode du Simplexe (G. Dantzig 1947)

Mettre un PL sous une forme de reprsentation standard Regarder les tapes de lalgorithme du Simplexe

Gilles Goncalves Programmation linaire - 05/10/2006

Gilles Goncalves Programmation linaire - 05/10/2006

Notation matriciel
Fonction conomique z Variables de dcision X : vecteur colonne nx1 contraintes A : matrice mxn (avec mn)
m : nb de contraintes n : nb de variables

Forme gnrale dun PL

cot C : vecteur ligne 1xn second membre b : vecteur colonne 1xm

Gilles Goncalves Programmation linaire - 05/10/2006

Gilles Goncalves Programmation linaire - 05/10/2006

Forme canonique dun PL

Forme standard dun PL

Gilles Goncalves Programmation linaire - 05/10/2006

Gilles Goncalves Programmation linaire - 05/10/2006

Pourquoi des formes particulires ?


Vrifier les pr requis des mthodes de rsolution. Simplifier la prsentation des algorithmes. Logiciels du march acceptent des mlanges ( = )

Plan de production : nonc


Question :Quel est le plan de production qui maximise les ventes ?
Une entreprise fabrique 2 types de produits P1, P2 partir de 4 machines dont les disponibilits sont indiques dans le tableau 1 La marge unitaire de vente des produits sont indiques dans le tableau 2 On suppose que le march est capable dabsorber toute la production
Gilles Goncalves Programmation linaire - 05/10/2006

Gilles Goncalves Programmation linaire - 05/10/2006

Plan de production : donnes


P1 M1 M2 M3 M4 1 0 1 2 P2 0 1 1 1 Tableau 1 P1 marge 200,00 P2 150,00 Disponibilit 400 700 800 1000

Modlisation du problme
X1 : nb. Produits P1 X2 : nb. Produits P2 Max Z = 200 X1 + 150 X2 s.c. (C1) X1 400 (C2) X2 700 (C3) X1 + X2 800 (C4) 2X1 + X2 1000 (C5) X1, X2 0
Gilles Goncalves Programmation linaire - 05/10/2006

Tableau 2

Gilles Goncalves Programmation linaire - 05/10/2006

x2
1000 900 Z 800

Reprsentation graphique
C1: X1=400

Mise sous la forme standard


Transformation des ingalits en galits
introduction de variables dcarts (~ ce qui reste disponible) N variables initiales + M variables dcarts (M contraintes) Ici (C1) (C2) (C3) (C4) (C5) X1 + X3 = 400 X2 + X4 = 700 X1 + X2 + X5 = 800 2X1 + X2 + X6 = 1000 X1, X2, X3, X4, X5, X6, 0

F
700 600 Z 500

E C (200,600)

C2: X2=700

C3: X1+X2=800 400 300 200 100

D B
C4: 2X1+X2=1000

A
0 100 200 300 400 500 600 700 800

x1

Gilles Goncalves Programmation linaire - 05/10/2006

Gilles Goncalves Programmation linaire - 05/10/2006

Solutions de base
Solution de base ralisable : tout X RN+M dont au moins N variables Xi = 0 Solution de base ralisable non dgnre : une solution de base ralisable comportant
N variables Xi = 0 (variables hors base) M variables Xj 0 (variables de base)

Solutions de base :mthode exhaustive (nave)


1 solution de base comporte au moins N variables = 0 les sommets du polydre sont donc dfinis par le nombre de combinaisons examiner
n Cm +n =

m + n! n!m!

Prop1 : les sommets du polydre sont les solutions de base ralisables (S) Prop2 : si S est non vide alors une solution de base ralisable qui est une solution optimale

Pour chaque sommet, on evalue la fonction conomique et on choisit alors le sommet pour lequel z est maximun : Ex : n=15, m=10 3.268.760 cas problme courant n ~ m ~ 100

Gilles Goncalves Programmation linaire - 05/10/2006

Gilles Goncalves Programmation linaire - 05/10/2006

Mthode du simplexe
Principe : on part dune solution de base connue (gnralement le point 0) et chaque itration on passe un autre sommet qui amliore la fonction conomique le + rapidement possible Exemple : au point 0 (ne rien produire) X : (X1, , X6) = (0,0,400,700,800,1000) z= f(X) = 0 X1, X2 sont donc les variables hors base (=0) X3, X4, X5, X6 sont les variables de base (0)
Gilles Goncalves Programmation linaire - 05/10/2006

Tableau initial
X1 X3 X4 X5 X6 z 1 0 1 2 200 X2 0 1 1 1 150 X3 1 0 0 0 0 X4 0 1 0 0 0 X5 0 0 1 0 0 X6 0 0 0 1 0 b 400 700 800 1000 0

Variables de base (0) Coefficients des variables X dans z = f(X)

-f(X)

Gilles Goncalves Programmation linaire - 05/10/2006

Itration :
On veut amliorer f(X) on recherche le coef. le + lev dans f(X) (cj*= Maxj cj) Ici 200 variable X1 entre dans la nouvelle base. On va produire des units de P1 Combien peut on en produire ? on recherche la constraite la + restrictive (bi*/ai*j* = Mini bi /aij) Ici la contrainte C1 sature en premier X1= 400 et X3=0 . X3 sort de la base !

Itration 1: dtermination du pivot


Remarque : chaque itration de lalgorithme
1 variable passe zro (sort de la base) 1 autre devient positive (entre dans la base) Les variables dcarts indique les ressources disponibles Les variables initiales fournissent le plan de production

Pivot : terme situ lintersection de la ligne i et de la colonne j

X1 X3 X4 X5 X6 z 1 0 1 2 200

X2 0 1 1 1 150

X3 1 0 0 0 0

X4 0 1 0 0 0

X5 0 0 1 0 0

X6 0 0 0 1 0

b 400 700 800 1000 0 X3 X4 X5 X6 z

X1 1 0 1 2 200

X2 0 1 1 1 150

X3 1 0 0 0 0

X4 0 1 0 0 0

X5 0 0 1 0 0

X6 0 0 0 1 0

b 400 700 800 1000 0

Gilles Goncalves Programmation linaire - 05/10/2006

Gilles Goncalves Programmation linaire - 05/10/2006

Ressources disponibles initialement

Rgles de Rcriture
Remarque : on cherche toujours exprimer les variables de base (X1, X4, X5, X6) ainsi que lobjectif en fonction des variables hors base (X2, X3). (C1) X1 + X3 = 400 X1 = 400 X3 (C2) X2 + X4 = 700 X4 = 700 X2 (C3) (400 X3)+X2+X5=800 X2 X3+X5=400 (C4) 2(400 X3)+X2+X6=1000 X2 2X3+X6=200 (C5) Xi 0 i Z=F(X) = 200(400 X3) + 150 X2 = 80000 200X3 + 150X2 Remarque : On est actuellement sur le point A (400,0,0,700,400,200) du graphique. Le gain ralis est de 80000. Ce point nest pas loptimum puisque F(X) peut augmenter avec X2. Il faudra donc ritrer le procd. Ces nouvelles quations vont dterminer le nouveau tableau

Rgles de Rcriture
(C1) X1 + X3 = 400 (C2) X2 + X4 = 700 (C3) X2 X3+X5=400 (C4) X2 2X3+X6=200 (C5) Xi 0 i Z=F(X)= 80000 200X3 + 150X2
X1 X1 X4 X5 X6 z 1 0 0 0 0 X2 0 1 1 1 150 X3 1 0 -1 -2 -200 X4 0 1 0 0 0 X5 0 0 1 0 0 X6 0 0 0 1 0 b 400 700 400 200 -80000

Gilles Goncalves Programmation linaire - 05/10/2006

Gilles Goncalves Programmation linaire - 05/10/2006

Itration 1: transformation du tableau


Remarque : aprs rcriture
la ligne pivot i ne change pas (ici ligne i=1) les lignes qui ne font pas intervenir la nouvelle variable de base Xj (ici j=1)ne changent pas galement (ici ligne 2) Pour les autres lignes on retranche k fois la ligne pivot s pour annuler le coefficient (ici lignes 3, 4, 5) X1 X2 X3 X4 X5 X6 b

Itration 2:
Avant
X1

Coefficient positif il est encore possible damliorer le gain

X1 1 0 0 0 0

X2 0 1 1 1 150

X3 1 0 -1 -2 -200

X4 0 1 0 0 0

X5 0 0 1 0 0

X6 0 0 0 1 0

b 400 700 400 200 -80000

pivot

X4 X5 X6 z

Avant
Coefficient positif il est encore possible damliorer le gain

X3 X4 X5 X6 z

1 0 1 2 200 X1

0 1 1 1 150 X2 0 1 1 1 150

1 0 0 0 0 X3 1 0 -1 -2 -200

0 1 0 0 0 X4 0 1 0 0 0

0 0 1 0 0 X5 0 0 1 0 0

0 0 0 1 0 X6 0 0 0 1 0

400 700 800 1000 0 b 400 700 400 200 -80000

X2 entre dans la base, X6 en sort


On a produit X1=400 et X2=200, on gagne 110000

X1

X2 0 0 0 1 0

X3 1 +2 +1 -2 +100

X4 0 1 0 0 0

X5 0 0 1 0 0

X6 0 -1 -1 1 -150

b 400 500 200 200 -110000

Aprs
On a produit X1=400 et X2=0, on gagne 80000

Aprs
-1 fois ligne 4 -1 fois ligne 4 -150 fois ligne 4
Gilles Goncalves Programmation linaire - 05/10/2006

X1 X4 X5 X2 z

1 0 0 0 0

X1 X4 X5 X6 z

1 0 0 0 0

-1 fois ligne 1 -2 fois ligne 1 -200 fois ligne 1


Gilles Goncalves Programmation linaire - 05/10/2006

Itration 3:
Avant
X1

Tous les coefficients de Z sont ngatifs il nest plus possible damliorer le gain. On est loptimum

Interprtation :
X1 X2 0 0 0 1 0 X3 0 0 +1 0 0 X4 0 1 0 0 0 X5 -1 -2 1 2 -100 X6 1 1 -1 -1 -50 b 200 100 200 600 -130000 b 400 500 200 200 -110000 b 200 100 200 600 -130000 X1 X4 X3 X2 z 1 0 0 0 0

X1 1 0 0 0 0 X1

X2 0 0 0 1 0 X2 0 0 0 1 0

X3 1 +2 +1 -2 +100 X3 0 0 +1 0 0

X4 0 1 0 0 0 X4 0 1 0 0 0

X5 0 0 1 0 0 X5 -1 -2 1 2 -100

X6 0 -1 -1 1 -150 X6 1 +1 -1 -1 -50

pivot

X4 X5 X2 z

X3 entre dans la base, X5 en sort


-1 fois ligne 3

On a produit X1=200 et X2=600 On gagne 130000 On est sur le point C du graphique Il reste des ressources pour les contraintes C1 car X3=200 C2 car X4 = 100 Les ressources des contraintes C3 et C4 sont satures car les X5 et X6 = 0 (variables hors base)
Gilles Goncalves Programmation linaire - 05/10/2006

X1 X4 X3 X2 z

1 0 0 0 0

Aprs

-2 fois ligne 3 +2 fois ligne 3 -100 fois ligne 3

On a produit X1=200 et X2=600, on gagne 130000


Gilles Goncalves Programmation linaire - 05/10/2006

Rsum de lalgorithme du simplexe


1: Test des coefficients de Z : Si j, cj0 alors loptimum est atteint, lalgorithme sarrte Sinon slectionner la colonne du pivot j* cj*= Maxj cj 2 : Dterminer la ligne i* pivot par bi*/ai*j* = Mini bi /aij* pour les aij* >0 3 : Construire le nouveau tableau
Diviser la ligne pivot par le pivot :
ai*j= aij / a*i*j

Annuler les coefficients de la colonne du pivot (autres que le pivot)


aij= aij - aij*ai*j

Annuler le coefficient de dans Z


cj= cj - cj*ai*j

4: Retour ltape 1

Gilles Goncalves Programmation linaire - 05/10/2006