Vous êtes sur la page 1sur 20

PL : Cas Particuliers

Nombreux sont les problèmes susceptibles d’être formulés en tant que


maximisation ou minimisation d’un objectif en fonction de ressources limitées et
de contraintes mutuellement rivales. Si l’on arrive à exprimer l’objectif sous la
forme d’une fonction linéaire de certaines variables et que l’on peut spécifier les
contraintes concernant les ressources sous la forme d’égalités ou d’inégalités sur
ces variables, alors on a un problème de programmation linéaire.

Les programmes linéaires surgissent dans une foule d’applications concrètes. La


programmation linéaire a un grand nombre d’applications. N’importe quel traité
de recherche opérationnelle est rempli d’exemples de programmation linéaire, et
c’est un outil standard que l’on enseigne dans la plupart des écoles de gestion.

De manière informelle, un programme linéaire sous forme canonique est la


maximisation d’une fonction linéaire soumise à inégalités linéaires, alors qu’un
programme linéaire sous forme standard est la maximisation d’une fonction
linéaire soumise à des égalités linéaires. En principe, nous utiliserons la forme
canonique pour exprimer les programmes linéaires, mais il est plus commode
d’utiliser la forme standard pour décrire les détails de l’algorithme du simplexe.

L’algorithme du simplexe prend en entrée un programme linéaire et donne en


sortie une solution optimale. Il commence en un certain sommet du simplexe,
puis effectue une suite d’itérations. À chaque itération, l’algorithme emprunte un
côté du simplexe pour passer du sommet courant à un sommet adjacent dont la
valeur objectif n’est pas inférieure à celle du sommet actuel (en général, elle est
strictement supérieure.) L’algorithme du simplexe se termine quand il atteint un
maximum local, lequel est un sommet ayant une valeur objectif supérieure à
celles de tous les sommets adjacents. Comme la région de réalisabilité est
convexe et que la fonction objectif est linéaire, cet optimum local est en fait un
optimum global.

Bien que la vision géométrique fournisse une bonne vue intuitive du


fonctionnement de l’algorithme du simplexe, nous adoptons plutôt une vision
algébrique dans sa présentation. Nous commencerons ainsi par écrire le
programme linéaire sous forme standard, laquelle est un ensemble d’égalités
linéaires. Ces égalités linéaires expriment certaines des variables, dites «
variables de base », à partir d’autres variables, dites « variables hors-base ». Le
passage d’un sommet à un autre se fait ensuite via transformation d’une variable
de base en une variable hors-base et transformation d’une variable hors-base en
variable de base. Cette opération portant le nom de « pivot » et, vue de manière
algébrique, ce n’est rien d’autre que la réécriture du programme linéaire sous
une forme standard équivalente.

Nous avons traité dans la première partie de ce chapitre, le cas d’une application
directe de l’algorithme du simplexe avec des conditions « normales ». Ici, nous
nous intéresserons aux cas particuliers.

I – Test d’entrée indéterminé


Si deux ou plusieurs coefficients de la fonction objectif sont égaux, on ne sait
lequel choisir. On fait alors pour chaque cas le test de sortie et on choisit le
coefficient qui donne le plus grand résultat.

Exemple : déterminons dans le tableau suivant la variable qui entre dans la base
et celle qui en sort.

25 est la valeur sélectionnée par le Test * ; 20 est celle du Test **.

C’est le Test* qui donne la plus grande valeur. La variable E3 sort de la base et la
variable A rentre dans la base.
II – Cas de solutions multiples
Quand il y’a un 0 dans la ligne (ou dans la colonne) de pivot, cette ligne (ou cette
colonne) n’évoluera pas à l’itération suivante.

Donc s’il y’a un 0 dans la ligne de la fonction objectif et que ce 0 appartient à la


colonne de pivot, la fonction objectif n’évoluera pas à l’itération suivante.

A l’optimum, la présence d’un 0 dans la fonction objectif signifie qu’il y’a une
arête optimale (la présence de deux 0 indique qu’il y’a un plan optimal).

La solution optimale à mettre en œuvre est alors une combinaison linéaire


convexe des SRB données par chacun des tableaux possédant la même fonction
objectif.

Exemple : Résoudre le programme linéaire suivant

Forme standard :

Mise en œuvre de l’algorithme :

La variable X rentre dans la base. La variable E1 sort de la base. Le pivot est 2.


La solution donnée par ce tableau est optimale car tous les coefficients de la
fonction objectif sont positifs. Mais la présence d’un 0 dans la fonction objectif
signifie qu’il y’a une infinité de solutions optimales situées sur un segment de
droite. On peut donc déterminer une autre solution réalisable de base en
poursuivant l’exécution de l’algorithme.

