Programmation Linéaire pour Ingénieurs
Programmation Linéaire pour Ingénieurs
R.O.
Partie 2: Programmation Linéaire P.L
Cycle Ingénieur
ENSAM Casablanca
Programmation linéaire
La programmation linéaire est une branche de la recherche opérationnelle
dont l’objectif est de minimiser ou maximiser une fonction numérique
multilinéaire (dite fonction objectif ou fonction économique) à plusieurs
variables, sachant que ces dernières sont liées moyennant des équations ou
des inéquations linéaires dites contraintes.
Question
Le fabriquant souhaite savoir combien de petites et de grosses voitures
doit-il produire afin de maximiser son chiffre d’affaires en prenant en
compte son stock actuel.
Pr. Abdessamad Kamouss 37 Recherche opérationnelle 37 / 102
Problème de production
Modélisation
Variables de décision :
x : nombre de grosses voitures produites
y : nombre de petites voitures produites
Fonction objectif :
Définition
Un programme linéaire est une modélisation mathématique en R.O dans
lequel les variables sont des réels qui doivent satisfaire un ensemble
d’équations et/ ou d’inéquations linéaires (dites contraintes) et la valeur d’une
fonction linéaire de ces variables (appelée fonction objectif) qu’on souhaite
rendre minimum ou maximum.
Ingrédients principaux :
Alternatives - variables de décision - inconnues du problème - variables
d’activité.
Restrictions - contraintes.
Fonction à optimiser - fonction objectif - fonction économique.
n
Maximiser ou Minimiser z(x 1 , x 2 , ..., xn ) = ∑ c jx j
j=1
n
∑ a1i xi ≤, =, ≥ b1
i=1
n
a2i xi ≤, =, ≥ b2
∑
i=1
Sous les contraintes ......................
......................
n
∑ ami xi ≤, =, ≥ bm
i=1
x1 , x2 , ..., xn ∈ R
[Max] z = cT x
(PC) Ax ≤ b
x≥0
Remarques
Deux propriétés caractérisent la forme canonique.
Toutes les variables sont astreintes à être positives ou nulles (non
négatives).
Toutes les contraintes sont des inéquations.
[Max] z = cT x
(PC) Ax = b
x≥0
Remarques
Deux propriétés caractérisent la forme canonique.
Toutes les variables sont astreintes à être positives ou nulles.
Toutes les autres contraintes sont des équations.
Et-il possible de passer d’une forme à une autre forme d’un programme
linéaire quelconque ?
Théorème
Tout programme linéaire sous forme standard peut être écrit sous forme
canonique, et
tout programme linéaire sous forme canonique peut être écrit sous
forme standard.
équation → inéquation
ax ≤ b
ax = b ⇐⇒
ax ≥ b
ax ≤ b ⇐⇒ ax + e = b, e≥0
ax ≥ b ⇐⇒ ax − e = b, e≥0
x = e1 − e2
x ≶ 0 ⇐⇒
e1 , e2 ≥ 0
Question
Ecrire le programme linéaire qui détermine les nombres de produits de type P1
et de type P2 à fabriquer pour maximiser sa marge brute.
3x2 ≤ 39
1, 5x1 + 4x2 ≤ 60
2x1 + 3x2 ≤ 57
3x1 + 2x2 ≤ 70
3x1 ≤ 57
x1 ≥ 0, x2 ≥ 0
Le PL correspondant
Exemple (Suite)
Ce tableau signifie que pour envoyer x tonnes de Casa à Kénitra, par exemple,
il en coûte 6x UM. Le problème consiste à déterminer un plan de transport
optimal, c’est-à- dire à trouver quels sont les poids de métal à envoyer de
chaque stock à chaque usine de sorte que :
(i) Les demandes soient satisfaites (chaque usine reçoit au moins la
quantité de métal qui lui est nécessaire).
(ii) Les quantités demandées à chaque stock n’excèdent pas les quantités
disponibles.
(iii) Les quantités envoyées sont positives ou nulles.
(iv) Le coût total du transport est rendu minimum compte tenu des
contraintes ci-dessus.
Le PL correspondant
Affectant au stock de Casa l’indice 1, au stock d’El Jadida l’indice 2 et aux trois
usines les indices 1,2 et 3 respectivement pour Tanger, Kénitra et Agadir, on
conviendra que xi j représentera le nombre de tonnes de métal qui sont
acheminées chaque semaine depuis le stock d’indice i vers l’usine d’indice j.
Le programme linéaire s’écrit alors :
Description de la méthode
1 On trace les droites représentant les contraintes. Chaque inéquation est
satisfaite dans un demi-plan limité par la droite d’équation
correspondante.
2 Après avoir hachuré les parties du plan ne respectant pas les contraintes,
il reste une zone non hachurée qui représente l’ensemble des solutions
possibles (ensemble admissible).
3 Une solution optimale du programme linéaire est située en un sommet du
domaine de l’ensemble des solutions possibles.
A B
C
10
F E
10 20
L’optimum se trouve au point C x1 = 96 69
7 et x2 = 7 . Donc
384000
zmax = .
7
Pr. Abdessamad Kamouss 59 Recherche opérationnelle 59 / 102
Résolution de PL - Méthode Graphique
Justification mathématique :
Les dérivées partielles de f (X) = c.X ne s’annulent jamais, et le domaine
X/ ∑nj=1 ai j x j ≤ bi , i ∈ {1, . . . , m} est un compact.
Solution de base
Considérons un PL dans sa forme standard qui sera noté (PLS) :
n
Maximiser z(x1 , x2 , ..., xn ) = ∑ c j x j
j=1
a 11 1 + a12 x2 + ... + a1n xn ± e1 = b1
x
a21 x1 + a22 x2 + ... + a2n xn ± e2 = b2
......................
Sous les contraintes
......................
a x + am2 x2 + ... + amn xn ± em = bm
m1 1
x1 , x2 , ..., xn ∈ R+
Remarque
Une solution de base est dites dégénérée lorsque certaines variables de base
sont nulles.
Bases voisines
PLS - Simplexe
Algorithme du simplexe
Dantzig, 1947.
Algorithme itératif de résolution de problème de programmation linéaire.
Principe
A partir d’un sommet, chercher un sommet voisin qui améliore la fonction
objectif.
Propriété du problème
Soit X0 un sommet non optimum.
Alors il existe X , un sommet voisin de X0 , tel que f (X) > f (X0 ).
e1 = 8 − 2x − y e1 = 5 − 2x + e3
e2 = 7 − x − 2y ⇔ e2 = 1 − x + 2e3
e3 = 3 − y y = 3 − e3
z = 15 + 4x − 5e3
Augmenter encore z ? Faire entrer x
Quelle est la valeur maximale que pourra avoir x ?
e1 = 5 − 2x + e3 ≥ 0 ⇒ x ≤ 2.5
e2 = 1 − x + 2e3 ≥ 0 ⇒ x ≤ 1
y = 3 − e3 ≥ 0 ⇒ pas de contrainte
e1 = 3 + 2e2 − 3e3
x = 1 − e + 2e
2 3
y = 3 − e3
z = 19 − 4e2 + 3e3
z = 19 − 4e2 + 3e3
Augmenter encore z ? Faire entrer e3
Quelle est la valeur maximale que pourra avoir e3 ?
e1 = 3 + 2e2 − 3e3 ≥ 0 ⇒ e3 ≤ 1
x = 1 − e2 + 2e3 ≥ 0 ⇒ pas de contrainte
y = 3 − e3 ≥ 0 ⇒ e3 ≤ 3
e3 = 1 + 2/3e2 − 1/3e1
x = 3 + 1/3e + 2/3e
2 1
y = 2 − 2/3e2 + 1/3e1
z = 22 − 2e2 − e1
Pr. Abdessamad Kamouss 71 Recherche opérationnelle 71 / 102
Résolution de PL - Méthode Simplexe : Exemple
Finalement, on a :
z = 22 − 2e2 − e1
donc z∗ ≤ 22.
Définition (Dualité)
La dualité fait référence à la relation entre un problème d’optimisation
appelé "problème primal" et un autre problème associé appelé
"problème dual".
Chaque problème est formulé de manière complémentaire, et les
solutions des deux problèmes sont liées.
Cela permet :
d’obtenir des informations supplémentaires
de simplifier la résolution du problème primal.
avoir une autre vision du problème.
réaliser un équilibre sur un marché.
...
M1 M2 M3 Prix
P1 50 30 20 320
P2 10 20 15 550
Disponibilités 600 500 300 -
But
Maximiser le profit obtenu par la fabrication et la vente des produits P1 et P2 .
But
Minimiser le coût d’acquisition des ressources M1 , M2 et M3 tout en restons
concurrentiel.
PRIMAL vs DUAL
[Max]z
= 320x1 + 550x2 [Min]w
= 600y1 + 500y2 + 300y3
50x1 + 10x2 ≤ 600
50y1 + 30y2 + 20y3 ≥ 320
sc 30x1 + 20x2 ≤ 500 sc
10y1 + 20y2 + 15y3 ≥ 550
20x1 + 15x2 ≤ 300
y1 , y2 , y3 ≥ 0.
x1 ≥ 0, x2 ≥ 0,
Dualité
La dualité est un concept important en Recherche Opérationnelle.
Tout programme linéaire admet un programme dual. Le premier est alors
appelé PRIMAL et le second est son DUAL.
Le DUAL a une interprétation économique différente du PRIMAL .
Le DUAL et le PRIMAL sont liés et on peut trouver la solution de l’un dès
que la solution de l’autre est bien connue.
La recherche du DUAL peut souvent s’imposer si l’on voit que le PRIMAL
parait difficile à résoudre.
Matrice A de taille m × n
Vecteurs c ∈ Rn et b ∈ Rm .
Définition (problème dual)
Au programme linéaire primal
⊤
maxx∈R n F(x) = c x
(PL) Ax ≤ b
x≥0
⊤
min m G(y) = b y
y∈R
(PLD) A⊤ y ≥ c
y≥0
Règles de passage :
Min Max
Primal Dual
Dual Primal
Variable ≥ 0 Contrainte ≤
Variable ≤ 0 Contrainte ≥
Variable ≶ 0 Contrainte =
Contrainte ≤ Variable ≤ 0
Contrainte = Variable ≶ 0
Contrainte ≥ Variable ≥ 0
Exemple
Donner le proramme dual du programme primal suivant :
[Max]z
= 4x1 + 5x2 + 2x3
2x1 + 4x2 = 3
x1 + x3 ≥ 2
(PL) : sc
3x + x2 + x3 ≤ 10
1
x2 + x3 ≤ 1
x1 ≥ 0, x2 ≤ 0, x3 ≥ 0
Exemple
Donner le proramme dual du programme primal suivant :
[Max]z
= 4x1 + 5x2 + 2x3
2x1 + 4x2 = 3
x1 + x3 ≥ 2
(PL) : sc
3x + x2 + x3 ≤ 10
1
x2 + x3 ≤ 1
x1 ≥ 0, x2 ≤ 0, x3 ≥ 0
Propriété
Le dual du dual est le primal.
⊤x
( x (−c)
min maxx c⊤ x
⊤
(PLDD) −A⊤ x ≥ −b ⇐⇒ (PL) Ax ≤ b
x≥0
x≥0
Preuve.
1 On a Ax ≤ b, x ≥ 0 et A⊤ y ≥ c, y ≥ 0.
⊤
F(x) = c⊤ x ≤ A⊤ y x = y⊤ |{z}
Ax ≤ y⊤ b = G(y)
≤b
2 Soient x∗ et y∗
des solutions réalisables de (PL) et (PLD) telles que
F (x∗ )
= G (y∗ ).
D’après 1., pour x solution réalisable de ( PL), on a
F(x) ≤ G (y∗ ) = F (x∗ ) donc x∗ est une solution réalisable optimale.
Idem pour y∗ .
Pr. Abdessamad Kamouss 86 Recherche opérationnelle 86 / 102
Dualité - Théorèmes
F (x∗ ) = G (y∗ ) .
Preuve. Preuve. On suppose (PL) mis sous forme standard. S’il existe une
solution réalisable optimale, alors il existe une solution de base réalisable
optimale xB∗ = A−1B∗ b. On choisit alors
⊤
y∗ = A−1
B∗ c B∗ .
On montre que y∗ est une solution réalisable optimale pour le dual (PLD).
On se place dans le cas (a) où les problèmes primal et dual possèdent chacun
des solutions optimales (optimum fini).
Théorème (COPD)
Soient x et y des solutions réalisables respectivement du problème primal
(PL) et du problème dual (PLD).
Alors x et y sont des solutions réalisables optimales si et seulement si les
conditions d’optimalité primal-dual (COPD) suivantes sont vérifiées :
Si une contrainte est satisfaite en tant qu’une inégalité stricte (PL) ou
(PLD) alors la variable correspondante de l’autre programme est nulle.
Si la valeur d’une variable dans (PL) ou (PLD) est strictement positive
alors la contrainte correspondante de l’autre programme est une
égalité.
n
• y∗i > 0 ⇒ ∑ ai j x∗j = bi
j=1
m
• x∗j > 0 ∑ ai j y∗i = c j
⇒
i=1