Vous êtes sur la page 1sur 17

Chapitre 1 : Introduction à la Programmation Linéaire

Un problème de programmation linéaire est représenté par un problème de programmation


mathématique : les variables de décision sont des variables numériques, la représentation des
décisions possibles et du critère fait appel à des équations ou fonctions mathématiques. Plus
précisément, nous introduisons ici le problème particulier de programmation linéaire.

I. Exemples d’introduction

Exemple 1
Le problème

Une entreprise spécialisée dans la fabrication de matériels informatiques, propose à son catalogue
d'ordinateurs des centaines de référence. Pour simplifier, on ne s'intéresse ici qu'à deux types
d'ordinateurs : le IM4 et le IM5. Chacun d'eux comporte un processeur - le même - mais les deux
modèles diffèrent en particulier par le nombre de barrettes mémoires. Plus précisément, le IM4
comporte 2 barrettes alors que le IM5 en comporte 6.

Le marché pour ces composants est tel qu'on ne peut espérer acheter auprès des fournisseurs
habituels plus de 10 000 processeurs pour le trimestre à venir et plus de 48 000 barrettes.

Une autre limitation risque d’intervenir sur la production. L’assemblage est caractérisé, en particulier,
par une opération délicate, qui pour l’IM4 est de 3 minutes alors que pour l’IM5 elle n’est que d’une
minute ; on ne dispose a priori pour l’assemblage de ces deux types de machines que de 24 000
minutes pour le trimestre à venir.

Enfin, compte tenu des conditions actuelles du marché, on peut espérer retirer un profit de 400 euros
sur l’IM4 et de 800 euros sur l’IM5.

Le problème est de déterminer les quantités de chacun des deux types d'ordinateurs à fabriquer de
manière à obtenir le plus grand profit possible.

Modélisation du problème

Nous examinons dans l’ordre la représentation des décisions, des contraintes et de la fonction
objective.

1. Les variables de décisions

Les variables de décisions concernent les quantités à fabriquer, ce qui se représente naturellement par
deux nombres positifs x1 pour l’IM4 et x2 pour l’IM5.

2. Les contraintes

Il s’agit de représenter les différentes contraintes limitant la production de ces deux types
d’ordinateur.

La première porte sur la limitation du nombre de processeurs disponibles : chaque machine utilise un
processeur et on peut en disposer de 10 000. On doit donc imposer :

x1 + x2 ≤ 10 000

De même, le nombre de barrettes est limité. Compte tenu du nombre de barrettes dans chacun des 2
ordinateurs et du nombre de barrettes disponibles, cette contrainte se traduit par :
2x1 + 6x2 ≤ 48 000

Enfin, la contrainte portant sur le temps d'assemblage s'écrit :

3x1 + x2 ≤ 24000

L’ensemble des contraintes est donc caractérisé par l’ensemble des valeurs de x1 et x2 vérifiant :

x1 + x2 ≤ 10 000
2x1 + 6x2 ≤ 48 000
3x1 + x2 ≤ 24 000
x1 ≥ 0 x2 ≥ 0

3. La fonction objective :

On souhaite maximiser le profit qui est représenté par : 400x1 + 800x2.

Le problème initial est donc modélisé par le problème de programmation mathématique suivant :

Max Z = 400 x1 + 800 x2


Sous les contraintes
x1 + x2 ≤ 10 000
2x1 + 6x2 ≤ 48 000
3x1 + x2 ≤ 24 000
x1 ≥ 0x2 ≥ 0
Le modèle obtenu est un exemple de problème de programmation linéaire.

Exemple 2
Le problème

Une entreprise disposant de plusieurs lieux de production doit transporter ses produits finis vers des
entrepôts régionaux pour répondre aux besoins locaux. Pour simplifier l’exemple, on se contente de 2
usines avec 3 entrepôts. On peut a priori faire transiter le produit de n'importe quelle unité de
production vers n'importe quel entrepôt. Chaque unité de production a une capacité limitée.
Supposons, par exemple, que la capacité de production de l’usine 1 (notée U1) soit de 100 (en milliers
de tonnes) et celle de l’usine U2 de 150. Les entrepôts ont exprimé une demande qui doit être
satisfaite : l'entrepôt 1, noté E1, a une demande de 50 (en milliers de tonnes), le deuxième 70 et le
troisième 80.

Le coût de transport dépend bien sûr du trajet à effectuer et du mode de transport, donc de l'usine de
départ et de l'entrepôt d'arrivée. Le coût de transport par tonne de l’usine i (i = 1,2) vers l’entrepôt j
(j = 1,2,3) est donné dans le tableau suivant.

E1 E2 E3
U1 4 3 6
U2 3 5 3

