La méthode du simplexe
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.
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
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.
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.
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é.
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.
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.
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).
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
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
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
Exemple Forme canonique du programme linéaire : 2x+y ≤ 800 x+2y ≤ 700 y ≤ 300 x 0, y 0 Fonction économique à maximiser : Z = 30000x + 40000y
Forme standard Le problème est mis sous forme standard en ajoutant trois variables d’écart positives, e1, e2, e3. 2x+y+e1 = 800 x+2y+e2 = 700 y+e3 = 300 x 0, y 0, e1 0, e2 0, e3 0 Max(30000x+40000y)
Tableau du simplexe Variables x y e1 e2 e3 2ème membre Ratio 2 1 800 en base x y e1 e2 e3 2ème membre Ratio 2 1 800 700 300 Z 30000 40000
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.
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.
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.
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.
5) Application de l’algorithme du simplexe 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.
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
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.
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
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.
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.
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.
Méthode appliquée à l’exemple Base x y e1 e2 e3 2ème membre Ratio 2 1 800 700 300 Z 30000 40000 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}
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é.
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.
Variable entrante Base x y e1 e2 e3 2ème membre Ratio 2 1 800 700 300 Z 30000 40000 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.
Calcul des ratios Base x y e1 e2 e3 2ème membre Ratio 2 1 800 800/1 700 700/2 300 300/1 Z 30000 40000 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.
Variable sortante Base x y e1 e2 e3 2ème membre Ratio 2 1 800 800/1 700 700/2 300 300/1 Z 30000 40000 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.
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.
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.
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 membre Ratio 2 1 800 800/1 700 700/2 300 300/1 Z 30000 40000 Pour la ligne de e1, il faut lui retrancher la ligne du pivot. On remplace la ligne L1 par L1-L3 pivot
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
Tableau 2 L’optimum n’est pas atteint (1 TMS est >0) Variables en base x y e1 e2 e3 2ème membre Ratio 2 1 -1 500 -2 100 300 Z 30000 -40000 -12000000 L’optimum n’est pas atteint (1 TMS est >0)
Variable entrante, ratios et variable sortante du tableau 2 en base x y e1 e2 e3 2ème membre Ratio 2 1 -1 500 500/2=250 -2 100 100/1=100 300 300/0= Z 30000 -40000 -12000000 Variable entrante x et sortante e2
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
Tableau 3 L’optimum n’est pas atteint (1 TMS est >0) Variables en base x y e1 e2 e3 2ème membre Ratio 1 -2 3 300 100 Z -30000 20000 -15000000 L’optimum n’est pas atteint (1 TMS est >0)
Variable entrante, ratios et variable sortante du tableau 3 en base x y e1 e2 e3 2ème membre Ratio 1 -2 3 300 =300/3=100 100 =-100/2=-50 =300/1=300 Z -30000 20000 -15000000 Variable entrante e3 et sortante e1
Etape 1: Division du pivot par 3 Variables en base x y e1 e2 e3 2ème membre Ratio 1/3 -2/3 1 300/3=100 -2 100 300 Z -30000 20000 -15000000
Etape 2: Apparition des 0 sur le reste de la colonne Variables en base x y e1 e2 e3 2ème membre Ratio 1/3 -2/3 1 300/3=100 -2 100 300 Z -30000 20000 -15000000 Il faut remplacer L2 par L2 + 2*L1, L3 par L3-L1 et L4 par L4 -20000*L1
Tableau 4 L’optimum est atteint (Tous les TMS sont négatifs) Variables en base x y e1 e2 e3 2ème membre Ratio 1/3 -2/3 1 100 2/3 -1/3 300 200 Z -20000/3 -50000/3 -17000000 L’optimum est atteint (Tous les TMS sont négatifs)
Résultats Optimum : 17 000 000 X=300 Y=200 Vérification : Z=30000X + 40000Y=30000*300 + 40000*200=17 000 000