La variable Y rentre dans la base. La variable X sort de la base. Le pivot est ½.

Solutions :

Les SRB des tableaux (1) et (2) sont optimales ainsi que toutes les combinaisons
linéaires convexes de ces deux solutions.

Une solution (X ; Y) quelconque est alors donnée par le système suivant :

Si λ = 0, on retrouve SRB(2) et si λ = 1, on retrouve SRB(1).


III- Les valeurs marginales
A l’optimum, les valeurs des variables d’écart représentent les marges entre les
valeurs limites des contraintes et les valeurs techniquement utiles.

Si des modifications sur les contraintes techniques interviennent par rapport au


programme initial, il est intéressant de pouvoir en mesurer les conséquences sur
la solution.

Les variations de la solution induites par des variations marginales (des petites
variations) sur une contrainte sont données par les valeurs des variables d’écart
dans la fonction objectif.

Les valeurs marginales des variables de base sont égales à 0.

Les valeurs marginales des variables hors base sont données par la ligne
« fonction objectif ».

Application : déterminez et analysez les valeurs marginales du programme


PyroFour.

Interprétation :

Si E1 varie de 1 alors Z varie de 100. Par exemple si la capacité de l’atelier M passe


de 270 à 263 heures, la marge diminue de 7 x 100 UM.

E2 = 0 car elle est de base. Cette contrainte n’étant pas saturée, on ne peut pas
connaître l’influence d’une modification de sa capacité sur le résultat.

Si E3 varie de 1 alors Z varie de 250. Par exemple, si la capacité de l’atelier T passe


de 360 à 365 heures, la marge augmente de 5 x 250 UM.
IV – Dualité
1. Le problème
Partant d’un programme linéaire de maximisation, il faut formuler un
programme linéaire dual dans lequel l’objectif est de minimiser et dont la valeur
optimale est égale à celle du programme linéaire originel.

Quand on parle de programmes linéaires duaux, on dit que le programme originel


est le programme linéaire primal.

Pour un même problème, le passage du Primal au Dual se fait en respectant les


règles de transformation suivantes :

- Un Max se transforme en Min.


- Les contraintes d’infériorité deviennent des contraintes de supériorité.
- Les variables structurelles du Primal sont les variables d’écart du Dual. Ce
qui signifie que le nombre de variables structurelles du Primal est égal au
nombre de contraintes du Dual.
- Les variables d’écart du Primal deviennent les variables structurelles du
Dual. Ce qui signifie que le nombre de contraintes du Primal est égal au
nombre de variables du Dual.
- L’ « écriture en lignes » du Primal devient une « écriture en colonnes »
pour le Dual.

Exemple : Pour la société Pyrofour, les deux programmes sont les suivants :
Le programme (1) est le Primal (c’est le programme de l’énoncé) et le programme
(2) est le Dual.

Pour former le Dual, on remplace la maximisation par une minimisation, on


permute les rôles des membres de droite et des coefficients de la fonction
objectif et l’on remplace l’inégalité inférieur ou égal par une inégalité supérieur
ou égal. Chacune des contraintes du Primal a une variable associée dans le Dual,
et chacune des contraintes du Dual a une variable associée dans le Primal.

2. Correspondance à l’optimum
Le Primal et le Dual sont liés à l’optimum par les règles de correspondance
suivantes :

- Les fonctions objectifs Z et W des deux programmes ont la même valeur


optimale.
- La valeur marginale d’une variable dans un programme est égale à la valeur
optimale de la variable associée dans l’autre programme.
- La valeur optimale d’une variable dans un programme est égale à la valeur
marginale de la variable associée dans l’autre programme.

Application : Donner les valeurs optimales et marginales des variables de chacun


des programmes de la société Pyrofour.
3. Interprétation du Dual
On peut interpréter le programme (2) de la façon suivante : Les variables A, B et C
peuvent être les prix unitaires des facteurs de production. On cherche alors à
minimiser le prix tout en restant au moins aussi rentable que pour la mise en
œuvre d’une production.

En effet, on sait que si l’on utilise 5 unités de l’atelier M, 7 unités de l’atelier O et


4 unités de l’atelier T, on peut fabriquer un four de type F1 ce qui rapporterait
1500 UM.

Il faut donc que l’on ait :

5 A + 7 B + 4 C ≥ 1500

En appliquant le même raisonnement pour la fabrication du four de type F2 on


obtient :

3 A + 8 B + 6 C ≥ 1800