Le problème est de déterminer les quantités à transporter de chaque usine vers chaque entrepôt, de
manière à minimiser le coût total de transport tout en respectant les contraintes de capacité des
usines et de demande des entrepôts.
Le modèle
1. Les variables de décisions

Elles portent sur les quantités à transporter. La quantité transportée (en milliers de tonnes) de l'usine i
vers le dépôt j est représentée par la variable positive xij (i = 1,2 et j = 1,2,3).

2. Les contraintes

Il s’agit de traduire les contraintes limitant les décisions. Il y a deux types de contraintes, celle portant
sur la capacité des usines et celle portant sur la demande des magasins.

- Limitation sur la capacité de production des usines

Il faut exprimer que, de chaque usine, ne peut partir une quantité supérieure à ce qu’elle est capable
de produire. Pour l’usine U1, x11 + x12 + x13 représente, en milliers de tonnes, ce qui part vers les
entrepôts. La contrainte sur la capacité de l’usine U1 est traduite par :

x11 + x12 + x13 ≤ 100

Pour l'usine 2, on a de même :

x21 + x22 + x23 ≤ 150

- Limitation sur la demande des entrepôts. Ce qui arrive à chaque entrepôt doit être égal à ce qu’il a
demandé.

Pour l’entrepôt E1, x11 + x21 représente la quantité qui lui est livrée. Sa demande étant de 50, on
doit donc imposer :

x11 + x21 = 50

On a de même pour les 2 autres entrepôts :

x12 + x22 = 70
x13 + x23 = 80

L’ensemble des décisions possibles est donc caractérisé par l’ensemble des valeurs des xij vérifiant :

x11 + x12 + x13 ≤ 100


x21 + x22 + x23 ≤ 150
x11 + x21 = 50
x12 + x22 = 70
x13 + x23 = 80
xij ≥ 0 i = 1,2 j = 1,2,3

3. La fonction objective

On souhaite minimiser le coût total de transport.

Si on fait l’hypothèse que sur chaque trajet le coût est proportionnel aux quantités transportées, le
coût total s’écrit :

4 x11 + 3 x12 + 6 x13 + 3 x21 + 5 x22 + 3 x23 que l’on souhaite minimiser.

Le problème initial est donc modélisé par le problème de programmation mathématique.


Min Z= 4 x11 + 3 x12 + 6 x13 + 3 x21 + 5 x22 + 3 x23
sous les contraintes
x11 + x12 + x13 ≤ 100
x21 + x22 + x23 ≤ 150
x11 + x21 = 50
x12 + x22 = 70
x13 + x23 = 80
xij ≥ 0 i = 1,2 j = 1,2,3

Ce problème, appelé "problème de transport classique", est, comme dans le premier exemple,
modélisé par un problème de programmation linéaire.

II. Définition d’un problème de programmation linéaire


Le modèle type de programmation linéaire peut être retenu pour représenter de nombreux problèmes.

Un problème sera modélisé par un problème de programmation linéaire si :

• les décisions peuvent être représentées par des nombres réels (généralement positifs),
• les contraintes portant sur ces variables peuvent être représentées par des équations ou des
inéquations linéaires c'est-à-dire que les variables n'interviennent qu'au premier degré (pas de
carrés, pas de produit de variables),
• le critère de choix peut être représenté par une fonction linéaire des variables que l'on
souhaitera minimiser ou maximiser.

La forme générale d’un problème de programmation linéaire de n variables et p contraintes est :

Min ou Max c1x1 + c2x2 +....+ cj xj +…+ cnxn

Sous les contraintes

ai1 x1 + ai2 x2 +…+ ain xn ≤ , ≥ ou = di pour i = 1, ..p

xj ≥ 0 j = 1, ...,n

Les coefficients cj de la fonction objectif, les coefficients aij du premier membre des contraintes et les
seconds membres di des contraintes sont des données du problème.

Définitions

Une solution réalisable est un n-uplet (x1,...,xn) vérifiant toutes les contraintes.
Le domaine réalisable est l’ensemble de toutes les solutions réalisables.
Une solution optimale est une solution réalisable qui donne à la fonction objective la plus
grande (problème de maximisation) ou la plus petite valeur possible (problème de
minimisation) sur l’ensemble des solutions réalisables.

Les exemples de problème qui relèvent de la programmation linéaire sont fort nombreux. On peut
citer :

o les problèmes de mélange : quelle est la composition optimale d’un produit ?


o les problèmes de planification de production : quand et à quel moment doit-on
planifier la production d’un bien,
o les problèmes de transport, généralisation du problème de transport classique,
o les problèmes de planification d’horaires,
o les problèmes de découpe industrielle
Chapitre2 : Résolution graphique d'un problème de
programmation linéaire
I. Résolution graphique
De manière très générale, la résolution d’un problème de programmation linéaire nécessite la mise en
œuvre d’un algorithme. Nous en verrons le principe dans la leçon suivante.

