45
La méthode du simplexe

La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Embed Size (px)

Citation preview

Page 1: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

La méthode du simplexe

Page 2: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

1) Algorithme du simplexe

Cet algorithme permet de déterminer la solution optimale, si elle existe, d’un problème de programmation linéaire à n variables.

Le principe de la méthode est de transformer les contraintes qui sont des inéquations en équations en ajoutant des variables positives que l’on appelle variables d’écart. Puis on transforme ce système d’équations linéaires jusqu’à trouver la solution optimale.

Page 3: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

2) Les étapes de la méthode

Première étape : La formulation mathématique du problème

Deuxième étape : Mise sous forme standard du problème

Troisième étape : Application de l’algorithme du simplexe

Page 4: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

3) La formulation mathématique du problème (1)

A partir de l’énoncé du problème qui est donné en langage naturel, il faut obtenir sa formulation mathématique. C’est la phase de modélisation.

Il faut déterminer et décrire avec précision les variables du problème (unités et périodes de temps de l’observation).

Il faut déterminer et classer les contraintes en vérifiant l’homogénéité des unités.

Page 5: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

3) La formulation mathématique du problème (2)

Il faut déterminer la fonction économique (ou objectif) et donner le type d’optimisation recherchée (maximum ou minimum)

Les contraintes et la fonction économique doivent être linéaires par rapport aux variables du problème sinon l’algorithme du simplexe n’est pas applicable.

Page 6: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

4) Mise sous forme standard du problème

Un problème de programmation linéaire est dit sous forme standard s’il vérifie les conditions suivantes : Les variables du problème doivent

toutes être positives. Le type d’optimisation doit être

une recherche de maximum. Les contraintes sont des

contraintes d’égalité.

Page 7: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

4-a) Transformation des variables

Si une variable x est négative, on pose y = -x. La nouvelle variable y est positive

et les contraintes et la fonction économique restent bien linéaires après avoir remplacé l’ancienne variable x par –y.

Page 8: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

4-a) Transformation des variables

Si une variable x est de signe quelconque, on pose x = x1-x2 où x1 et x2 sont deux nouvelles variables positives. Les contraintes et la fonction économique restent bien linéaires après avoir remplacé l’ancienne variable x par x1-x2.

Page 9: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

4-a) Transformation des variables

Si le type d’optimisation est une recherche de minimum pour la fonction économique Z, on procède à un changement de fonction économique en considérant –Z (qui est toujours une fonction linéaire des variables).

On a la propriété min(Z) = - Max(-Z).

Page 10: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

4-b) Transformation des inégalités en égalités

Pour cela, il faut ajouter des variables dites variables d’écart qui doivent être également positives.

On suppose qu’initialement les variables sont : x1, x2, … , xn

Page 11: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Cas d’une contrainte de type ou

Au départ on a la contrainte : a1x1 + a2x2 + …. + anxn b On ajoute une variable d’écart e

positive, la contrainte devient : a1x1 + a2x2 + …. + anxn + e = b Les nouvelles variables sont :

x1, x2, … , xn, e

Page 12: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Cas d’une contrainte de type ou

Au départ on a la contrainte : a1x1 + a2x2 + …. + anxn b On retranche une variable d’écart e

positive, la contrainte devient : a1x1 + a2x2 + …. + anxn - e = b Les nouvelles variables sont :

x1, x2, … , xn, e

Page 13: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Exemple

Forme canonique du programme linéaire :2x+y ≤ 800x+2y ≤ 700y ≤ 300

x 0, y 0Fonction économique à maximiser :Z = 30000x + 40000y

Page 14: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Forme standard

Le problème est mis sous forme standard en ajoutant trois variables d’écart positives, e1, e2, e3.

2x+y+e1 = 800x+2y+e2 = 700y+e3 = 300

x 0, y 0, e1 0, e2 0, e3 0Max(30000x+40000y)

Page 15: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Tableau du simplexe

 Variablesen base

x y e1 e2 e3 2ème membre

Ratio

e1 2 1 1 0 0 800

e2 1 2 0 1 0 700

e3 0 1 0 0 1 300

Z 30000 40000 0 0 0 0

Page 16: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Variables en base et hors-base

On distinguera les variables dites « en base » et les variables dites «  hors base ». Les variables hors base ont toujours une valeur nulle, les variables en base sont celles pour lesquelles ne figurent qu’un seul 1 sur leur colonne, les autres coefficients sont nuls sur la colonne.

Au départ Base={ e1, e2, e3} HorsBase={ x,y} Les coefficients de la fonction économique sont

appelés taux marginaux de substitution (ou TMS). Ici 30000 et 40000.

Page 17: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Remarque 1

Si la fonction économique a dans son expression un coefficient constant, il faut le faire figurer dans l’avant-dernière colonne (celle des seconds membres) avec le signe opposé.

C’est dans cette même cellule que l’on trouvera l’opposé de la valeur de la fonction économique pour la solution en cours et donc l’opposé de l’optimum quand il sera atteint.

Page 18: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Remarque 2

On remarque, dans le tableau initial, que pour chaque variable en base on a un seul un sur la colonne et les autres coefficients sont nuls. A chaque étape, le tableau devra répondre à cette exigence.

