Académique Documents
Professionnel Documents
Culture Documents
Programmation Linéaire et
Applications
Dans ce chapitre nous nous limitons à des problèmes qui relèvent de la pro-
grammation linéaire classique et nous proposons des méthodes mathématiques
pour leur résolution.
Des problèmes de programmation linéaire ont été développés par le mathématicien
russe Leonid Kantorovich dès 1939. Vers 1947 George B. Dantzig, conseiller
mathématique auprès de United States Air Force sur le développement d’outils
de planification mécanisée a conçu des classes de problèmes de programmation
linéaire, il publie la méthode simplex en 1947. Dans ses premier papiers Dantzig
parle de ”programmation dans une structure linéaire”. Le terme ”programma-
tion linéaire” est introduit par l’économiste et mathématicien TC Koopmans en
1948, c’est cette même année que John von Neumann a développé la théorie de
la dualité. En 1963, Dantzig publie son livre ”Linear Programming and Exten-
sions” chez Princeton University Press, livre qui s’impose rapidement comme
référence de base de la programmation linéaire.
1
2 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS
supposons, pour ce problème et tout ce qui suit, que les coûts et les consom-
mations de ressources sont proportionnels aux intensités d’activités et que les
consommations de ressources sont additives (pas d’interaction entre activités).
Modélisation :
Notons xj la quantité du produit Pj par unité du mélange. Réaliser le
mélange à prix minimum revient alors à minimiser la fonction
z = c1 x1 + c2 x2 + ... + cn xn
Sous les contraintes
a11 x1 + a12 x2 + ... + a1n xn ≥ b1
..
.
a x + am2 x2 + ... + amn xn ≥ bm
m1 1
x1 ≥ 0, x2 ≥ 0, ... , xn ≥ 0
1.3 Solveur
On se propose de résoudre le programme suivant :
max z = 40x1 + 45x2 + 30x3
8x1 + 6x2 + 2x3 ≤ 288
4x1 + 6x2 + 4x3 ≤ 180
4x1 + 4x2 + 2x3 ≤ 160
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
Pour utiliser solver, ouvrir une feuille de calcul (classeur ou excel), la remplir
comme indiqué sur la figure 1.1 : insérer dans la colonne F, par exemple dans
la cellule F6 écrire =C6*C3+D6*D3+E6*E3. Puis ouvrir Solveur à partir de
”Outils” du menu de votre tableur.
Indiquer à Solveur (voir figure 1.2) la position de la formule qui calcul la fonc-
tion économique z (cellule cible : F9), les positions des variables (par modifica-
tion de cel : C3 :E3) et les contraintes (conditions de limitation : G5 : G7 <= 0)
.
Allez sur Options (figure 1.3) pour cocher la case : interpréter les variables
comme non négatives. puis revenir sur Solveur et appuyer sur : Résoudre.
6 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS
Figure 1.2 – Indiquer dans le menu Solver la position dans le tableur de chacune
des données demandées
A
B
C
z=13000
z=6000
D
x2 = 0 et x3 ≥ 0 entraine que x1 ≤ 50
x2 = 0 et x4 ≥ 0 entraine que x1 ≤ 80
x2 = 0 et x5 ≥ 0 entraine que x1 ≤ 40
x2 = 0 et x6 ≥ 0 pas de condition sur x1 ,
les coefficients des deux variables de z sont négatifs, on ne peut plus augmenter
la valeur de z en modifiant les valeurs des variables hors bas, le max est atteint.
STOP.
La solution de notre problème est alors x1 = 20, x2 = 60 et le bénéfice maxi-
mum est zmax = 13000 DH.
10 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS
x1 x2 x3 x4 x5 x6
x3 0 1 1 0 -2 0 20 L02 = L2 − 2L04
x4 0 1 0 1 -1 0 40 L03 = L3 − L04
tableau 2 :
x1 1 0 0 0 1 0 40 L04 = L4 /1
x6 0 1 0 0 0 1 70 L05 = L5 − 0L04
z 0 150 0 0 -200 0 -8000 L06 = L6 − 200L04
x1 x2 x3 x4 x5 x6
x2 0 1 1 0 -2 0 20
x4 0 0 -1 1 1 0 20
tableau 3 :
x1 1 0 0 0 1 0 40
x6 0 0 -1 0 2 1 50
z 0 0 -150 0 100 0 -11000
1.5. MÉTHODE DU SIMPLEXE 11
x1 x2 x3 x4 x5 x6
x2 0 1 1 0 0 0 60
x5 0 0 -1 1 1 0 20
tableau 4 :
x1 1 0 1 -1 0 0 20
x6 0 0 1 -2 0 1 10
z 0 0 -50 -100 0 0 -13000
On peut alors lire la solution optimale :
Ax = b ⇔ BxB + N xN = b
d’où
xB = B −1 b − B −1 N xN ,
qui est l’expression des variables de bases en fonction des variables hors base.
Notons que si B −1 b ≥ 0 alors xN = 0, xB = B −1 b est une solution de base
admissible et peut servir au démarrage de la méthode du simplexe sinon il faut
chercher une autre base.
Supposons que B −1 b ≥ 0.
Etape 1 exprimer z en fonction des variables hors base xN :
z = cT x ⇔ z = cTB xB + cTN xN
d’où :
z = cTB B −1 b − (cTB B −1 N − cTN )xN
Notons dN = cTB B −1 N − cTN :
— si di ≥ 0 pour tout i ∈ N alors la solution xN = 0, xB = B −1 b est
optimale et zmax = cTB B −1 b (solution unique si di > 0 pour tout i ∈ N ).
— s’il existe k ∈ N tel que dk < 0 alors toute augmentation de la valeur de
xk augmente la valeur de z, au lieu de xN = 0 on prend x̃N = tek où ek
est le k ieme vecteur de la base canonique de Rn et t un réel positif (xk
12 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS
(B −1 b)j
−1
t = min , (B N ek )j > 0, j = 1, · · · , m
(B −1 N ek )j
soit s un indice pour lequel le min est atteint, alors xs sort de la base.
Nous avons alors de nouvelles variables de bases d’indices dans B1 =
(B \ {s}) ∪ {k} et les indices des variables hors base sont dans N1 =
(N \ {k}) ∪ {s}.
Etape 2 Remplacer B par B1 et N par N1 puis reprendre l’étape 1 (s’assurer
que B1 est inversible, B1−1 b ≥ 0 est assuré par le choix de t).
sont tous négatifs ou nuls, alors x∗ = B ∗−1 b est une solution optimale
du problème (1.8) et sa valeur optimale est z ∗ = cTB ∗ B ∗−1 b. Le vecteur
y ∗ = cTB∗ B ∗−1 N ∗ − cTN ∗ est appelé vecteur des coûts marginaux (voir &
1.7).
Si les coefficients du vecteur cTN ∗ − cTB∗ B ∗−1 N ∗ sont tous strictement
négatifs la solution est unique. On n’a pas unicité de la solution si au
moins un des coefficients est nul.
Exemple :
M ax z = x1 + 21 x2
2x1 + x2 ≤ 4
x1 + 2x2 ≤ 3
x1 ≥ 0, x2 ≥ 0
tableau final :
x1 x2 x3 x4
x1 1 1/2 1/2 0 2
x4 0 3/2 -1/2 1 1
z 0 0 -1/2 0 -2
ou bien
x1 x2 x3 x4
x1 1 0 2/3 -1/3 -5/3
x2 0 1 -1/3 2/3 2/3
z 0 0 -1/2 0 -2
1.5. MÉTHODE DU SIMPLEXE 13
— Problème non borné : c’est le cas lorsque l’un des coefficients du vecteur
x1 x2 x3 x4 x5
x1 1 -1 0 1 0 2
x4 0 4 -3 1 0 0
x5 0 1 0 0 1 3
z 0 3 -2 0 0 -4
la variable x3 est de base mais elle prend une valeur nulle (x3 = 0)
deuxième itération :
x1 x2 x3 x4 x5
x1 1 0 1/4 1/4 0 2
x2 0 1 -3/4 1/4 0 0
x5 0 0 3/4 -1/4 1 3
z 0 0 1/4 -3/4 0 -4
Notons :
xN
x= avec xN = (x1 , ..., xn )T , xB = (xn+1 , ..., xn+m )T , x ∈ Rn+m ,
xB
cN
c= avec cn = (c1 , · · · , cN )T , cB = (0, · · · , 0)T , c ∈ Rn+m ,
cB
a11 · · · a1n 1 ··· 0
.. .. .. .. .
A = (N, B) avec N = . , B = . . .. ,
.
am1 ··· amn 0 ··· 1
1.5. MÉTHODE DU SIMPLEXE 15
b1
A est une matrice m × (n + m) et b = ... , b ∈ Rm .
bm
Avec ces notations, le programme (1.7) s’écrit de manière équivalente :
max cT x
Ax = b (1.8)
x≥0
Pour résoudre (1.8) nous procédons comme dans la sous section précédente en
prenant B = I inversible, xB = B −1 b − B −1 N xN ,, et comme nous avons sup-
posé que b ≥ 0 alors B −1 b = b ≥ 0 et xN = 0, xB = b est une solution de base
admissible du programme (1.8).
Etape 1 : z = cTB B −1 b − (cTB B −1 N − cTN )xN = cTN xN . Si cN ≤ 0 alors le max
est atteint, sinon, nous notons k l’indice du premier élément strictement positif
parmi les coefficients cTN des variables xN dans z, en faisant rentrer xk dans la
base on augmente la valeur de z. Pour déterminer la variablequi va sortir de
b1 − ta1k
base, on pose x̃N = tek et x̃B = xB − tB −1 N ek = b − tN ek = ..
.
.
bm − tamk
Si aik ≤ 0 pour tout i = 1, · · · , m alors le domaine est non borné et zmax = +∞.
bi bs
Sinon, soit t = min{ , aik > 0, i = 1, ..., m} = , la variable xs sort de la
aik ask
base ( x̃s = 0). Si s n’est pas unique, il y a dégénérescence.
Soient B̃1 et Ñ1 les matrices obtenues à partir de B et N en permutant la co-
lonne k de N avec la colonne (n + s) de B (B1 et N1 désigneront les indices des
colonnes de B̃1 et Ñ1 dans A) :
1 · · · a1s · · · 0 1 · · · − aa1s ··· 0
ss
.. . . .. .. . . ..
. . . . . .
. ..
.. .
.. et B̃1−1 = ..
B̃1 = . 1 .
a ss ass .
. . . . . .
.. . . .. .. . . ..
0 · · · ams · · · 1 0 · · · − aams ss
··· 1
−1 −1 −1
On pose B1 = B̃1 B̃1 = I, N1 = B̃1 Ñ1 et b(1) = B̃1 b.
b1 − a1s abss s
..
.
bs
bi bs
b(1) = ≥ 0 car ≥ pour tout i tel que ais > 0
a
ss
. a is ass
..
bs
bm − ams ass
Noter que Ax = b ⇔ B1 xB1 + N1 xN1 = b(1) donc xB1 = b(1) − N1 xN1 .
En prenant xN1 = 0 on obtient une nouvelle solution de base admissible de (1.8)
xB1 = b(1) ≥ 0 et z = cTB1 b(1) .
méthode dite des deux phases, elle consiste en l’introduction de variables artifi-
cielles.
c ∈ Rn , b ∈ Rm , b ≥ 0, A matrice m × n.
Supposons que nous ne connaissons pas une base pour démarrer la méthode du
simplexe alors la méthode suivante, dite des des deux phases, nous permet d’en
trouver une :
phase 1 Pour u ∈ Rm (u est appelé vecteurs des variables artificielles), résoudre
le problème
min z1 = u1 + u2 + · · · + um
(P 1) Ax + u = b
x ≥ 0, u ≥ 0
x1 x2 x3 u1 u2
u1 3 2 -1 1 0 6
u2 1 1 0 0 1 1
zu 0 0 0 1 1 0
1.6. MÉTHODE DES DEUX PHASES 17
il faut commencer par écrire zu en fonction des variables hors base : transformer
la dernière ligne du tableau en retranchant la ligne u1 et de u2 à la ligne de zu
pour avoir de zéros en bas de la colonne de u1 et de u2 . La dernière ligne est
alors replacée par :
zu -4 -3 1 0 0 0 -7
x1 x2 x3 u1 u2
u1 0 -1 -1 1 -3 3
x1 1 1 0 0 1 1
zu 0 1 1 0 4 -3
x1 x2 x3 x4 u1 u2
x4 1
2 0 1 0 0 5
u1 2 1 -1 0 1 0 4
u2 1 3 0 0 0 1 6
zu 0 0 0 0 1 1 0
il faut commencer par écrire zu en fonction des variables hors base : transformer
la dernière ligne du tableau en retranchant la ligne u1 et de u2 à la ligne de zu
de pour avoir de zéros en bas de la colonne de u1 et de u2 . La dernière ligne est
alors replacée par :
zu -3 -4 1 0 0 0 -10
18 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS
x1 x2 x3 x4 u1 u2
x4 0 3/2 1/2 1 -1/2 0 3
x1 1 1/2
-1/2 0 1/2 0 2
u2 0 5/2 1/2 0 -1/2 1 4
zu 0 -5/2 -1/2 0 3/2 0 -4
x1 x2 x3 x4 u1 u2
x4 0 0 1/5 1 -1/5 -3/5 3/5
x1 1 0 -3/5 0 3/5 -1/5 6/5
x2 0 1 1/5 0 -1/5 2/5 8/5
zu 0 0 0 0 1 1 0
phase 2 : On supprime les colonnes de u1 et u2 , on remplace dans la dernière
ligne par les coefficients de z puis on transforme par Gauss (on retranche la
ligne de x1 et de x2 ) pour annuler les coefficients de z sous les variables de base
(x1 , x2 ). on obtient alors le tableau :
x1 x2 x
3 x4
x4 0 0 1/5 1 3/5
x1 1 0 -3/5 0 6/5
x2 0 1 1/5 0 8/5
z 0 0 7/5 0 -64/5
puis
x1 x2 x3 x4
x3 0 0 1 5 3
x1 1 0 0 3 3
x2 0 1 0 -1 1
z 0 0 0 -7 -17
ce qui donne la solution optimale :
x3 = 3, x1 = 3, x2 = 1, zmax = 17, x4 = 0
1.7 Dualité
nous commençons par un exemple : prenons le problème d’un fleuriste qui
dispose d’un stock de 288 roses, 180 tulipes et 160 oeillets. A partir de ce stock
il confectionne trois types de bouquets B1, B2 et B3. un bouquet B1 contient 8
roses, 4 tulipes et 4 oeillets et il est vendu 40DH, B2 contient 6 roses, 6 tulipes
1.7. DUALITÉ 19
Les problèmes (P E) et(DE) sont dits duaux l’un de l’autre. Remarquer que
le nombre de variables de l’un des deux problèmes est égal au nombre de
contraintes de l’autre. Les deux problèmes sont fortement liés et nous mon-
trerons par la suite que la résolution de l’un donne aussi la solution de l’autre.
le programme linéaire
w = min bT y
(D) AT y ≥ c (1.11)
y≥0
Ce qui est exactement le problème (P). Donc le dual du dual de (P) est (P) lui
même et nous pouvons aussi dire que (P) est le dual de (D).
Nous avons écrit le dual d’un programme avec des contraintes sous la forme
Ax ≤ b, pour des contraintes avec ≥ il suffit de multiplier par (-1).
Pour une contrainte égalité :
n
X Xn n
X
akj xj = bk ⇔ ( akj xj ≤ bk et −akj xj ≤ −bk )
j=1 j=1 j=1
P 0
donc dans le dual on aura i6=k aik yi + akk y k avec y k = yk − yk , yi ≥ 0, i =
0 P
1, · · · , m, yk ≥ 0 et w = i6=k bi yi + bk y k . Noter que y k n’a pas de contrainte
de signe.
Exemple Les deux problèmes suivants sont duaux l’un de l’autre
max z = 2x1 + 5x2 min w = 6y1 − 3y2 + 4y3
x1 + 4x2 ≤ 6 y1 − 2y2 + 3y3 ≥ 2
2x1 − x2 ≥ 3 4y1 + y2 + 3y3 ≥ 5
3x1 + 3x2 = 4 y1 ≥ 0, y2 ≥ 0,
x1 ≥ 0, x2 ≥ 0 y3 de signe quelconque.
les théorème suivants donnent le lien existant entre la solution optimale d’un
programme linéaire et son dual ainsi qu’entre les valeurs optimales de l’un et
l’autre.
Theorem 2 (dualité faible) si x ∈ Rn est admissible (vérifie les contraintes)
pour (P) et y ∈ Rm est admissible pour (D) alors on a : cT x ≤ bT y et donc
zmax ≤ wmin .
Si zmax = +∞ alors le domaine des contraintes de (D) est vide (wmin = +∞).
Preuve. y est admissible pour (D) donc c ≤ AT y ou bien cT ≤ y T A, multi-
plions des deux cotés par x ≥ 0 nous obtenons : cT x ≤ y T Ax ≤ y T b car x est
admissible pour (P).
Si zmax = +∞ alors il existe x admissible pour (P) (sinon zmax = −∞). sup-
posons que le domaine des contraintes de (D) est non vide alors il existe y
admissible pour (D) donc zmax ≤ wmin comme zmax = +∞ alors wmin = +∞
ce qui contredit le domaine des contraintes de (D) est non vide.
Theorem 3 (dualité forte) si (P) admet une solution optimale x∗ ∈ Rn alors
(D) admet une solution optimale y ∗ ∈ Rm et on a cT x∗ = bT y ∗ (zmax = wmin )
Preuve. (On écrit Notons cT = (c1 , · · · , cn , 0, · · · 0), P
A = (A, I) et
n
xT = (x1 , · · · , xn , xn+1 , · · · xn+m ) avec xn+k = bk − j=1 akj xj , k = 1, · · · , m
n+m
(x∈R est solution de Ax = b).
∗
Soit B la baseoptimale associée à x en écrivant A sous la forme (B, N ) et x
xB
sous la forme alors
xN
Ax = b ⇔ BxB + N xN = b ⇔ xB = B −1 b − B −1 N xN
1.7. DUALITÉ 21
(Nous allons exprimer cT x dans l’ordre de (B,N) puis on revient à celui de (A,I)
et on prend des valeurs particulières de x pour conclure)
cT x = cTB xB + cTN xN
d’où !
m
X n
X m
X
T T ∗
c x=c x + dn+i bi + dj − dn+i aij xj ,
i=1 j=1 i=1
on a alors
f (x) si x ∈ X vérifie g(x) ≤ 0, h(x) = 0
sup L(x, u, v) =
u∈Rm
+, v∈Rp +∞ sinon
Sinon, il existe j tel que dλj > 0, 1 ≤ j ≤ m, alors il faut poursuivre la résolution
de (Pλ ) par la méthode du simplexe en partant de la solution de base réalisable
x∗ .
B −1 bµ ≥ 0
et dans ce cas
zµmax = cTµB B −1 bµ = cTµB xµB .
Sinon, il existe i tel que xµi < 0, 1 ≤ i ≤ n alors il faut chercher une nouvelle
solution de base réalisable (ce n’est pas simple !) et poursuivre la résolution de
(Pµ ) par la méthode du simplexe.
Exemple. La résolution du problème
maximiser 4x1 + 5x2
2x1 + x2 ≤ 80
x1 + 2x2 ≤ 70
x2 ≤ 30
x1 ≥ 0, x2 ≥ 0
x1 x2 x3 x4 x5
x1 1 0 2/3 -1/3 0 30
x2 0 1 -1/3 2/3 0 20
x5 0 0 1/3 -2/3 1 10
z 0 0 -1 -2 0 -220
avec −1 + λ/3 > 0, alors x3 rentre dans la base et continue le simplexe jus-
qu’à ce que tous les coefficients de z deviennent négatifs.
2) Perturbation des contraintes : Considérons le programme linéaire (P Lt )
80
obtenu en remplaçant le second membre des contraintes b = 70 du pro-
30
80
gramme (PL) par bt = 70 + t .
30
Comme d = cN − cB B N ne dépend pas de t, alors pour que x∗t = B −1 bt
T T T −1
alors B −1 bt ≥ 0 lorsque
−30 ≤ t ≤ 15
Donc si t ∈ [−30, 15] alors x∗1 = 31 (90 − t) x∗2 = 13 (60 + 2t) est une solution
optimale et zmax = cTB B −1 bt = 220 + 2t
Si par exemple t < −30 alors x∗2 = 13 (60 + 2t) < 0 on n’a plus de solution de
base admissible, il faut chercher une nouvelle base pour continuer le simplexe.
Contraintes
valeur finale second membre augmentation diminution
des contraintes des contraintes permise permise
80 80 60 30
70 70 15 30
20 30 1E+30 10
A1 A2 A3
Usine U1 2 2,5 5
Usine U2 2,8 4 3
Ecrire le programme à résoudre pour déterminer les quantités qui doivent être
livrées de chaque dépôt vers chaque client pour satisfaire les demandes à moindre
coût.
Problème 5.
1) Une entreprise A fabrique deux produits P1 et P2 à l’aide de deux matières
premières M1 et M2 . Pour fabriquer une unité du produit P1 il faut 2 unités de
M1 et 6 unités de M2 . Pour fabriquer une unité du produit P2 il faut 8 unités
de M1 et 4 unités de M2 .
L’entreprise dispose de 32 unités de M1 et 36 unités de M2 .
Le bénéfice est de 20 DH par unité de P1 et de 40 DH par unité de P2 .
a) Modéliser le problème de l’entreprise A.
b) Résoudre le problème modélisé.
2) Une entreprise B a besoin d’acheter toutes les matières premières de l’entre-
prise A. L’entreprise B doit proposer à A des marges bénéficiaires y1 par unité
de M1 et y2 par unité de M2 de manière à minimiser sa propre dépense mais
28 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS
les prix doivent être assez élevés pour convaincre l’entreprise A à vendre (l’en-
treprise A doit faire au moins autant de bénéfice que si elle fabrique et vend les
marchandises).
a) Modéliser le problème de l’entreprise B.
b) Résoudre le problème de l’entreprise B.
3) Comparer les deux valeurs optimales et commenter le résultat.
Ecrire le programme qui donnera le menu le moins chère respectant les contraintes.
Problème 10. Une entreprise a besoin au moins des effectifs d’employés sui-
vants pour chacun des jours de la semaine.
Réponses
Problème 1
Notons x1 (respectivement x2 , x3 ) le nombre de lots de pièces de type A (res-
pectivement de type B, C) à fabriquer mois.
Le bénéfice est égale aux recettes des ventes diminués de charges engagées
par l’entreprise en frais de machines et matière première, donc la fonction
économique à maximiser est :
Problème 2
Notons xij le nombre d’appareils de type Ai , i = 1, 2, 3 fabriqués dans l’usine
Uj , = 1, 2 chaque mois.
Le bénéfice par mois est alors :
z = 1900(x11 + x12 ) + 2200(x21 + x22 ) + 2800(x31 + x32 )
−(1500x11 + 1800x21 + 2000x31 + 1800x12 + 2000x22 + 2500x32 )
z = 400x11 + 100x12 + 400x21 + 200x22 + 800x31 + 300x32
les contraintes :
Disponibilité usine 1 : 2x11 + 2, 5x21 + 5x31 ≤ 1300
Disponibilité usine 2 : 2, 8x12 + 4x22 + 3x32 ≤ 1600
Production de A1 : x11 + x12 ≤ 7100
Production de A2 : x21 + x22 ≤ 6500
Production de A3 : x31 + x32 ≤ 3(x11 + x12 )
xij ≥ 0 pour tout i,j.
Problème 3
Notons xij le nombre d’unités de marchandise livrées à partir du dépôt Di , i =
1, 2 au client Cj , = 1, 2, 3 chaque mois. Le cout total du transport à minimiser
est :
z = 30x11 + 60x12 + 30x13 + 70x21 + 60x22 + 20x23 .
Sou les contraintes :
satisfaction clients :
x11 + x21 = 200
x12 + x22 = 200
x13 + x23 = 300
Disponibilité de la marchandise dans les dépôts :
x11 + x12 + x13 ≤ 300
x21 + x22 + x23 ≤ 450
xij ≥ 0 pour tout i, j
Problème 4
Notons x1 la somme d’argent à investir en actions marocaines, x2 la somme à
investir en d’obligations marocaines, x3 la somme à investir en actions étrangères
et x4 la somme à investir en obligations étrangères.
le rendement anticipé annuel de la compagnie à maximiser est alors :
Les contraintes :
x1 + x2 + x3 + x4 = 5000000
x2 + x4 ≥ 0, 3 ∗ 5000000
x3 + x4 ≤ 0, 5 ∗ 5000000
1.9. EXEMPLES DE PROBLÈMES MODÉLISÉS PAR UN PROGRAMME LINÉAIRE31
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0.
Remarque : on a x1 = 5000000 − x2 − x3 − x4 , le problème revient alors à :
minimiser z = 0, 02x2 − 0, 02x3 + 0, 01x4
sous les contraintes :
x2 + x4 ≥ 1500000
(P )
x 3 + x4 ≤ 2500000
x 2 + x3 + x4 ≤ 5000000(⇐ x1 ≥ 0)
x2 ≥ 0, x3 ≥ 0, x4 ≥ 0.
Problème 5
1) Soit x1 le nombre de produits P1 et x2 le nombre de produits P2 à fabriquer
par l’entreprise A.
a) Le modèle pour l’entreprise A est alors :
maximiser 20x1 + 40x2
2x1 + 8x2 ≤ 32
6x1 + 4x2 ≤ 36
x1 ≥ 0, x2 ≥ 0.
b) Solution avec la méthode du simplexe (tableau final) :
x1 x2 x3 x4
x2 0 1 . . 3
x1 1 0 . . 4
z 0 0 -4 -2 -200
x1 = 4, x2 = 3, zmax = 200.
2)
a) L’entreprise cherche à minimiser sa dépense, elle doit minimiser :
w = 32y1 + 36y2
Les contraintes traduisent le fait que l’entreprise A doit faire au moins autant
de bénéfice que si elle fabrique et vend les marchandises. Un unité du produit
P1 nécessite 2 unités de M1 proposées avec une marge y1 par unité et 6 unités
de de M2 proposées avec y2 par unité. l’équivalent d’une de P1 est alors vendu
avec une marge de 2y1 + 6y2 qui doit être supérieur ou égale au bénéfice de 20
dh que rapporte une unité de P1 à l’entreprise A. idem pour le produit P 2. Les
contraintes sont alors :
2y1 + 6y2 ≥ 20
8y1 + 4y2 ≥ 40
y1 ≥ 0, y2 ≥ 0
b) La solution est y1 = 4, y2 = 2, wmin = 200 (comparer avec la dernière ligne
du tableau 1) a)).
3) on a zmax = wmin = 200 valeur qui réalise les objectifs des deux entreprises.
Remarquer que si on note
20 x1 2 8 32 y1
c= , x= , A= b= , y= .
40 x2 6 4 36 y2
Chacun des deux problèmes (P) et (D) est dit dual de l’autre.
Problème 6. Soit x1i le nombre d’articles produits en temps normal et x2i le
nombre d’articles produits en heures sup le mois i, i = 1, ..., 4. On doit minimiser
la somme des coûts des heures sup et des coût de stockage des excédent en fin
de chaque mois : P4
- coût des heures sup : 70 i=1 x2i
- excédent en fin de mois 1 : x11 + x21 − 900
- excédent en fin de mois 2 : x11 + x21 − 900 + x12 + x22 − 1100
- excédent en fin de mois 3 : x11 + x21 − 900 + x12 + x22 − 1100 + x13 + x23 − 1700
- excédent en fin de mois 4 : x11 + x21 − 900 + x12 + x22 − 1100 + x13 + x23 −
1700 + x14 + x24 − 1400 = 0. On suppose qu’on ne veut pas P4avoir d’excédent à
la fin du mois 4. La fonction à minimiser est alors : z = 70 i=1 x2i + 30(3x11 +
3x21 + 2x12 + 2x22 + x13 + x23 − 8600)
Les contraintes :
x11 + x21 ≥ 900
x11 + x12 + x21 + x22 ≥ 2000
x11 + x12 x13 + x21 + x22 + x23 ≥ 3700
x11 + x12 + x13 + x14 + x21 + x22 + x23 + x24 = 5300
0 ≤ x1i ≤ 1100, 0 ≤ x2i ≤ 250 pour tout i = 1, ..., 4
Solution solver :
Final Objective allowable allowable
Variable name value coefficient increase decrease
x11 Production normale mois 1 1100 90 70 ∞
x12 Production normale mois 2 1100 60 100 ∞
x13 Production normale mois 3 1100 30 130 ∞
x14 Production normale mois 4 1100 0 160 ∞
x21 Production heure sup mois 1 150 160 ∞ ∞
x22 Production heure sup mois 2 250 130 30 ∞
x23 Production heure sup mois 3 250 100 60 ∞
x24 Production heure sup mois 4 250 70 90 ∞
zmin = 39000Dh
1 si l’équipage i est affecté au vol j
Problème 9. Soit xij =
0 sinon
Le modèle pour notre problème consiste alors à minimiser
100 X
X 90
z= cij xij
i=1 j=1