Dans le cas où le problème ne comporterait que deux variables, on peut le résoudre graphiquement.
Cette résolution graphique permet de mettre en évidence certaines propriétés que possède n’importe
quel problème de programmation linéaire.

Considérons le problème de l’exemple 1 :

Max Z=400 x1 + 800 x2


x1 + x 2 ≤ 10 000 (1)
2x1 + 6x2 ≤ 48 000 (2)
3x1 + x2 ≤ 24 000 (3)
x1 ≥ 0 x2 ≥ 0

A chaque couple de variables x1 et x2, on associe un point du plan dont les coordonnées
correspondent aux valeurs des variables.

Les variables étant positives, ces points sont situés dans l'orthant positif (le quart Nord-Est du plan).

Chaque contrainte permet de délimiter une partie du plan.

Par exemple, la droite d'équation x1 + x2 = 10 000 définit 2 demi-plans.

Au-dessus de cette droite, les coordonnées des points du plan vérifient x1 + x2 > 10 000. On est donc
conduit à exclure ces points.

On fait de même pour les 2 autres contraintes.

On trace les droites d'équation


x1 + 2x2 = 48 000 et 3x1 + x2 = 24 000 et on
élimine les points situés au dessus de ces
droites.

Les solutions réalisables du problème


correspondent aux points du plan situés à
l'intérieur du polyédre O A B C D et sur ses
bords.

Il s'agit maintenant de déterminer parmi tous


ces points celui ou ceux qui correspondent à la
plus grande valeur possible pour la fonction
objectif Z.

Deux méthodes sont envisageables :

- Méthode des droites parallèles


- Méthode de recensement de sommets
La méthode de recensement des sommets : Cette technique consiste à :

déterminer les coordonnées de chaque sommet du polygone des solutions réalisables ;


substituer dans la fonction objectif les valeurs des coordonnées de chaque sommet ;
la plus grande valeur obtenue est le maximum recherché.

Ici le polygone convexe (OABCD) renferme toutes les solutions possibles. Il faut calculer les
coordonnées des sommets O, A, B, C et D, ces sommets étant forcément la rencontre de deux droites.

Sommet O (0,0) ZO = 0
Sommet A(0,8000) ZA = 6 400 000
Sommet B(3000,7000) ZB = 6 800 000
Sommet C(7000,3000) ZC = 5 200 000
Sommet D(0,8000) ZD = 3 200 000

Remarquons que le sommet B réalise le profit le plus élevé parmi les autres sommets et donc
correspond à l’optimum recherché.

La méthode des droites parallèles : Une fois le polygone des solutions admissibles représenté, il
s’agit de déterminer l’optimum qui se trouve forcément sur l’un des sommets du polygone. Cette
méthode consiste alors à :

Tracer la droite représentant la fonction


objective de valeur nulle Z = 0,
puis à repousser la parallèle à cette droite
jusqu’au sommet le plus éloigné de l’origine.
Les coordonnées de ce sommet fournissent la
solution optimale.

Dans notre cas le sommet optimal tel qu’il apparaît


dans la figure est le sommet de rencontre des droites
(1) et (2).

On peut conclure que sur l'ensemble du domaine des


solutions réalisables, celle qui donne la plus grande
valeur à la fonction objective correspond au point B
dont les coordonnées peuvent être calculées comme
point d'intersection des contraintes (1) et (2).

Analyse de solution

• La solution optimale du problème est x1 = 3 000 et x2 = 7 000


• La valeur maximale de la fonction objective est : 6 800 000.

Pour l’entreprise, ceci signifie que la répartition optimale entre les deux types d’ordinateurs est de
3000 ordinateurs de type IM4 et 7000 ordinateurs de type IM5 avec un profit maximal de 6 800 000€.

L’analyse de cette solution montre que tous les processeurs et toutes les barrettes sont utilisés, mais
qu'il reste du temps d’assemblage disponible.

On dit que les contraintes (1) et (2) sont saturées ou liées : elles sont vérifiées avec égalité à
l’optimum alors que la contrainte (3) est non saturée ou non liée : il y a une marge entre la valeur de
son premier et celle de son second membre à l’optimum.
II. Analyse de sensibilité
Un problème de programmation linéaire est défini par un certain nombre de paramètres. Ce sont :
• les coefficients de la fonction objective (cj),
• les seconds membres des contraintes (bi),
• les coefficients techniques (aij).

Si ces coefficients changent, la solution du problème de programmation linéaire peut être modifiée.
A partir de l’exemple de production des ordinateurs, nous pouvons étudier l’effet de telles variations.

Modification d’un coefficient de la fonction objectif

La modélisation et la résolution du modèle a été faite en supposant que le profit sur le IM4 était de
400 €. En fait, cette machine est très bien accueillie sur le marché et les coûts de fabrication sont
moins élevés que prévus. On peut donc espérer un profit plus important sur ce type de machine.
Faut-il en produire davantage même si cela diminuer la production de l'IM5 ?