Page 19: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Constitution du tableau

Quand le problème est mis sous forme standard, on peut appliquer l’algorithme du simplexe. Les différentes équations linéaires sont placées dans un tableau. Chaque équation est une ligne du tableau, la dernière ligne est réservée pour la fonction économique.

Les colonnes correspondent aux variables du problème. A droite du tableau l’avant dernière colonne contient les seconds membres des équations. La dernière colonne contient ce que l’on appelle les ratios qui seront expliqués plus loin.

Page 20: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Les calculs qui sont effectués sont des calculs de combinaisons linéaires sur les lignes du tableau.

On suppose comme cela est signalé dans la remarque ci-dessus que toutes les variables d’écart ont un coefficient 1.

On recherche un maximum de la fonction économique.

5) Application de l’algorithme du simplexe

Page 21: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Départ de l’algorithme

Au départ, on a une solution réalisable du problème en considérant que les variables d’écart sont égales aux seconds membres et que les autres variables sont nulles.

Cette solution respecte bien les contraintes de positivité et les égalités sont satisfaites

Page 22: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Principe de l’algorithme

A chaque étape de l’algorithme, on choisit une variable hors base que l’on appelle variable entrante et une variable en base que l’on appelle variable sortante afin d’améliorer la solution précédente.

Puis on transforme le tableau pour le remettre sous sa forme standard. En effet, les colonnes des variables en base ne doivent avoir qu ‘un seul 1 et des 0 ailleurs.

Cette transformation se fait par combinaison linéaire des lignes.

Page 23: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Choix de la variable entrante

On choisit celle dont le TMS est strictement positif et le plus grand possible.

Si tous les TMS sont négatifs ou nuls, l’optimum est atteint. L’algorithme s’arrête

Page 24: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Choix de la variable sortante

Après avoir choisi la variable entrante, on calcule pour chaque ligne représentant une contrainte, le ratio qui est le rapport entre le coefficient du deuxième membre de la contrainte et le coefficient sur la colonne de la variable entrante.

Ce ratio peut être infini si le coefficient est nul.

La variable sortante est celle dont le ratio est le plus petit strictement positif.

Page 25: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Transformation du tableau

Après choix de la variable entrante et de la variable sortante, on transforme le tableau.

L’intersection de la colonne de la variable entrante et de la ligne de la variable sortante s’appelle le pivot.

Il faut transformer le tableau par combinaisons linéaires sur les lignes pour faire apparaître un 1 sur le pivot et des 0 ailleurs sur la colonne de la nouvelle variable en base.

Page 26: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Fin de l’algorithme

L’optimum est atteint lorsque tous les TMS sont négatifs. Les variables hors base sont nulles. Les valeurs des variables en base se lisent directement sur le tableau puisque leur coefficient est 1 et que les autres variables qui ont un coefficient non nuls sur la même ligne sont hors base.

La valeur de l’optimum est l’opposé de la valeur qui figure sur la ligne de la fonction économique à l’avant dernière colonne. On vérifiera cette valeur en remplaçant les valeurs des variables dans la fonction économique.

Page 27: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Méthode appliquée à l’exemple

Base x y e1 e2 e3 2ème

membre Ratio

e1 2 1 1 0 0 800

e2 1 2 0 1 0 700

e3 0 1 0 0 1 300

Z 30000 40000 0 0 0 0

A ce stade les variables en base sont e1, e2 et e3. On remarque que pour chaque variable en base on a un seul 1 sur la colonne et que les autres coefficients sont nuls.Base={e1, e2, e3}Les variables hors base sont x et y.HorsBase={x, y}

Page 28: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Remarques sur le tableau initial

On admettra qu’à chaque étape, les variables hors base sont nulles. Les variables en base se calculent dans le tableau en tenant compte du fait que les variables hors base sont nulles.

Avec ce tableau initial, on a une solution intermédiaire (au départ) :

x=0 et y=0 (car ces variables sont hors base)

e1=800, e2=700, e3=300. En effet, chaque ligne du tableau correspond à une égalité.

Page 29: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Remarques sur le tableau initial

La valeur de Z est l’opposé de la case 2ème membre de la ligne de Z. On peut la recalculer, par vérification, avec la formule Z=40000x+30000y. Initialement on a donc :

Z=0 (puisque x et y sont nuls) On n’est pas à l’optimum car les TMS

(Taux Marginaux de Substitution : coefficients de Z) ne sont pas tous négatifs ou nuls.

Page 30: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Variable entrante

Base x y e1 e2 e3 2ème

membreRatio

e1 2 1 1 0 0 800

e2 1 2 0 1 0 700

e3 0 1 0 0 1 300

Z 30000 40000 0 0 0 0

Variable entrante = Celle qui correspond au plus grand TMS strictement positif (taux marginal de substitution) coefficient >0 de la fonction objectif. Ici y est la variable entrante.

Page 31: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Calcul des ratios

Base x y e1 e2 e3 2ème

membreRatio

e1 2 1 1 0 0 800 800/1

e2 1 2 0 1 0 700 700/2

e3 0 1 0 0 1 300 300/1