D’une façon générale, le programme Dual associé à la maximisation d’un profit


sous des contraintes techniques de production est un programme de
minimisation des coûts de production sous des contraintes de rentabilité de la
production.

4. Utilisation du Dual
L’algorithme du Simplexe ne peut s’utiliser que pour des programmes mis sous la
forme standard, c’est-à-dire quand on a une fonction objectif à maximiser et des
contraintes d’infériorité.
Le passage de la forme canonique à la forme standard pour un programme où
l’on a une fonction à minimiser et des contraintes de supériorité ne pourra pas
faire apparaître de SRB évidente. En effet, lors d’un tel passage, les variables
d’écart seront précédées du signe -, ce qui n’est pas conforme à la définition
d’une base.

Pour résoudre de tels programmes, on passe donc du Primal (fonction objectif à


minimiser et contraintes de supériorité) au Dual (fonction objectif à maximiser et
contraintes d’infériorité).

On applique ensuite l’algorithme du Simplexe sur le Dual. On obtient une


solution optimale. La solution optimale du Primal sera alors donnée en utilisant
les règles de correspondance à l’optimum entre le Dual et le Primal.

Exemple : Un agriculteur désire préparer un engrais spécifique devant contenir,


pour une superficie donnée, les quantités minimales suivantes de quatre
composants A, B, C et D.

Composants A B C D
Quantités en kg 60 50 110 170
L’industrie chimique met sur le marché 2 sortes d’engrais composés E1 et E2
renfermant les différents composants dans les proportions suivantes (en
pourcentage) :

Composants
Engrais A B C D

E1 20 0 10 10
E2 0 10 10 20

Le coût de l’engrais E1 est de 2 UM par kg et celui de l’engrais E2 est de 3 UM par


kg.

Déterminez les quantités d’engrais E1 et E2 à acheter qui minimisent le coût de


fabrication de l’engrais spécifique.
Soit Z la fonction objectif.

Il s’agit de minimiser Z ; Z = 2 X1 + 3 X2

Pour chaque composant on a une contrainte de teneur minimale à respecter.

Pour le composant A : 0,2 X1 ≥ 60

Pour le composant B : 0,1 X2 ≥ 50

Pour le composant C : 0,1 X1 + 0,1 X2 ≥ 110

Pour le composant D : 0,1 X1 + 0,2 X2 ≥ 170.

Ecriture du programme linéaire

Pour pouvoir utiliser l’algorithme du Simplexe on écrit le programme Dual.


Y1, Y2, Y3 et Y4 sont les variables structurelles du Dual correspondant aux variables
d’écart du Primal.

Passage à la forme standard

A1 et A2 sont les variables d’écart.

Mise en œuvre de l’algorithme du Simplexe


Tous les coefficients de la fonction objectif sont positifs. La solution donnée par
le tableau est optimale.

Les valeurs marginales du Dual permettent de donner la solution du Primal.

Solution
W = Z = 2800 UM. Le coût minimal de fabrication de l’engrais spécifique est de
2800 UM.

Si en termes de valeurs marginales on a :

Y3 = 0 (c’est une variable de base du Dual) alors la contrainte 3 du Primal est


saturée. La teneur minimale en composant C est juste respectée.

Y4 = 0 (c’est une variable de base du Dual) alors la contrainte 4 du Primal est


saturée. La teneur minimale en composant D est juste respectée.

A1 = 500 alors X1 = 500 kg. Il faut acheter 500 kg d’engrais de type E1.

A2 = 600 alors X2 = 600 kg. Il faut acheter 600 kg d’engrais de type E2.
Y1 = 40 alors la contrainte 1 du Primal n’est pas saturée. Les quantités d’engrais
de chaque type assurent largement la teneur minimale en composant A (on a 40
kg supplémentaires).

Y2 = 10 alors la contrainte 2 du Primal n’est pas saturée. Les quantités d’engrais


de chaque type assurent largement la teneur minimale en composant B (on a 10
kg supplémentaires).

V – Variables artificielles
Lorsqu’un programme contient à la fois des contraintes de supériorité et
d’infériorité, il ne peut pas se mettre sous une forme canonique.

Si on le met sous une forme standard en introduisant des variables d’écart, on ne


trouvera pas de base évidente pour démarrer l’algorithme du Simplexe.

On utilise alors des variables artificielles pour obtenir une SRB qui permet de
démarrer l’algorithme du Simplexe.

1. Exemple
Le programme linéaire de la société Filafil contient à la fois des contraintes
d’infériorité et de supériorité.
Passage à la forme standard