Le profit p1 sur l’IM4 devient un paramètre du problème qui s'écrit maintenant :

Max (Z) p1 x1 + 800 x2


x1 + x2 ≤ 10 000 (1)
2x1 + 6x2 ≤ 48 000 (2)
3x1 + x2 ≤ 24 000 (3)
x1 ≥ 0 x2 ≥ 0

Analysons graphiquement les conséquences de la variation du profit sur l'IM4.


La droite représentative du profit avait pour équation 400 x1 + 800 x2 = constante.
La variation du profit sur l'IM4 implique que le coefficient de x1 dans cette équation varie et donc que
la pente de la droite représentative du profit varie.
Tant que la pente de cette droite reste comprise entre celle des droites (1) et (2), le raisonnement fait
lors de la résolution graphique conduit à la conclusion que la solution associée au point B est toujours
optimale.
L'intervalle de variation de p1 est donné par :
1/3 ≤ p1/800 ≤ 1 soit 800/3 ≤ p1 ≤ 800

On a donc mis en évidence un intervalle de variation du coefficient de x1 dans la fonction objectif sur
lequel la solution optimale n'est pas changée.
Dans cet exemple, ceci nous conduit à la conclusion que tant que le profit sur l'IM4 reste entre 800/3
et 800, il faut continuer à produire 3000 unités de l’IM4 et 7000 pour l'IM5.
Pour ces mêmes valeurs de p1, la valeur maximale du profit total sera égale à :
3 000 p1 + 800* 7000 = 3 000 p1 + 5 600 000

Une analyse similaire peut être faite pour le coefficient c2.


Modification d’un second membre d’une contrainte

Un deuxième problème se pose : actuellement, le nombre de processeurs que l'on pourrait acquérir
est estimé à 10 000. Mais l’incertitude sur les quantités susceptibles d'être livrées est grande.
On voudrait savoir quel serait l'impact sur la production d'une modification de cette quantité.

L'analyse graphique va nous apporter une réponse.


La contrainte portant sur le nombre de processeurs est représentée par la droite (1) dont l’équation :
x1+ x2 = 10 000 passe à x1 + x2 = 10 000 + δ

Graphiquement cela signifie que la contrainte (1) se déplace parallèlement à elle-même, vers le haut,
si δ est positif, vers le bas si δ est négatif.

On constate alors que le point B intersection des droites (1) et (2) en lequel se trouve actuellement la
solution optimale se déplace sur la droite (2).

Comme les pentes des droites (1) et (2) ne sont pas changées, la solution optimale reste à
l'intersection des contraintes (1) et (2), à condition cependant que ce point reste dans le domaine des
solutions réalisables.

Dans ces conditions, pour avoir la solution optimale, il suffit de déterminer les coordonnées du point
d'intersection des droites (1) et (2).
x1+ x2 = 10000 + δ et 2x1 + 6x2 = 48 000
Soit x1 = 3 000 + 3δ/2 et x2 = 7 000 - δ/2

Ces valeurs correspondent à la solution optimale, à condition que cette solution soit réalisable.
x1 ≥ 0 , x2 ≥ 0 et la contrainte (3) doit rester satisfaite :
x1 ≥ 0 ⟺ 3 000 + 3 δ /2 ≥ 0 ⟺ δ ≥ - 2 000
x2 ≥ 0 ⟺ 7 000 - δ /2 ≥ 0 ⟺ δ ≤ 14 000
Contrainte (3) satisfaite ⟺ 3 (3 000 + 3 δ /2) + 7 000 - δ /2 ≤ 24 000 ⟺ δ ≤ 2 000
Soit - 2 000 ≤ δ ≤ 2 000

Tant que δ reste compris entre -2000 et 2000, la solution optimale reste à l’intersection des
contraintes (1) et (2) : c’est à dire que les processeurs et les barrettes continuent d’être utilisés
entièrement alors qu’il reste toujours du temps d’assemblage disponible. Les quantités à fabriquer
dépendent cependant de δ, c’est à dire du nombre de processeurs disponibles.
Pour δ processeurs supplémentaires, la production de l’IM4 augmente de 3 δ/2 alors que celle de
l’IM5 diminue de δ/2.
La variation du profit sera alors égale à 400* 3δ/2 - 800* δ/2 = 200δ

Chaque processeur supplémentaire pourrait faire augmenter le profit de 200, ou au contraire, toute
diminution de ce nombre de processeurs le fera diminuer de 200 par processeur en moins, et ceci sur
un intervalle allant de - 2000 processeurs à + 2000 processeurs.

