Cours PL SIDI
Cours PL SIDI
Polycopié de cours :
Programmation linéaire
2023 - 2024
Sommaire
1
Chapitre 1
Remarque 1.1.1. En plus des trois éléments définis ci-dessus, la formulation d’un PL
exige une condition, dite de non-négativité des variables de décision.
Notez que cette condition ne présente aucune restriction en programmation linéaire (voir
2
1.2. FORMULATION D’UN PROGRAMME LINÉAIRE 3
Exemple 1.1.1. Une usine fabrique deux produits P1 et P2 nécessitant des ressources
d’équipement, de main d’œuvre et de matières premières disponibles en quantités limitées.
La fabrication d’une unité de P1 nécessite 3 heures d’équipement, 4 heures de main d’œuvre
et 2 unités de matières premières, tandis qu’une unité de P2 nécessite 9 heures d’équipe-
ment, 5 heures de main d’œuvre et 1 unité de matières premières. Les disponibilités en
équipement, main d’œuvre et matières premières sont limitées respectivement à 81, 55 et
20.
P1 et P2 rapportent à la vente 6 et 4 respectivement par unité.
Formuler le problème permettant la détermination des quantités de produits P1 et P2 que
doit produire l’usine afin de maximiser le bénéfice total venant de la vente des deux pro-
duits.
Pour formuler le PL associé, il suffit de suivre les 4 étapes mentionnées ci-dessus.
— Variables de décision xj : quantité de produit Pj fabriqué.
— Contraintes (disponibilité de chacune des ressources) :
3x1 + 9x2 ≤ 81
4x1 + 5x2 ≤ 55
2x + x ≤ 20
1 2
— Condition de non-négativité : x1 , x2 ≥ 0
— Fonction objectif : f (x1 , x2 ) = 6x1 + 4x2
Puisqu’on cherche à maximiser le bénéfice total, alors le PPL ainsi résultant est :
max f = 6x1 + 4x2
s.c 3x1 + 9x2 ≤ 81
(P ) 4x1 + 5x2 ≤ 55
≤ 20
2x1 + x2
et x1 , x2 ≥ 0
Forme canonique :
Tout problème de programmation linéaire peut être formulé sous la forme suivante :
max f = c1 x1 + c1 x2 + ... + cn xn = nj=1 cj xj
P
s.c a11 x1 + a12 x2 + ... + a1n xn ≤ b1
≤ b2
a21 x1 + a22 x2 + ... + a2n xn
.
(P )
.
.
≤ bm
am1 x1 + am2 x2 + ... + amn xn
et x1 , x2 , ..., xn ≥0
Remarque 1.2.1. Il est toujours possible de mettre un PPL sous forme canonique grâce
aux règles générales suivantes
1. On a toujours : max(f ) = −min(−f )
2. Si une variable n’est soumise à aucune condition de signe (xj ∈ R), on la remplacera
par deux variables uj ∈ R+ et vj ∈ R+ telles que xj = vj − uj
3. Si on a une contrainte du type égalité, il suffit de la transformer en double inégalités :
ax = b ⇐⇒ ax ≤ b et ax ≥ b ⇐⇒ ax ≤ b et − ax ≤ −b
Forme standard :
Les méthodes et algorithmes développés pour résoudre un PPL sont généralement basés,
non pas sur la forme canonique, mais plutôt sur ce que l’on appelle forme standard.
En effet il suffit de rendre toutes les contraintes de types égalités. Un tel passage est
toujours possible, grâce à l’ajout ou à la soustraction des variables positives dites variables
d’écart. De telles variables mesurent la différence entre les deux membres des contraintes
ei = (b − Ax)i , i = 1, 2, ..., k, où k ≤ m est le nombre de contraintes de types non égalité.
Noter que m désigne le nombre total des contraintes du problème.
A partir de la forme canonique de (P ), la forme standard est donnée par
t
max f = c x
(P ) s.c Ax =b
≥0
et x
La forme standard présente un avantage du fait qu’on n’aura recours qu’aux contraintes de
types égalités, tandis qu’elle augmente la dimension du problème : on passe d’un problème
à n variables de décisions (principales) à un problème de n+m variables dont n principales
et m de surplus ou d’écart.
Définition 1.3.1.
Définition 1.3.2.
Autrement dit, un point d’un polyèdre est un sommet s’il ne peut pas être vu comme la
combinaison linéaire convexe de deux autres points du polyèdre.
Tout point d’un polyèdre peut être vu comme combinaison linéaire convexe des sommets
du polyèdre.
Cela étant, la relation existante entre cette terminologie et le programme linéaire (P ) est
assurée par le résultat fondamental suivant.
Cela veut dire que parmi tous les points de l’ensemble admissible X, qui est convexe
par linéarité de A, seuls ses sommets (ou points extrêmes) qui sont accessibles d’être des
solutions optimales ; celles qui optimisent la fonction objectif f en respectant toutes les
contraintes imposées ainsi que la condition de non-négativité des variables de décision.
1.4 Exemples
Pour faire paraître l’utilité de la programmation linéaire en pratique, nous allons donner
quelques exemples de problèmes dans des domaines divers.
codéine.
• Grande taille : elle contient 1 grain d’aspirine, 8 grains de bicarbonate et 6 grains de
codéine.
Pour guérir la maladie, le sujet a besoin de 12 grains d’aspirine, 74 grains de bicarbonate
et 24 grains de codéine. Déterminer le nombre de pilules minimales à prescrire au sujet
pour qu’il soit guérit.
Réponse : Si x1 (resp. x2 ) est le nombre de pilules de petite (resp. grande) taille, le
programme linéaire est donné par.
min f = x1 + x2
s.c 2x1 + x2 ≥ 12
5x1 + 8x2 ≥ 74
≥ 24
x1 + 6x2
et x1 , x2 ≥ 0
Exemple 1.4.3. (Sélection de Médias)
Une entreprise désire effectuer une campagne publicitaire dans la télévision, la radio et
les journaux pour un produit lancé récemment sur le marché. Le but de la campagne est
d’attirer le maximum possible de clients. Les résultats d’une étude de marché sont donnés
par le tableau suivant :
Une condition nécessaire et suffisante pour que le problème de transport admette une
solution optimale est que
m
X n
X
ai = bj
i=1 j=1
m
X X n
X
xij = bj ⇒ xij = bj
i=1 i,j j=1
Ceci implique
m
X n
X
ai = bj
i=1 j=1
m
X n
X
Inversement, si ai = bj = T , on pose
i=1 j=1
ai b j
xij = ≥0
T
Montrons que ce choix de x vérifie les contraintes. En effet
n n Pn
1X j=1 bj
X
xij = ai b j = ai = ai
j=1
T j=1 T
et m m Pm
X 1X ai
xij = ai bj = bj i=1 = bj
i=1
T i=1 T
De plus, l’ensemble des solutions réalisables est borné. Il suffit d’observer que, pour une
paire d’indices i et j
n
X
xij = ai ≥ 0 ⇒ 0 ≤ xij ≤ ai
j=1
où x = (x11 , x12 , ..., x1n , x21 , ..., x2n , ..., xmn ) : on déroule la matrice xij suivant les lignes.
On fait de même pour c = (c11 , ..., c1n , c21 , ..., cmn ). Il y a donc n × m variables et n + m
contraintes.
Le vecteur d correspond à d = (a1 , a2 , ..., am , b1 , b2 , ..., bn ), tandis que la matrice A ∈
Mn+m,nm , elle possède les propriétés suivantes :
— Chaque colonne contient exactement deux entrées non nulles et qui sont égales à 1.
— Le rang de A est égal à m + n − 1.
— Chacune des lignes est une combinaisons linéaire des autres lignes.
— Il y a exactement m + n − 1 variables de base réalisables.
Remarque 1.5.1. Lorsque l’hypothèse d’égalité de l’offre et la demande totales n’est pas
satisfaite ; c’est à dire que le problème n’est pas mis sous forme standard, on ajoute une
destination (resp. une source) fictive et de ramener le problème au cas traité précédemment.
Exemple 1.5.1. Il s’agit de déterminer la façon optimale d’acheminer des biens à partir
de 3 entrepôts et de les transporter vers 4 destinations et cela à moindre coût.
L’offre totale est bien égale à la demande ce qui est conforme à l’hypothèse ci-dessus.
Nous avons donc m = 3, n = 4, x, c ∈ R12 , d ∈ R7 et A ∈ M7,12 :
x11 147
x12 121
x13 344
x14
552
450
450
x21 241
750
x 153
22
x= , c = , d = 400
x23 102
450
x24 312
550
x31 451
250
x32 364
x 557
34
x35 285
1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1
A=
1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0 0 1 0 0
0 0 1 0 0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1
14
2.2. ALGORITHME DU SIMPLEXE 15
A l’aide de cette approche, la solution optimale de (P ) est (x∗1 , x∗2 ) = (3, 5) pour laquelle
le maximum de z vaut z ∗ = 210
K = {x ∈ Rn : Ax = b et x ≥ 0}
De plus, nous savons que les sommets sont étroitement reliés aux solutions de base admis-
sibles. Concrètement, cela signifie que si on choisit une liste de m variables dites de base
B = {xj1 , xj2 , ..., xjm } associées à des colonnes {aj1 , aj2 , ..., ajm } qui forment une base de
l’espace colonne, on peut calculer l’unique solution de bases du système
AxB = b
1 0 1 0 0 6
−3 −1
0 1 0 5
2 10
5 −1 5
0 0 1
4 2 2
Donc
x1 = 6 − x 3
3 1
x2 = 2 + x3 − x5
2 2
5 5 1
x4 = − x3 + x5
4 4 2
En posant les variables hors-bases x3 = x5 = 0, on obtient bien la solution de base
y = (6, 2, 0, 2.5, 0).
Poursuivons un autre sommet adjacent z = (6, 0, 0, 4.5, 4) dont les variables de base sont
{x1 , x4 , x5 }. Ce sommet est adjacent à y mais pas à x. Poursuivons l’élimination de Gauss-
Jordan à partir du pivot a2,5
1 0 1 0 0 6
0 2 −3 0 1 4
−1 9
0 1 1 0
4 2
Donc
x 1 = 6 − x3
x5 = 4 − 2x2 + 3x3
9 1
x 4 = − x2 + x 3
2 4
En posant les variables hors-bases x2 = x3 = 0, on obtient bien la solution de base
z = (6, 0, 0, 4.5, 4).
L’opération décrite ci-dessus est aussi connue sous le nom de pivotement. Cette stratégie
sera à la base de la méthode du simplexe.
2.2.2 Algorithme
Étape 1 : On forme le tableau initial du simplexe
La base initiale de l’espace colonne sera {xn+1 , xn+2 , ..., xn+m }. Les autres variables seront
égales à 0 ce qui correspond au point de départ x = (0, 0, ..., 0).
Étape 2 : On doit choisir la colonne de pivot. Pour cela, on choisit l’indice j tel quel
Étape 3 : On doit choisir la ligne de pivot. Pour cela, on choisit l’indice i en utilisant le
critère du quotient
bi bk
= min{ : akj > 0 k = 1, 2, ..., m}
aij akj
où j est la colonne de pivot de l’étape 2.
s’agit de pivoter vers une solution de base adjacente qui doit être admissible. Le critère du
quotient assure que la nouvelle solution de base sera admissible. En effet, notons par j la
colonne de pivot de l’étape 2 et par i un choix quelconque de la ligne de pivot. A ce choix de
la ligne de pivot correspond une variable xji qui sortira de la base. Le critère du quotient
impose que aij > 0. La nouvelle base s’écrira B̃ = B ∪ {xj }\{xji } et on doit imposer
que la solution de base associée à B̃ doit être admissible. On procède par élimination de
Gauss-Jordan autour du pivot aij . La ligne Lk du tableau du simplexe (à cette itération)
est modifiée par
Li
Lk ← Lk − akj
aij
Ceci modifie la dernière colonne du tableau du simplexe par
akj
bk − bi ≥ 0.
aij
qui doit être positif car elle sera la nouvelle solution de base. Si akj > 0, on obtient
akj bk bi
bk − bi = ( − )akj ≥ 0
aij akj aij
bk bi
⇒ ≥ ∀k akj > 0.
akj aiJ˙
Si akj = 0, on obtient
Li
Lk − akj = Lk .
aij
Donc, aucun changement.
Si akj < 0, on a
akj
bk − bi ≥ 0
aij
car aij > 0 et les bi , bk ≥ 0. Donc seulement les valeurs akj > 0 sont à considérer et, selon
le calcul ci-dessus, on a que
bk bi bi bk
≥ ⇒ = min{ |akj > 0 k = 1, 2, ..., m}.
akj aiJ˙ aiJ˙ akj
Algorithme 2.2.1.
Initialisation : Trouver une forme simpliciale du problème (sommet de départ),
Test d’optimalité :
asj
• aij ←− aij − air
asr
air
• bi ←− bi − bs
asr
asj
• cj ←− cj − cr
asr
bs
• z ←− z − cr
asr
Retour au test d’optimalité.
z − c1 x1 − c2 x2 − ... − cn xn = 0 ⇐⇒ −z + c1 x1 + c2 x2 + ... + cn xn = 0
V ar x1 x2 x3 x4
x3 2 3 1 0 40
x4 4 2 0 1 48
−z 20 25 0 0 0
Les variables de base sont {x3 , x4 } et la solution de base est (0, 0, 40, 48) ce qui correspond
à l’origine dans le plan.
2. La fonction z varie plus rapidement en fonction de la variable x2 . Donc, on choisit la
deuxième colonne comme colonne de pivot. La variable x2 entre dans la base mais une
variable doit sortir.
3. On doit choisir la ligne de pivot. Pour cela, on utilise le critère du quotient
bi bk
= min{ : akj > 0 k = 1, 2, ..., m}
aij akj
où j est la colonne de pivot de l’étape 2. Le critère assure que la solution sera admissible.
Var x1 x2 x3 x4 critère
x3 2310 40 40 ÷ 3 = 40/3
x4 4201 48 48 ÷ 2 = 24
20 25 0 0 0
B = {x2 , x4 }.
V ar x1 x2 x3 x4
x2 2/3 1 1/3 0 40/3
x4 8/3 0 −2/3 1 64/3
−z 10/3 0 −25/3 0 −1000/3
V ar x1 critère
x2 2/3 40/3 40/3 ÷ 2/3 = 20
x4 8/3 64/3 64/3 ÷ 8/3 = 8
10/3 -1000/3
V ar x1 x2 x3 x4
x2 0 1 1/2 −1/4 8
x1 1 0 −1/4 3/8 8
−z 0 0 −15/2 −5/4 −360
7. L’algorithme se termine car tous les coefficients des colonnes x1 , x2 , x3 , x4 sont négatifs.
Donc, on ne peut augmenter davantage z. La solution optimale sera donc
x1 = 8, x2 = 8, x3 = 0, x4 = 0 avec z = 360
L’algorithme se termine à cette étape car tous les ci ≥ 0. La solution optimale sera
x1 = 3, x2 = 4, x3 = 12, x4 = 10, x5 = 0, x6 = 0, x7 = 15
Donc (x1 , x2 ) = (3.4) et z = −15.
Exemple 2.2.3. Cas d’un PPL dont la solution est non bornée :
min −2x1 − 3x2 + x3
−x1 − x2 − x3 ≤ 3
x1 − x2 + x3 ≤ 4
−x1 + x2 + 2x3 ≤
1
x ,x ,x 1 2 3≥ 0
x4 = 4 + 2x1 ≥ 0, x5 = 5 ≥ 0 , x2 = 1 + x1 ≥ 0.
Donc nous obtenons une famille de solutions admissibles qui dépend de la variables x1 ≥ 0.
Reportons dans la fonction objective (voir la dernière ligne du tableau), on obtient
Or x3 = x6 = 0, alors
z = −3 − 5x1 →x1 →∞ −∞
Donc le problème est non borné inférieurement et de ce fait n’admet pas de solution opti-
male.
Remarque 2.2.3. Selon cet exemple, on peut conclure que s’il n’est pas possible de calculer
la ligne de pivot pour un choix de colonne de pivot j, le problème n’admet pas de solution
optimale car il sera toujours non borné.
avec b ≥ 0. Lorsqu’on remet (P ) sous forme standard, on se demande est ce qu’on dispose
d’une écriture de la matrice du problème sous la forme A = [A, Im ], avec A la matrice
donnée ci-dessus et Im est l’identité d’ordre m. Sinon, on ne peut pas démarrer directement
l’algorithme du simplexe.
Un moyen pour remédier à ce problème, est d’utiliser la méthode dite des deux phases. Le
principe consiste à procéder selon les deux étapes suivantes.
— Phase 1 : Ajouter une variable dite artificielle ti pour chaque membre de la contrainte
i sans changer le type = bi . Puis remplacer la fonction objectif z par T = m
P
i=1 ti ,
et résoudre le problème de minimisation résultant par l’algorithme du simplexe (on
l’appelle problème artificiel).
Notons par SA∗ (t∗ , x∗ ) la solution optimale obtenue, et par T abf in le dernier tableau
du simplexe donnant SA∗ . S’il existe un indice k tel que t∗k 6= 0, alors on s’arrête
pour conclure que le problème d’origine (P ) n’admet pas de solution, sinon
— Phase 2 : c-à-d si t∗i = 0, ∀i = 1, ..., m, alors éliminer toutes les ti dans T abf in et
remplacer T par la fonction objectif z puis continuer l’algorithme du simplexe pour
conclure.
Notez qu’on dispose d’un sommet de départ pour le simplexe, ce qu’il faut c’est
juste d’exprimer z en fonction des variables hors base.
Exemple 2.3.1. L’approche graphique a donnée lieu à la solution optimale x∗ = (0, 10)
et z ∗ = 30 du PPL suivant. Retrouvons ce résultat à l’aide de la méthode des deux phases.
max z = 2x 1 + 3x 2
max z = 2x1 + 3x2
x + x ≤ 10 x + x + x = 10
1 2 1 2 3
(P ) → Forme standard
5x1 + 4x2 ≥ 20
5x1 + 4x2 − x4 = 20
x1 , x2 ≥ 0 x1 , x2 , x3 , x4 ≥ 0
On remarque que le problème n’admet pas de forme simpliciale pour démarrer le simplexe
car on n’a pas A = [A, Im ]. Donc on va considérer la phase 1 en introduisant le problème
artificiel donné par :
min T = t1 + t2
x + x + x + t = 10
1 2 3 1
5x1 + 4x2 − x4 + t2 = 20
x1 , x2 , x3 , x4 , t1 , t2 ≥ 0
V ar x1 x2 x3 x4 t1 t2
t1 1 1 1 0 1 0 10
t2 5 4 0 −1 0 1 10
−T −6 −5 −1 1 0 0 −30
Le sommet S0 n’est pas optimal car il existe des coûts négatifs. La variable x1 va entrer
dans la base au lieu de t2 .
V ar x1 x2 x3 x4 t1 t2
t1 0 1/5 1 1/5 1 −1/5 6
x1 1 4/5 0 −1/5 0 1/5 4
−T 0 −1/5 −1 −1/5 0 6/5 −6
V ar x1 x2 x3 x4 t1 t2
x3 0 1/5 1 1/5 1 −1/5 6
x1 1 4/5 0 −1/5 0 1/5 4
−T 0 0 0 0 1 1/5 0
Puisque tous les coûts sont positifs ou nuls, le sommet S2 = (4, 0, 6, 0, 0, 0) est optimal.
Comme t∗1 = t2 = 0, alors on passe à la phase 2. Éliminons les variables artificielles et
réécrivons z en fonction de x2 et x4 . on a
V ar x1 x2 x3 x4
x3 0 1/5 1 1/5 6
x1 1 4/5 0 −1/5 4
−z 0 7/5 0 2/5 −8
V ar x1 x2 x3 x4
x3 −1/4 0 1 1/4 5
x2 5/4 1 0 −1/4 5
−z −7/4 0 0 3/4 −15
V ar x1 x2 x3 x4
x4 −1 0 4 1 20
x2 1 1 1 0 10
−z −1 0 −3 0 −30
Puisque tous les coûts sont négatifs ou nuls, alors le sommet obtenu X 2 = (0, 10, 0, 20)
est optimal. C’est à dire (x∗1 , x∗2 ) = (0, 10) avec z ∗ = 30. Ce qui coïncide avec le résultat
graphique. D’autre part, on retrouve exactement les écarts des deux contraintes (x∗3 , x∗4 ) =
(0, 20).
Dans ce chapitre nous allons aborder deux notions qui jouent un rôle important en pro-
grammation linéaire. En plus de son interprétation concrète, la dualité peut être vue
comme une méthode de résolution d’un programme linéaire. Lorsqu’un PPL est résolu,
c’est à dire que la solution optimale est déterminer, la phase de l’analyse post-optimale sera
aussi traitée. Il s’agit d’étudier la variation (les effets de la perturbation) des paramètres
du programme linéaire à partir de cette solution optimale.
3.1 Dualité
30
3.1. DUALITÉ 31
Pour cela il suffit de le réécrire sous la forme d’un problème de type min :
− min
−ct x
s.c. −Ax ≥ −b
x≥0
et
Le dual sera
− max
−bt y
s.c. −At y ≤ −c
y≥0
et
ce qui est équivalent à
t
min w = b y
s.c. At y ≥ c
y≥0
et
En général, le passage d’un primal vers son dual respecte les transformations suivantes :
ce qui donne
t
min z = c x
s.c. Ax ≥ b
x≥0
et
Par exemple, il faudra 3 heures de travail par hectare pour ensemencer avec la plante B
et 2 heures de machinerie. La dimension totale du terrain est de 340 ha et nous disposons
Maintenant, regardons le point de vue d’un acheteur des activités de l’entreprise. Les coûts
marginaux sont mieux interprétés de la manière suivante :
— y1 = prix à offrir pour acheter un hectare de terrain,
— y2 = prix à offrir pour acheter une heure de travail,
— y3 = prix à offrir pour acheter une heure de machine,
— Question : Quel sera le problème à résoudre pour déterminer ces variables ?
La fonction objectif correspond au coût à payer pour acheter l’entreprise est
y1 + 2y2 + y3 ≥ 1100
y1 + y2 + 3y3 ≥ 1500.
Le principe de la dualité peut s’énoncer de la manière suivante : le plus bas prix total à
payer pour l’acheteur doit être égale au bénéfice maximal pour le producteur.
D’autre part, et sans rentrer dans les détails de la théorie de l’optimisation (conditions
d’optimalité, conditions KKT, Lagrangien, etc), énonçons un résultat dit de dualité faible.
w = bt y ≤ c t x = z ∀x, y
Autrement dit, la fonction objectif du primal est toujours bornée inférieurement par bt y
et cela pour tous les y vérifiant At y ≤ c et y ≥ 0. De même, la fonction objectif du dual
est toujours bornée supérieurement par ct x pour tous les x vérifiant Ax ≥ b et x ≥ 0.
En effet, on a
w = bt y = y t b ≤ y t Ax = (Ax)t y = xt At y ≤ xt c = ct x = z
−2x1 − x2 ≥ −2
x1 , x2 ≥ 0
3 4 7
qui admet la solution : (x∗1 , x∗2 ) = ( , ) et z ∗ = − .
5 5 5
Le problème dual s’écrit sous la forme :
max w = −3y1 − 2y2
−y − 2y ≤ −1
1 2
−3yl − y2 ≤ −1
y1 , y2 ≥ 0
1 2 7
qui admet la solution (y1∗ , y2∗ ) = ( , ) et w∗ = −
5 5 5
Les deux problèmes ont été résolus graphiquement, mais on peut utiliser le simplexe, sinon
la méthode des deux phases vues aux chapitres précédents.
Dans cet exemple, on observe que la valeur minimale du primal est égale à la valeur
maximale du dual.
3 4
Il est facile de vérifier les relations de complémentarité. On a m = n = 2, (x∗1 , x∗2 ) = ( , )
5 5
∗ ∗ 1 2
et (y1 , y2 ) = ( , ), donc
5 5
1 3 4 1
i = 1, (− − 3 + 3) = (0) = 0
5 5 5 5
2 3 4 2
i = 2, (−2 − + 2) = (0) = 0
5 5 5 5
3 1 2 3
j = 1, (−1 + + 2 ) = (0) = 0
5 5 5 5
4 1 2 4
j = 2, (−1 + 3 + ) = (0) = 0
5 5 5 5
des deux phases, cette dernière parait comme méthode très coûteuse en termes de calculs
effectués : augmentation de la dimension du problème par des variables artificielles. De ce
fait, on peut considérer la dualité comme un autre outil de résolution d’un problème de
programmation linéaire. Cela consiste à :
1. Mettre le problème sous forme standard.
2. S’il admet une forme simpliciale, utiliser directement le simplexe.
3. Sinon donner le dual associé, et voir est ce que le dual est directement solvable par
le simplexe.
4. Si oui, déterminer la solution optimale et utiliser les relations de complémentarités
pour déduire la solution du primal
5. Sinon, on applique la méthode des deux phases au primal ou au dual selon la
dimension des deux problèmes.
Noter que le passage de la solution optimale du primal (resp. dual) vers celle du dual (resp.
primal), est assuré par l’application du théorème des écarts complémentaires.
La solution optimale de ce problème est donnée par x∗1 = 120, x∗2 = 220, x∗3 = 0 et z ∗ =
440000. Considérons maintenant son dual donné par :
min w = 340y1 + 2400y2 + 560y3
y1 + 2y2 + y3 ≥ 1100
y1 + 3y2 + 2y3 ≥ 1400
y1 + y2 + 3y3 ≥ 1500
y , y , y ≥0
1 2 3
Sans utiliser la méthode des deux phases, on va résoudre le dual en utilisant les relations
de complémentarité. En effet on a
Donc à partir de ce système d’équations on en déduit que la solution optimale du dual est
donnée par y1∗ = 800, y2∗ = 0, y3∗ = 300 pour la quelle w∗ = 440000.
nous allons étudier la sensibilité de la solution optimale par rapport aux données du
problème. Autrement dit, comment varie la solution ou encore la fonction objectif si l’on
modifie une entrée du vecteur c ou de b ou encore de la matrice A. L’analyse de sensibilité
est aussi connue sous le nom d’analyse post-optimale.
{x1 , x5 , x2 }, on a N = {x3 , x4 , x6 }.
A partir des ensembles B et N , nous pouvons extraire les sous-matrices suivantes de A :
• AB est la sous-matrice formée des colonnes correspondantes aux variables de B. On suit
l’ordre spécifié par B.
• AN est la sous-matrice formée des colonnes correspondantes aux variables de N ordonnées
selon N .
A l’aide d’une partition par blocs selon les ensembles d’indices B et N , on peut écrire
" #
xB
Ax = b ⇐⇒ [AB AN ] = b ⇐⇒ AB xB + AN xN = b
xN
Ax = b ⇐⇒ AB xB + AN xN = b ⇐⇒ xB + A−1 −1
B AN xN = AB b.
C’est-à-dire
xB = A−1
B (b − AN xN )
La matrice AB est inversible car B est une base. En particulier, la solution optimale est
donnée par la formule
xB = A−1
B b
z = ctB [A−1 t
B (b − AN xN )] + cN xN
= ctB A−1 t t −1
B b + cN x N − cB A B A N x N
= ctB A−1 t t −1
B b + [cN − cB AB AN ]xN
xB xN
I A−1
B AN A−1
B b
0 ctN − ctB A−1
B AN −ctB A−1
B b
Dans la forme matricielle du tableau du simplexe, on note que la première colonne est
inutile. Ainsi on peut écrire la version simplifiée
xN
A−1
B AN A−1
B b
ctN − ctB A−1
B AN −ctB A−1
B b
V ar x1 x2 x3 x4 x5 x6
x1 1 0 −1 2 0 1 120
x5 0 0 −3 −1 1 −1 1500
x2 0 1 2 −1 0 1 220
z 0 0 200 800 0 300 440000
ce qui donne
x1 2 0 −1 340 120
xB = x
5
=
−1 1 −1
2400
=
1500
x2 −1 0 1 560 220
Donc
−1 2 −1
ctB A−1
ctN − B AN = [−1500, 0, 0] − [−1100, 0, −1400] −3 −1 −1
2 −1 1
= [−1500, 0, 0] − [−1700, −800, −300] = [200, 800, 300]
et
−ctB A−1
B b = 440000
Soit xB les variables de base de la solution. La question est de savoir sous quelle condition
on aura que la base B demeure optimale. En fait, il est facile de répondre à cette question.
Le vecteur b n’apparait que dans la condition d’optimalité A−1
B b ≥ 0. Par conséquent, les
variables de base xB demeurent optimales pour le problème modifié si
A−1 −1 −1
B b̃ ≥ 0 ⇔ AB ∆b ≥ −AB b
Exemple 3.2.2.
min z = x1 + 23 x2 + 3x3
x + x + 2x ≥ 6,
1 2 3
x1 + 2x2 + x3 ≥ 10,
x1 , x2 , x3 ≥ 0.
−1 ≤ a ≤ 4
−4 ≤ a ≤ 2
Quel sera l’effet sur la valeur minimale de la fonction objectif ? Nous avons :
" #
2−a a
z(b̃) = ctB x̃B + ctN x̃N = ctB x̃B = [1, 3/2] =8+
4+a 2
ct x(b̃) = b̃t y
ct x(b) = bt y
⇒ ∆z = ct ∆x = (∆b)t y
Par conséquent, on obtient le taux de variation de la fonction objectif par rapport aux bi .
∂z
= yi
∂bi
Mais le tableau du simplexe peut perdre le caractère optimal. Pour cela, on doit imposer
la condition de stabilité
En général, on désire connaître l’effet d’une modification pour une seule variable xi
ci → c̃i = ci + ∆ci
∆cN = ∆ci ei = ∆c
c̃i ≥ ci − ri
où les ri sont les composantes de la dernière ligne du tableau du simplexe. Autrement dit,
nous avons toute l’information pour calculer les intervalles de stabilité des coefficients ci .
Exemple 3.2.3. On reprend le PPL de l’exemple 3.2.2. Le tableau final du simplexe est
V ar x1 x2 x3 x4 x5
x1 1 0 3 −2 1 2
x2 0 1 −1 1 −1 4
−z 0 0 3/2 1/2 1/2 −8
La dernière ligne fournit le vecteur des coûts réduits : r = (0, 0, 3/2, 1/2, 1/2).
Les variables de base sont B = {x1 , x2 } et celles hors-base N = {x3 , x4 , x5 }. La fonction
objective est de la forme
z = c1 x 1 + c2 x 3 + c3 x 3
La solution optimale x = (2, 4, 0, 0, 0) est la même pour toutes les valeurs c̃3 ≥ 3/2. De
plus, la valeur de la fonction objective (z = 8) demeure inchangée car la variable est hors
base.
rN − αeti A−1 −1
B AN ≥ 0 ⇐⇒ rN − α(AB AN )i ≥ 0
V ar x1 x2 x3 x4 x5
x1 1 0 3 −2 1 2
x2 0 1 −1 1 −1 4
−z 0 0 3/2 1/2 1/2 −8
xB xN
I A−1
B AN A−1
B b
0 rN −ctB xB
Intervalle pour c1 : On pose c̃1 = c1 + α = 1 + α. La condition s’écrit :
rN − α(A−1
B AN )1 = (3/2, 1/2, 1/2) − α(3, −2, 1)
rN − α(A−1
B AN )2 = (3/2, 1/2, 1/2) − α(−1, 1, −1)