Il n’y a pas de solution réalisable de base apparente (on ne trouve pas de matrice
unitaire dans la matrice des coefficients) à cause de E1 et de E2.

On introduit des variables artificielles positives A1 et A2 dans ces deux équations


et l’on pénalise la fonction objectif car ces variables artificielles constituent une
surestimation.

Finalement, les variables de base seront les variables artificielles et les variables
d’écart des autres équations. Les variables hors base seront les variables
structurelles et les variables d’écart des équations pénalisées.

La pénalisation de la fonction objectif z se fait de la manière suivante :

Soit z’ la fonction pénalisée.

- Pour un minimum :

- Pour un maximum :

où M est un nombre positif très grand.

La mise en œuvre de l’algorithme du Simplexe se fait sur le programme linéaire


pénalisé.
Quand les variables artificielles sortiront de la base, leur valeur s’annulera et
elles disparaîtront de la fonction objectif. A l’optimum , la fonction objectif ne
doit plus être pénalisée.

2. Programme linéaire pénalisé

Des équations (1) et (2), on tire :

A1 = 600 – L – A + E1

A2 = 800 – 2L 6 A + E3

La solution réalisable de base initiale est :

3. Algorithme du Simplexe
On construit les différents tableaux en indiquant à chaque fois la variable qui
entre dans la base, celle qui en sort et le pivot.

Au fur et à mesure que les variables artificielles sortiront de la base, on éliminera


la colonne correspondante dans le tableau.
La solution optimale est

A = 400

L = 200

-z = -1 240 000 ≡ z = 1 240 000 UM

Les contraintes (1) et (3) sont saturées car les variables E1 et E3 sont hors base.

Les contraintes (2), (4) et (5) ne sont pas saturées. Il reste 200 jours de travail
disponibles par rapport à la quantité maximale autorisée (contrainte (2) où E2 =
200).

Les contraintes de qualité sont respectées (contraintes (4) et (5)).

On retrouve donc les résultats donnés par la résolution graphique du programme


linéaire.
ANNEXE : Autre présentation des tableaux
de la méthode du Simplexe
Il existe une autre méthode de construction et de transformation des tableaux du
Simplexe que l’on rencontre également dans la littérature.

Construction du tableau
Le programme est mis sous la forme standard

Où Z désigne la fonction objectif, D le vecteur des coefficients de la fonction


objectif, X le vecteur des variables structurelles, E le vecteur des variables d’écart,
A la matrice des coefficients des contraintes et B le vecteur des résultats.

Le tableau sera rempli selon le schéma suivant :

Pour le programme Pyrofour, on obtient le tableau suivant :


Test de sortie

270 : 3 = 90

800 : 8 = 100

360 : 6 = 60

Transformation du tableau
La variable qui entre dans la base est celle dont le coefficient positif est le plus
élevé.

La variable qui sort de la base est celle dont le ratio

est le plus faible.

Le pivot est le coefficient qui se trouve à l’intersection de la ligne de la variable


sortante et de la colonne de la variable entrante.

Dans l’exemple ci-dessus, Y entre dans la base, E3 sort de la base et le pivot est 6.

Le tableau suivant s’obtient en :

 Remplaçant dans la colonne « base » la variable sortante par la variable


entrante ;
 Divisant les coefficients de la ligne du pivot par le pivot ;
 Transformant les autres lignes de manière à faire apparaître des 0 dans la
colonne du pivot (on utilise pour cela la ligne du pivot).
La ligne de E1 s’obtient en retranchant à l’ancienne ligne E1, la moitié de la ligne
de pivot (ligne de E3). (En effet, pour faire apparaître 0 à la place de 3, il faut
retrancher 1 / 2 de 6 à 3).

La ligne de E2 s’obtient en retranchant à l’ancienne ligne E2, les 8 / 6 de la ligne


de pivot (8 – 8/6 x 6 = 0).

La ligne de Z s’obtient en retranchant à l’ancienne ligne Z, 300 fois la ligne de


pivot (1800 – 300 x 6 = 0).

A partir du nouveau tableau, on détermine la nouvelle base. On arrête


l’algorithme quand tous les coefficients de la ligne de Z sont négatifs.

Pour le programme Pyrofour, le dernier tableau est le suivant :

Interprétation des résultats


Les valeurs des variables de base sont données dans la colonne Résultats.
Les valeurs des variables hors base sont nulles.
La valeur de Z est l’opposé du résultat donné dans le tableau.
On retrouve alors les résultats à l’optimum du programme Pyrofour.

Vous aimerez peut-être aussi