De cette information on doit pouvoir tirer les conséquences sur l’intérêt que l’on pourrait avoir à
trouver un autre fournisseur susceptible de fournir lui-aussi ce matériel à un prix qui, le cas échéant,
pourrait être supérieur au prix actuel, compte-tenu de ce que cela peut rapporter.

Nous venons de voir graphiquement quelles pouvaient être les conséquences d’une variation d’un
coefficient de la fonction objectif ou du second membre d’une contrainte. Tout problème de
programmation linéaire donne lieu à ce type d'analyse et les résultats obtenus ici sont généraux.

Modification d’un coefficient technique

La modification d’un coefficient technique changera la pente d’une droite associée à une contrainte.
Une analyse similaire aux précédentes pourrait être développée.
Chapitre 3 : Résolution analytique d'un problème de
programmation linéaire
La résolution graphique ne concerne que des problèmes avec 2 variables alors que les problèmes réels
peuvent en avoir plusieurs milliers, voire centaine de milliers. Dans ce chapitre, nous abordons un
algorithme de résolution d'un problème de programmation linéaire : l'algorithme du simplexe. Cet
algorithme est du à Dantzig -1947. Nous le présentons d'abord le principe sur un exemple avant d'en
donner la méthode des tableaux qui facilitent considérablement les calculs. Nous verrons ensuite
comment initialiser l’algorithme du simplexe pour résoudre un problème de programmation linéaire
lorsque la solution de départ n’est pas réalisable.

I. Principe de résolution analytique


Reprenons le problème présenté dans le chapitre précédant en changeant les unités pour simplifier
l’écriture :
Max Z=4x1 + 8x2
sous les contraintes
x1 + x2 ≤ 10 (1)
2x1 + 6x2 ≤ 48 (2)
3x1 + x2 ≤ 24 (3)
x1 ≥ 0 x2 ≥ 0

La variable x1 représente le nombre d'ordinateurs en milliers. Il en est de même pour x2.


Les seconds membres des contraintes sont alors divisés par 1000 et représentent respectivement le
nombre de processeurs disponibles (1), de barrettes (2) et de minutes d'assemblage (3) exprimés en
milliers.
Les coefficients de la fonction objective ont été divisés par 100 ; en conséquence, l'objectif est divisé
par 100*1000. Il est donc maintenant exprimé en centaine de milliers d'euros : le coefficient de x1
dans la fonction objectif, qui vaut maintenant 4, est le profit retiré de la vente de 1000 ordinateurs de
type IM4 en centaine de milliers d'euros. Il en est de même pour le coefficient 8 de x2 pour l'IM5.

La résolution graphique a conduit à la solution 3 milliers d'ordinateurs IM4 et 7 milliers d'ordinateurs