Z 30000 40000 0 0 0 0

On calcule les ratios en divisant pour chaque variable de la base (pour chaque ligne), le coefficient du second membre par le coefficient de la colonne de la variable entrante.

Page 32: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Variable sortante

Base x y e1 e2 e3 2ème

membre Ratio

e1 2 1 1 0 0 800 800/1

e2 1 2 0 1 0 700 700/2

e3 0 1 0 0 1 300 300/1

Z 30000 40000 0 0 0 0

Variable sortante = Celle correspondant au plus petit ratio strictement positif (coefficient du 2ème membre/coefficient colonne de la variable entrante).

Ici e3 est la variable sortante.

Page 33: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Transformation du tableau

Pivot = intersection variable entrante et sortante

Dans la colonne du pivot : Il faut mettre un 1 à la place du pivot et un 0 ailleurs. En effet, il s’agit de la nouvelle variable en base.

Page 34: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Faire apparaître un 1 sur le pivot

Si le pivot n’est pas égal à 1, il faut diviser toute la ligne par le pivot.

Ici le pivot est déjà à 1.

Page 35: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Faire apparaître des 0 sur le reste de la colonne de la nouvelle variable en base

Il faut retrancher à chaque ligne un certain nombre de fois la ligne du pivot pour faire apparaître un 0.

Base x y e1 e2 e3 2ème

membreRatio

e1 2 1 1 0 0 800 800/1

e2 1 2 0 1 0 700 700/2

e3 0 1 0 0 1 300 300/1

Z 30000 40000 0 0 0 0

pivot Pour la ligne de e1, il faut lui retrancher la ligne du pivot. On remplace la ligne L1 par L1-L3

Page 36: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Autres transformations

Pour la ligne de e2, il faut lui retrancher deux fois la ligne du pivot.. On remplace L2 par L2-2L3

Pour la ligne de Z, il faut lui retrancher 40000 fois la ligne du pivot.. On remplace L4 par L4 – 40000L3

Page 37: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Tableau 2

 Variables en base

x y e1 e2 e3  2ème membre Ratio

e1 2 0 1 0 -1 500

e2 1 0 0 1 -2 100

y 0 1 0 0 1 300

Z 30000 0 0 0 -40000  -12000000

L’optimum n’est pas atteint (1 TMS est >0)

Page 38: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Variable entrante, ratios et variable sortante du tableau 2

 Variables en base

x y e1 e2 e3  2ème membre Ratio

e1 2 0 1 0 -1 500 500/2=250

e2 1 0 0 1 -2 100 100/1=100

y 0 1 0 0 1 300 300/0=

Z 30000 0 0 0 -40000  -12000000

Variable entrante x et sortante e2

Page 39: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Transformations sur le tableau 2

Le pivot est déjà à 1. Il faut remplacer L1 par L1 - 2*L2 L3 ne doit pas être changée (il y a

déjà un 0) L4 doit être remplacée par L4 –

30000*L2

Page 40: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Tableau 3

 Variables en base

x y e1 e2 e3  2ème membre Ratio

e1 0 0 1 -2 3 300

x 1 0 0 1 -2 100

y 0 1 0 0 1 300

Z 0 0 0 -30000 20000  -15000000

L’optimum n’est pas atteint (1 TMS est >0)

Page 41: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Variable entrante, ratios et variable sortante du tableau 3

 Variables en base

x y e1 e2 e3  2ème membre Ratio

e1 0 0 1 -2 3 300 =300/3=100

x 1 0 0 1 -2 100 =-100/2=-50

y 0 1 0 0 1 300 =300/1=300

Z 0 0 0 -30000 20000  -15000000

Variable entrante e3 et sortante e1

Page 42: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Etape 1:Division du pivot par 3

 Variables en base

x y e1 e2 e3  2ème membre Ratio

e1 0 0 1/3 -2/3 1 300/3=100

x 1 0 0 1 -2 100

y 0 1 0 0 1 300

Z 0 0 0 -30000 20000  -15000000

Page 43: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Etape 2:Apparition des 0 sur le reste de la colonne

 Variables en base

x y e1 e2 e3  2ème membre Ratio

e1 0 0 1/3 -2/3 1 300/3=100

x 1 0 0 1 -2 100

y 0 1 0 0 1 300

Z 0 0 0 -30000 20000  -15000000

Il faut remplacer L2 par L2 + 2*L1, L3 par L3-L1 et L4 par L4 -20000*L1

Page 44: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Tableau 4

 Variables en base

x y e1 e2 e3  2ème membre Ratio

e1 0 0 1/3 -2/3 1 100

x 1 0 2/3 -1/3 0 300

y 0 1 -1/3 2/3 0 200

Z 0 -20000/3 0 -50000/3 0  -17000000

L’optimum est atteint (Tous les TMS sont négatifs)

Page 45: La méthode du simplexe. 1) Algorithme du simplexe Cet algorithme permet de déterminer la solution optimale, si elle existe, dun problème de programmation

Résultats

Optimum : 17 000 000 X=300 Y=200 Vérification :

Z=30000X + 40000Y=30000*300 + 40000*200=17 000 000