IM5 : x1 = 3, x2 = 7 avec un profit maximal de 68 (en centaine de milliers d'euros). Il s'agit
maintenant de retrouver ce résultat par le calcul.

Mise du problème sous forme standard

Dans un premier temps, on transforme le problème pour qu'il n'y ait que des contraintes d'égalité afin
de manipuler des systèmes d'équations et non d'inéquations.
Un problème de programmation linéaire est dit sous forme standard si toutes les contraintes sont des
contraintes d'égalité et toutes les variables sont positives.

Considérons la première contrainte :


x1 + x2 ≤ 10
On introduit une variable positive appelée "variable d'écart" qui mesure l'écart entre le deuxième et le
premier membre de l'inégalité.
x1 + x2 + e1 = 10 avec e1 ≥ 0

On fait de même dans les 2 autres contraintes :


2x1 + 6x2 ≤ 48 devient 2x1 + 6x2 + e2 = 48 avec e2 ≥ 0
3x1 + x2 ≤ 24 devient 3x1 + x2 + e3 = 24 avec e3 ≥ 0

Le problème initial est maintenant sous forme standard :


Max Z= 4x1 + 8x2
sous les contraintes
x1 + x2 + e1 = 10 (1)
2x1 + 6x2 + e2 = 48 (2)
3x1 + x2 + e3 = 24 (3)
x1 ≥ 0 x2 ≥ 0 e1 ≥ 0 e2 ≥ 0 e3 ≥ 0

Les coefficients des variables d'écart dans la fonction objectif sont nuls.

Etude de solutions particulières

Considérons le système d'équations :


x1 + x2 + e1 = 10 (1)
2x1 + 6x2 + e2 = 48 (2)
3x1 + x2 + e3 = 24 (3)
Ce système possède une infinité de solutions. Les solutions réalisables du problème sont les solutions
positives de ce système d'équations.

Pour obtenir une solution particulière, il suffit de donner à x1 et à x2 une valeur particulière.
Par exemple, si x1 = 2 et x2 = 6, on a e1 = 2, e2 = 8 et e3 = 12.
Toutes ces valeurs sont positives, donc cette solution est réalisable.

Si x1 = 2 et x2 = 8, on a e1 = 0, e2 = - 4 et e3 = 10.
La variable d'écart e2 est négative, la deuxième contrainte du problème initial n'est donc pas vérifiée.
Cette solution n'est pas réalisable.

Considérons une première solution réalisable, celle obtenue en donnant à x1 et à x2 la valeur 0.

Solution 1 : x1 = 0 x2 = 0 e1 = 10 e2 = 48 e3 = 24 z = 0

Test d'optimalité pour la solution 1


En examinant la fonction objective (z = 4x1 + 8x2), on constate que si on augmente la valeur de x1 ou
celle de x2, la valeur de la fonction augmentera : la solution 1 n'est pas optimale.

Construction de la solution 2
On construit une nouvelle solution en augmentant une seule des deux variables x1 ou x2 laissant
l'autre nulle. Le choix entre x1 et x2 peut être fait en considérant leur coefficient dans la fonction
objectif. Le coefficient de x2 est de 8 alors que celui de x1 n'est que de 4 : en application du "premier
critère de "Dantzig", on choisit d'augmenter x2 tout en laissant x1 nulle.

Etude des conséquences de l'augmentation de x2


Les variables étant liées entre elles par des égalités, lorsque x2 augmente, x1 restant nulle, la valeur
des autres variables est modifiée. Il faut faire en sorte de rester dans le domaine des solutions
réalisables. Toutes les variables doivent rester positives.

Posons x1 = 0, le système des contraintes devient :


x2 + e1 = 10 (1)
6x2 + e2 = 48 (2)
x2 + e3 = 24 (3)

On constate que lorsque x2 augmente, les 3 variables d'écart diminuent.


Limitation de la valeur que l'on peut donner à x2 :
Contrainte (1) x2 = 10 ⇒ e1 = 0
Contrainte (2) x2 = 48/6 = 8 ⇒ e2 = 0
Contrainte (3) x2 = 24 ⇒ e3 = 0
On ne peut faire augmenter x2 au-delà de 8.
Pour x2 égal à 8, la variable d'écart e2 dans la deuxième contrainte devient nulle.
A partir de la première solution obtenue en donnant à x1 et à x2 la valeur 0, on a construit une
deuxième solution meilleure puisque la fonction objectif vaut maintenant 64.

Solution 1 : x1 = 0 x2 = 0 e1 = 10 e2 = 48 e3 = 24 z = 0
Solution 2 : x1 = 0 x2 = 8 e1 = 2 e2 = 0 e3 = 16 z = 64

Il faut maintenant tester si la solution 2 est optimale.

Test d'optimalité pour la solution 2


Pour déterminer si la solution 2 est optimale, on modifie l'écriture du problème.
Dans le système actuel, les variables e1, e2 et e3 sont exprimées en fonction de x1 et x2.
x1 + x2 + e1 = 10 (1)
2x1 + 6x2 + e2 = 48 (2)
3x1 + x2 + e3 = 24 (3)

On réécrit le système de telle manière que les 3 variables e1, x2 et e3, qui sont non nulles dans la
solution 2, soient exprimées en fonction de x1 et e2 les 2 variables nulles.

Il faut que la variable x2 n'apparaisse plus que dans la contrainte (2), tout en conservant e1 dans la
première contrainte et e3 dans la troisième.

On divise l'équation (2) par 6, coefficient de x2, de manière à ce que ce coefficient passe à 1 :
2x1 + 6x2 + e2 = 48 (2) ⇒ x1/3 + x2 + e2/6 = 8 (2’)

On élimine x2 de l'équation numéro (1) sans faire apparaître e3 en retranchant à la contrainte (1) la
nouvelle contrainte (2') :
(1) - (2’) ⇒ 2x1/3 + e1 - e2 /6 = 2 (1’)

Pour éliminer x2 de la troisième équation sans faire apparaître e1 on retranche à la contrainte (3) la
contrainte (2').
(3) - (2’) ⇒ 8x1/3 - e2 /6 + e3 = 16 (3’)

En résumé, on obtient le système :


2x1/3 + e1 - e2 /6 = 2 (1')
x1 /3 + x2 + e2/6 = 8 (2')
8x1/3 - e2 /6 + e3 = 16 (3')

Lorsque dans ce nouveau système, qui est équivalent au premier, on donne à x1 et à e2 la valeur 0, on
retrouve la solution 2.
On peut maintenant tester son optimalité, en écrivant la fonction objectif en fonction x1 et e2, ce qui
est possible puisque toutes les variables peuvent s'exprimer en fonction de x1 et e2.
On a z = 4x1 + 8x2
De l'équation (2)' on tire x2 = 8 - x1/3 - e2/6 d'où :
z = 4x1 + 8 (8 - x1/3 - e2/6) = 64 + 4x1/3 – 4e2/3
Le coefficient de x1 est positif donc si x1 augmente, z va augmenter. La solution 2 n'est pas optimale.

Construction de la solution 3
On cherche une meilleure solution en augmentant x1 tout en laissant e2 nulle.
Le système des contraintes est actuellement écrit sous la forme :
2x1/3 + e1 - e2/6 = 2 (1')
x1/3 + x2 + e2/6 = 8 (2')
8x1/3 - e2/6 + e3 = 16 (3')

Si e2 = 0, le système devient :
2x1/3 + e1 = 2 (1')
x1/3 + x2 = 8 (2')
8x1/3 + e3 = 16 (3')
Comme précédemment, on constate que si x1 augmente, les 3 variables e1, x2, e3 diminuent.
Contrainte (1') x1 = 3 ⇒ e1 = 0
Contrainte (2') x1 = 24 ⇒ x2 = 0
Contrainte (3') x1 = 6 ⇒ e3 = 0

On ne peut faire augmenter x1 au-delà de 3. Pour x1 égal à 3, la variable d'écart e1 dans la première
contrainte devient nulle.
On a ainsi une troisième solution réalisable obtenue avec e2 = 0 et x1 = 3

Solution 3 : x1 = 3 x2 = 7 e1 = 0 e2 = 0 e3 = 8 z = 68

La fonction objective vaut maintenant 68, cette solution est meilleure que la solution 2. Il reste à
tester son optimalité.

Test d'optimalité pour la solution 3


On modifie à nouveau l'écriture du problème.
Actuellement, dans le système de contraintes e1, x2 et e3 sont exprimées en fonction de x1et e2. Il en
est de même pour la fonction objective.
Max ( z = 64 + 4 x1/3 - 4 e2/3)
2x1/3 + e1 -e2/6 = 2 (1’)
6x1 /3 + x2 + e2/6 = 8 (2’)
8x1/3 -e2/6 + e3 = 16 (3’)
x1 ≥ 0 x2 ≥ 0 e1 ≥ 0 e2 ≥ 0 e3 ≥ 0

On a augmenté x1 jusqu'à ce que e1 s'annule.


On permute le rôle joué par ces deux variables en faisant en sorte que ce soit désormais x1 qui figure
dans la seule première équation.

On utilise le même type de méthode que précédemment.


(1’) * 3/2 ⇒ x1 + 3 e1/2 - e2/4 = 3 (1”)
(2') - (1'') /3 ⇒ x2 - e1/2 + e2 = 7 (2”)
(3') - (1'')*8/3 ⇒ - 4e1 + e2/2 + e3 = 8 (3”)
En posant e1 = e2 = 0, on trouve la solution 3.

Pour tester si la solution 3 est optimale, on écrit la fonction objective en fonction de e1 et e2 :


z = 64 + 4 x1/3 - 4 e2/3
x1 + 3 e1/2 - e2/4 = 3 ⇒ x1 = 3 - 3 e1/2 + e2/4
On remplace dans z et on obtient :
z = 68 - 2e1 - e2

Si on regarde la nouvelle écriture du problème,


Max ( z = 68 - 2e1 - e2)
x1 + 3 e1/ 2 - e2/4 = 3 (1”)
x2 - e1/2 + e2 = 7 (2”)
- 4 e1 + e2/2 + e3 = 8 (3”)
x1 ≥ 0 x2 ≥ 0 e1 ≥ 0 e2 ≥ 0 e3 ≥ 0
Les coefficients de e1 et de e2 dans la fonction objectif sont négatifs, le maximum de z est atteint avec
e1 = e 2 = 0
La solution 3 est optimale.

On retrouve bien sûr les résultats obtenus graphiquement.

La valeur maximale est égale à : z = 68 pour x1 = 3 x2 = 7


L'analyse des variables d'écart nous permet de savoir les contraintes qui sont, à l'optimum, vérifiées
avec égalité. Ce sont celles pour lesquelles la variable d'écart est nulle.
e1 variable d'écart de la contrainte 1 nulle ⇒ contrainte (1) saturée (ou liée)
e2 variable d'écart de la contrainte 2 nulle ⇒ contrainte (2) saturée
e3 variable d'écart de la contrainte 3 non nulle ⇒ contrainte (3) non saturée

Les contraintes saturées sont intéressantes à mettre en évidence car ce sont elles qui limitent
l'augmentation de la fonction objective. Pour augmenter davantage la fonction objective, il faudra
"relâcher" ces contraintes.

Résolution analytique : résumé et analyse graphique

Pour arriver à la solution optimale par le calcul, nous n'avons en fait examiné que 3 solutions
particulières.
Solution 1
x1 = 0 x2 = 0 e1 = 10 e2 = 48 e3 = 24 z = 0
On augmente x2 en laissant x1 = 0
Solution 2
x1 = 0 x2 = 8 e1 = 2 e2 = 0 e3 = 16 z = 64
On augmente x1 en laissant e2 = 0
Solution 3
x1 = 3 x2= 7 e1 = 0 e2 = 0 e3 = 8 z = 68 (Solution optimale)

Examinons graphiquement la démarche poursuivie.

La solution 1 correspond au sommet 0.


L'augmentation de x2 en laissant x1 nulle, revient à
parcourir l'axe vertical.

Si x2 devient plus grand que 8, on sort du domaine


des solutions réalisables.

On s'arrête au sommet A qui correspond à la


solution 2.

L'augmentation de x1 en laissant e2 nulle, revient à


se déplacer le long de la droite associée à la
deuxième contrainte. Si x1 dépasse 3, on sort du
domaine.

On s'arrête en B qui correspond à la solution 3.


II. Algorithme du simplexe : méthode des tableaux
La méthode du simplexe peut être présentée sous forme de tableaux qui facilitent considérablement
les calculs. Reprenons le même cas traité par la méthode algébrique, sous sa forme standard :
Max Z= 4x1 + 8x2
sous les contraintes
x1 + x2 + e1 = 10 (1)
2x1 + 6x2 + e2 = 48 (2)
3x1 + x2 + e3 = 24 (3)
x1 ≥ 0 x2 ≥ 0 e1 ≥ 0 e2 ≥ 0 e3 ≥ 0

et présentons la solution algébrique sous forme d’une suite de tableaux.


Le premier tableau (Tab 0) correspondant à la solution de base de départ se présente comme suit :

Membre des
contraintes
Second
Variables de décision Variables d’écart

Tab 0 x1 x2 e1 e2 e3 bi
e1 1 1 1 0 0 10
Variables
de base

e2 2 6 0 1 0 48
e3 3 1 0 0 1 24
Z 4 8 0 0 0 0
Coefficients du système Coefficients de la fonction objective Z Valeur
des contraintes de Z

Détermination de la variable entrante

Selon le premier critère de Dantzig, on sélectionne dans la fonction objective Z la variable affectée du
coefficient positif le plus élevé. Donc la variable entrante est x2 (coefficient 8 dans Z).

Détermination de la variable sortante

Selon le second critère de Dantzig, il faut établir les rapports des seconds membres des contraintes
aux coefficients correspondants de la variable entrante (colonne x2) et sélectionner la variable du plus
petit rapport positif.
On divise donc successivement 10 par 1 (10), 48 par 6 (8) et 24 par 1 (24). Nous sélectionnons la
variable e2 (ligne correspondant à 8, plus petit rapport positif).

Tab 0 x1 x2 e1 e2 e3 bi Ratio
e1 1 1 1 0 0 10 10/1=10
e2 2 6 0 1 0 48 48/6=8
e3 3 1 0 0 1 24 24/1=24
Z 4 8 0 0 0 0

Le nombre pivot (intersection de ligne et colonne pivot) va nous permettre de transformer ce tableau
en un deuxième tableau correspondant à une solution améliorante.
Cette transformation se fait selon les étapes suivantes :
- Les coefficients de la ligne du pivot sont divisés par le pivot ;
- Les coefficients de la colonne du pivot (autre le pivot) sont nuls ;
- Si la ligne du pivot croise une colonne en zéro, la colonne reste inchangée ;
- Si la colonne du pivot croise une ligne en zéro, on recopie la ligne ;
- Ensuite, les autres coefficients sont obtenus par la règle du rectangle.

La règle du rectangle est la suivante (a pivot):

En appliquant ces règles on obtient le tableau suivant (Tab 1):


Tab 1 x1 x2 e1 e2 e3 bi Ratio
e1 2/3 0 1 -1/6 0 2 =3
/

x2 1/3 1 0 1/6 0 8 /
=24

e3 8/3 0 0 -1/6 1 16 =6
/

Z 4/3 0 0 -4/3 0 -64

Comme un nombre positif (4/3) fait partie de la ligne Z, la solution est à améliorer par une nouvelle
transformation. Soit le nouveau tableau simplexe (Tab 2) :

Tab 2 x1 x2 e1 e2 e3 bi
x1 1 0 3/2 -1/4 0 3
x2 0 1 -1/2 1/4 0 7
e3 0 0 -4 1/2 1 8
Z 0 0 -2 -1 0 -68
Tous les éléments de la ligne Z sont négatifs ou nuls. L’algorithme du simplexe s’arrête.

La solution optimale trouvée est : x1 = 3 x2= 7 e1 = 0 e2 = 0 e3 = 8 z = 68


(La dernière cellule donne la valeur de -z=-68 donc z=68).

La variable d’écart e3= 8 signifie que la troisième contrainte n’est pas saturée.
III. Recherche d’une solution de base réalisable de départ

Vous aimerez peut-être aussi