Vous êtes sur la page 1sur 34

Chapitre 1

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.1 Quelques exemples


Ci - après quelques exemples qui se modélisent en programmes linéaires
classiques :

Exemple 1 : Un atelier de menuiserie peut produire deux types de portes


A et B en utilisant le même bois. Le temps de réalisation d’une porte de type
A est le double de celui nécessaire pour réaliser une porte de type B. Si l’atelier
produit le type B seul il peut en produire jusqu’à 100 unités par mois. La
quantité de bois disponible est suffisante pour fabriquer 80 unités de type A
ou de type B chaque mois. Une étude de marché montre que l’atelier peut
commercialiser jusqu’à 40 unités de type A et 70 unités de type B par mois. Le
bénéfice réalisé est de 200 DH par unité pour le type A et 150 DH par unité pour
le type B. Quel est le programme mensuel de fabrication qui réalise le bénéfice
maximum pour l’entreprise.

1
2 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS

Modélisation : Notons x1 le nombre de portes de type A et x2 le nombre


de portes de type B à produire chaque mois. Maximiser le bénéfice revient à
maximiser la fonction
z = 200x1 + 150x2
Sous les contraintes : 

 2x1 + x2 ≤ 100
 x1 + x2 ≤ 80


x1 ≤ 40
 x2 ≤ 70



x1 ≥ 0, x2 ≥ 0

Exemple 2 : Une entreprise a la capacité de fabriquer trois produits


P1 , P2 et P3 .Les trois produits passent par le même atelier de fabrication et un
même atelier de montage. La capacité mensuelle de l’atelier de fabrication est
de 12 000 unités de P1 (si on fabrique P1 seulement) ou bien 8 000 unités de
P2 ou bien 6 000 unités de P3 . La capacité mensuelle de l’atelier de montage
est de 6 000 unités de P1 ou bien 16 000 unités de P2 ou bien 6 000 unités de
P3 . Une étude du marché montre que l’entreprise peut commercialiser jusqu’à
10 000 unités de P1 , 6 000 unités de P2 et 4 000 unités de P3 par mois. Les
bénéfices réalisés sont de 10 DH par unité de P1 , 20 DH par unité de P2 et 25
DH par unité de P3 . Quel est le programme mensuel de fabrication qui réalise
le bénéfice maximum pour l’entreprise.

Modélisation : Notons xj le nombre d’unités du produit Pj fabriquées


chaque mois. Rendre maximum le bénéfice de l’entreprise c’est maximiser la
fonction
z = 10x1 + 20x2 + 25x3
La capacité mensuelle de l’atelier de fabrication est de 12 000 unités de P1 , donc
1
le taux d’occupation de l’atelier de production par unité de P1 est 12000 . Les
contraintes s’écrivent alors :
 1 1 1

 12000 x1 + 8000 x2 + 6000 x3 ≤ 1
1 1 1
x1 + 16000 x2 + 6000 x3 ≤ 1


 6000


x1 ≤ 10000

 x2 ≤ 6000
x3 ≤ 4000




x1 ≥ 0, x2 ≥ 0, x3 ≥ 0

1.2 Problèmes généraux et modèles


Nous donnons dans ce paragraphe quelques problèmes généraux avec modélisation
sous forme de programmes linéaires

Problème 1 Un acteur économique exerce n activités avec des intensités


xj à déterminer. Ces activités utilisent m ressources R1 , R2 , ..., Rm . La quan-
tité aij de ressource i nécessaire pour exercer l’activité j avec une intensité 1 est
connue. On connaı̂t aussi le profit ou le coût cj correspondant à une intensité
1 de l’activité i. Déterminer les intensités xj j = 1, ..., n compatibles avec les
limitations des ressources, pour minimiser le coût ou maximiser le profit. Nous
1.2. PROBLÈMES GÉNÉRAUX ET MODÈLES 3

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 bi la quantité maximale disponible de la res-


source Ri . Minimiser le coût ou maximiser le profit revient à minimiser ou
maximiser la fonction
z = c1 x1 + c2 x2 + ... + cn xn
sous les contraintes


 a11 x1 + a12 x2 + ... + a1n xn ≤ b1
 ..

.
 am1 x1 + am2 x2 + ... + amn xn ≤ bm


x1 ≥ 0, x2 ≥ 0, ... , xn ≥ 0

Problème 2 (mélange à coût minimal) : Nous disposons de n pro-


duits P1 , P2 , ..., Pn contenant chacun une quantité donnée de m constituants
S1 , S2 , ..., Sm . Les quantités aij de chaque constituant Si par unité de chaque
produit Pj sont connues. Les coûts cj par unité de chaque produit Pj sont
également connus. Nous désirons réaliser un mélange contenant au moins une
quantité bi par unité de chaque constituant Si . Trouver la manière la moins
couteuse de réaliser ce mélange.

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

Problème 3 (Transport) : Nous disposons de n dépôts D1 , D2 , ..., Dn


pour alimenter m chantiers S1 , S2 , ..., Sm en ciment. Chaque dépôt Di contient
une quantité ai de ciment. Chaque chantier Sj a besoin d’une quantité bj . de
ciment. Les coûts cij de transport d’une unité entre le dépôt Di et le chantier
Sj sont connus.. Quel est le programme qui permet de satisfaire les besoins de
tous les chantiers à coût minimal.

Modélisation : Notons xij la quantité de ciment transportée du dépôt


Di vers le chantier Sj . Satisfaire les besoins des chantiers à prix minimum revient
à minimiser la fonction
Xn X m
z= cij xij
i=1 j=1
4 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS

Sous les contraintes


 m
 X



 xij ≤ ai i = 1, ..., n
 j=1

Xn


 xij = bj j = 1, ..., m

 i=1

xij ≥ 0, i = 1, ..., n; j = 1, ..., m

Il est évident qu’une


Pn condition
Pm nécessaire pour que le problème admette une
solution est que i=1 ai ≥ j=1 bj (les quantités disponibles sont supérieures
aux besoins) .

Problème 4 (Utilisation des terres) : Nous disposons de n parcelles


de terre T1 , T2 , ..., Tn sur lesquelles on peut cultiver m produits différents
P1 , P2 , ..., Pm .. Nous notons :
si la superficie de la parcelle Ti ; i = 1, ..., n,
aij le rendement par unité de surface de Pj sur le terrain Ti ; i =
1, ..., n; j = 1, ..., m,
cj le bénéfice unitaire réalisé sur le produit Pj ; j = 1, ..., m.
Une quantité minimale bj à produire de chaque Pj est fixée par le gérant
(bj 6= 0 pour certains produits stratégiques pour l’exploitation).
Les valeurs des si , aij , cj , et bj étant fixées, quel est le programme d’uti-
lisation des terres qui réalise.le meilleur bénéfice pour l’exploitation

Modélisation : Soit xij le nombre d’unités de surface de Ti utilisées pour


cultiver Pj . Réaliser le meilleur bénéfice pour l’exploitation c’est maximiser la
fonction
X n m
X
z= cj aij xij
j=1 i=1

Sous les contraintes


 m
 X



 xij ≤ si i = 1, ..., n
 j=1

Xn


 aij xij ≥ bj j = 1, ..., m

 i=1

xij ≥ 0, i = 1, ..., n; j = 1, ..., m

Avant d’exposer les méthodes mathématiques qui permettent de résoudre les


les programmes linéaires, signalons qu’il existe plusieurs logiciels de recherche
opérationnelle qui résolvent ses problèmes sous toutes leurs formes. On trouve
aussi des outils de résolution comme SOLVEUR qui est intégré dans des ta-
bleurs tels Microsoft excel ou Open Office Classeur. Nous présentons dans le
paragraphe suivant une méthode de résolution d’un programme linéaire à l’aide
de solveur sur Open Office Classeur
1.3. SOLVEUR 5

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.

Figure 1.1 – ouvrir une feuille de calcul et aller sur ”outils”

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

Figure 1.3 – Options pour déclarer la positivité des variables


1.4. RÉSOLUTION GRAPHIQUE 7

A
B
C

z=13000

z=6000
D

Figure 1.4 – Résolution graphique d’un programme linéaire

1.4 Résolution graphique


La résolution graphique du problème à deux variables :

maximiserz = 200x1 + 150x2

Sous les contraintes : 



 2x1 + x2 ≤ 100
 x1 + x2 ≤ 80


x1 ≤ 40
 x2 ≤ 70



x1 ≥ 0, x2 ≥ 0

se fait de manière suivante :


Commencer par tracer les droites délimitant le domaine des contraintes
(figure1.4) : x1 + x2 = 80 (BC), 2x1 + x2 = 100 (CD), x1 = 40 (AB), x2 = 70
(DE), x1 = 0 (OA), x2 = 0 (OE).
Remarquer qu’en déplaçant la droite d’équation 200x1 + 150x2 =constante
dans le sens des flèches indiquées sur le schéma, la valeur de la constante aug-
mente, donc la valeur maximale de z = 200x1 +1502 sur le domaine délimité par
les contraintes est obtenue lorsque cette droite passe par le point C. Le point
C est l’intersection des droites (BC) et (CD) donc ses coordonnées s’obtiennent
en résolvant le système 
2x1 + x2 = 100
x1 + x2 = 80
d’où x1 = 20, x2 = 60 et le bénéfice maximum est alors zmax = 13000 DH.
8 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS

Cette méthode, basée sur une construction géométrique peut difficilement


être appliquée si le problème contient trois variables mais ne peut s’appliquer au
delà de trois variables, d’où la nécessité de développer une méthode algébrique
de résolution.
Le développement d’une méthode algébrique utilise la remarque de bon sens
qu’on peut faire à partir de ce qui précède : si le maximum est fini il est obtenue
sur un sommet du domaine ; il suffit alors de parcourir les sommets (en nombre
fini) pour trouver le maximum. C’est ce que fait la méthode du simplexe publiée
par Dantzig en 1947.

1.5 Méthode du simplexe


La méthode du simplexe consiste à partir d’un sommet de l’ensemble des
contraintes (généralement l’origine O) et chercher le sommet suivant en mo-
difiant la valeur d’une des variables de manière à augmenter la valeur de la
fonction à maximiser z.

1.5.1 Simplexe sur un exemple


Avant d’aborder le cas général à n variables, nous exposons la méthode du
simplexe sur le problème à deux variables :

maximiserz = 200x1 + 150x2


Sous les contraintes :
2x1 + x2 ≤ 100
x1 + x2 ≤ 80 (1.1)
x1 ≤ 40
x2 ≤ 70
x1 ≥ 0, x2 ≥ 0

Notons que que les contraintes peuvent s’écrire de manière équivalente :




 x3 = 100 − 2x1 − x2
 x4 = 80 − x1 − x2


x5 = 40 − x1 (1.2)
x = 70 − x

6 2



x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x5 ≥ 0, x6 ≥ 0

qui est un système d’équations linéaires de 4 équations et 6 variables. En choi-


sissant des valeurs pour x1 et x2 on peut calculer les autres variables, mais ici le
choix x1 et x2 ne peut être totalement arbitraire, il faut que les variables soient
toutes positives ou nulles.
En prenant x1 = 0, x2 = 0 on a x3 = 100, x4 = 80, x5 = 40, x6 = 70, on a une
solution qui vérifie la positivité des variables, elle est dite solution de base
admissible de (1.1) et on a z = 0. Les variables nulles (non principales sont
appelées variables hors base et les autres (variables principales) sont dites
variables de base.
On va partir de cette solution de base admissible pour en trouver une autre qui
soit admissible pour (1.1) et qui augmente la valeur de z. Noter que les coeffi-
cients de x1 et x2 dans z sont positifs, donc en augmentant la valeur de l’une
1.5. MÉTHODE DU SIMPLEXE 9

des variables on augmente la valeur de z.


Etape 1. On va augmenter x1 en gardant x2 = 0 et faisant de sorte que les
autres variables restent positives ou nulles, compte tenu de (1.2), nous avons :

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 ,

donc x1 ne doit pas dépasser la valeur 40 ; on prend x1 = 40 ce qui donne


x5 = 0, x4 = 40, x3 = 20, x6 = 30 et z = 8000. Pour continuer, à partir du
système (1.2) on exprime les nouvelles variables de base (x1 , x3 , x4 , x6 ) et z en
fonction des nouvelles variables hors base(x2 , x5 ce qui donne :

 x1 = 40 − x5

x3 = 20 + 2x5 − x2




x4 = 40 + x5 − x2

(1.3)
 x6 = 70 − x2

 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x5 ≥ 0, x6 ≥ 0



z = 8000 + 150x2 − 200x5

Le coefficient de x2 dans z est positif


Etape 2. On fait la même chose qu’à l’étape 1 en augmentant x2 et en gardant
x5 = 0 ce qui conduit à x2 = 20, x3 = 0, x1 = 40, x4 = 20, x6 = 50 et z =
11000. Les nouvelles variables hors base sont (x3 , x5 ) et


 x2 = 20 − x3 + 2x5
x 1 = 40 − x5




x4 = 20 + x3 − x5

(1.4)

 x6 = 50 + x3 − 2x5
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x5 ≥ 0, x6 ≥ 0




z = 11000 − 150x3 + 100x5

Le coefficient de x5 dans z est positif


Etape 3. On augmente x5 et en gardant x3 = 0 ce qui conduit à x5 = 20, x4 =
0, x1 = 20, x2 = 600, x6 = 10 et z = 13000 Les nouvelles variables hors base
sont (x3 , x4 ) et


 x5 = 20 + x3 − x4
x 2 = 60 − 2x4




x1 = 20 − x3 + x4

(1.5)

 x6 = 10 − x3 + 2x4
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x5 ≥ 0, x6 ≥ 0




z = 13000 − 50x3 − 100x5

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

Ecriture sous forme de tableaux : la résolution que nous venons d’exposer


peut s’écrire sous forme de tableaux comme suit :
x1 x2 x3 x4 x5 x6
x3 2 1 1 0 0 0 100 100/2
x4 1 1 0 1 0 0 80 80/1
Tableau 1 :
x5 1  0 0 0 1 0 40 40/1
x6 0 1 0 0 0 1 70 -
z 200 150 0 0 0 0 0

le premier coefficient positif de la fonction économique (dernière ligne du


tableau) indique la variables qui va rentrer dans la base, ici c’est x1 qui se
trouve sur la 2ème colonne . Pour déterminer la variable qui va sortir de la base,
on divise terme à terme les éléments de la dernière colonne par ceux qui sont
strictement positifs de la colonne de la variable qui rentre dans la base (ici la
2ème colonne du tableau) ; le plus petit rapport obtenu indique la variable qui
sort ; ici on a : min(100/2,80/1,40/1)=40 c’est donc la variable de base x5 qui
se trouve sur la 4ème ligne du tableau qui sort de la base.
L’élément du tableau qui se trouve sur l’intersection de la variable qui rentre
et celle qui sort (ici intersection de la 2ème colonne et la 4ème ligne) et choisi
comme pivot de Gauss pour transformer la tableau de la manière suivante :
- remplacer la ligne L4 du pivot par L04 = L4 /pivot.
- remplacer chacune des autres lignes L2 , L3 et L5 par L0i = Li − ai2 L02 où ai2
est l’élément du tableau qui se trouve sur la 2ème colonne de la ligne i.
On obtient :

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

lire la solution x3 = 20, x4 = 40, x1 = 40, x6 = 70, z = 8000.

On applique au tableau 2 la même procédure que celle qu’on a appliquée au


tableau 1 et on continue jusqu’au moment où on n’a plus de coefficient positif
sur la dernière ligne du tableau.

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 :

x2 = 60, x5 = 20, x1 = 20, x6 = 10, zmax = 13000

x3 = x4 = 0 (variables hors base).

1.5.2 Simplexe sous forme matricielle


dans cette section nous exposons la méthode du simplexe sous forme matri-
cielle pour la résolution d’un programme linéaire de la forme dite standard :

 max cT x
Ax = b (1.6)
x≥0

où c ∈ Rp , x ∈ Rp , A, une matrice m × p et b ∈ Rm , avec p > m, (p = n + m).


Supposons que A est de rang m, donc il existe une sous matrice B, m × m de
A inversible. Nous noterons N la matrice complémentaire de B dans A.
Soient B et N les ensembles des indices de colonnes de B et de N respectivement
dans A. Notons xB , xN les sous vecteurs de x dont les indices sont dans B et N
respectivement. xB est le vecteur des variables de base et xN celui des
variables hors base, on a alors :

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

rentre de la base). Pour déterminer la variable qui doit sortir de la base


nous devons chercher la plus grande valeur de t qui assure que toutes les
composantes du vecteur x̃B = B −1 b − tB −1 N ek restent positives (pour
rester dans le domaine des contraintes). Deux cas peuvent se présenter :
ou bien toutes les composantes du vecteur B −1 N ek sont négatives ou
nulles, dans ce cas on peut prendre t aussi grand que l’on veut (le domaine
des contraintes est non borné) donc zmax = +∞. Sinon, il existe des
composantes (B −1 N ek )j, j ∈ B qui sont strictement positives, dans ce
cas on prend

(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).

La méthode du simplexe se termine à une étape p, en aboutissant à l’une


des situations suivantes (on note B ∗ = Bp et B ∗ la sous matrice de A dont les
indices de colonnes sont dans B ∗ ) :
— Existence et unicité de solution : les coefficients du vecteur

cTN ∗ − cTB∗ B ∗−1 N ∗

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

cTN ∗ − cTB∗ B ∗−1 N ∗

est strictement positif mais aucun terme de la colonne correspondante


à ce coefficient dans la matrice N n’est strictement positif, la variable
correspondante n’est pas borné supérieurement alors zmax = +∞ .
Exemple :
M ax z = 2x1 + x2 x1 x2 x3 x4
x1 − x2 ≥ 1 x1 0 -1 1 1 3
tableau final :
x1 − 2x2 ≤ 2 x4 1 -2 0 1 2
x1 ≥ 0, x2 ≥ 0 z 0 5 0 -2 -4
x2 rentre dans la base sans être bornée supérieurement, donc zmax = +∞

— Dégénérescence : on dit qu’il y a dégénérescence lorsqu’on a une variable


de base qui prend une valeur nulle (l’une des composantes du vecteur
B1 b est nulle), la valeur de z ne change pas à l’itération suivante ( pour
un nombre généralement fini d’itérations). Cela se produit quand on est
à un sommet où le nombre de contraintes saturées est supérieur au rang
de la matrice A.
Exemple :
M ax z = 2x1 + x2
x1 − x2 ≤ 2
3x1 + x2 ≤ 6
x2 ≤ 3
x1 ≥ 0, x2 ≥ 0
première itération :

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

on reste au même sommet qu’à la deuxième itération (x1 = 2, x2 = 0)


troisième itération :
x1 x2 x3 x4 x5
x1 1 0 0 1/3 -1/3 1
x2 0 1 0 0 1 3
x3 0 0 1 -1/3 4/3 4
z 0 0 0 -2/3 -1/3 -5
14 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS

Lorsqu’on prend comme critère du choix de la variable entrante celle qui a


le plus grand coefficient positif dans z , alors dans certains cas particuliers
(rare en pratique) on peut observer ce qu’on l’on appelle un ”cyclage” :
on tourne sur un même nombre de solutions de bases indéfiniment.
Exemple :

max z = 10x1 − 57x2 − 9x3 − 24x4


0.5x1 − 5.5x2 − 2.5x3 + 9x4 ≤ 0
0.5x1 − 1.5x2 − 0.5x3 + x4 ≤ 0
x1 ≤ 1.
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0.

Le cyclage peut être évité en prenant pour variable entrante dans la


base, la variable de plus petit indice parmi celles qui satisfont le critère
d’entrée.
Une difficulté pour appliquer la méthode du simplexe à un problème sous
forme standard est de trouver une base de départ admissible, c’est à dire trouver
une sous matrice B, m × m inversible, calculer B −1 et vérifier que B −1 b ≥ 0.
Ce problème ne se pose pas dans cas d’un programme linéaire écrit sous forme
canonique (avec b ≥ 0) que nous exposons dans la sous section suivante.

1.5.3 Cas d’un programme linéaire sous forme canonique


un programme linéaire est sous forme canonique s’il s’écrit :


 max z = c1 x1 + c2 x2 + ... + cn xn
 a11 x1 + a12 x2 + · · · + a1n xn ≤ b1



.. (1.7)
 .
a x + am2 x2 + · · · + amn xn ≤ bm

 m1 1



xi ≥ 0, i = 1, ..., n

Nous supposons que bi ≥ 0 pour tout i = 1 · · · m


Pour résoudre (1.7) par la méthode du simplexe nous commençons par l’écrire
sous forme standard, cela se fait en transformant les contraintes inégalités en
contraintes égalités par ajout de variables dites d’écart :

ai1 x1 + · · · ain xn ≤ bi ⇔ (ai1 x1 + · · · ain xn + xn+i = bi , xn+i ≥ 0)

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 variablequi 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) .

Etape 2 On remplace N par N1 et b par b(1) ( B1 = B = I), et on refait la


même chose qu’à l’étape 1.
Remarque Un moyen pour déterminer une base de départ admissible est la
16 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS

méthode dite des deux phases, elle consiste en l’introduction de variables artifi-
cielles.

1.6 Méthode des deux phases


Soit le programme linéaire sous forme standard

 max z = cT x
(P S) Ax = b
x≥0

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

u = b, x = 0 est une solution de base admissible pour démarrer la résolution de


(P1) . A la fin de cette phase on obtient une valeur optimal z1∗ . Soit on a z1∗ > 0
donc u∗ 6= 0 ce qui signifie que le domaine des contraintes de (PS) est vide. Soit
z1∗ = 0, toutes les variables artificielle sont hors base, les variables de base sont
donc toutes des variables du problème initiale alors on passe à la phase 2.
phase 2 on supprime les variables artificielles du tableau obtenu en fin de phase
1, on remplace les coefficients de z1 par ceux de z dans la dernière ligne du
tableau et on annule les coefficients des variables de base dans z par élimination
de Gauss (si nécessaire) puis on continu la résolution par simplexe.
Exemple 1 

 max z = 4x1 + x2
3x1 + 2x2 ≥ 6


 x1 + x2 = 1
x1 ≥ 0, x2 ≥ 0

par ajout d’une variable d’écart (−x3 ) à la deuxième contrainte, le problème


s’écrit sous forme standard :


 max z = 4x1 + x2
3x1 + 2x2 − x3 = 6


 x1 + x2 = 1
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0

phase 1 : nous ajoutons deux variables artificielles u1 ≥ 0, u2 ≥ 0 aux contraintes


1 et 2 respectivement pour avoir une solution de base admissible et nous mini-
misons zu = u1 + u2 , ce qui donne le tableau :

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

puis, par la méthode du simplexe on obtient :

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

min zu = 3 > 0 alors le domaine des contraintes est vide.


Exemple 2 

 max z = 4x1 + 5x2
2x1 + x2 ≥ 4



x1 + 2x2 ≤ 5
x1 + 3x2 = 6




x1 ≥ 0, x2 ≥ 0

à l’aide de variables d’écarts ce problème s’écrit sous forme standard :




 max z = 4x1 + 5x2
 2x1 + x2 − x3 = 4


x1 + 2x2 + x4 = 5
x 1 + 3x2 = 6




x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0

phase 1 : nous ajoutons deux variables artificielles u1 ≥ 0, u2 ≥ 0 aux contraintes


1 et 3 respectivement pour avoir une solution de base admissible et nous mini-
misons zu = u1 + u2


 min zu = u1 + u2
 x1 + 2x2 + x4 = 5


2x1 + x2 − x3 + u1 = 4
x 1 + 3x2 + u2 = 6




x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, u1 ≥ 0, u2 ≥ 0

ce qui donne le tableau :

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

et commencer la méthode du simplexe :

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

Remarque un programme linéaire de la forme



 w = min bT y
(D) AT y ≥ c (1.9)
y≥0

peut être résolu après transformation en un problème sous forme canonique


comme nous l’exposons dans la section suivante

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

et 4 oeillets et il est vendu 45DH, B3 contient 2 roses 4 tulipes et 2 oeillets et il


est vendu 30DH.
En notant x1 le nombre de B1, x2 le nombre de B2 et x3 le nombre de B3,le
problème du fleuriste est de trouver les nombres x1 , x2 , x3 solutions de :


 maximiser z = 40x1 + 45x2 + 30x3
 sous les contraintes



8x1 + 6x2 + 2x3 ≤ 288

(P E)
 4x1 + 6x2 + 4x3 ≤ 180

4x1 + 4x2 + 2x3 ≤ 160




x1 ≥ 0, x2 ≥ 0, x3 ≥ 0

Supposons qu’un traiteur veut acheter tout le stock du fleuriste : le problème


du traiteur est de proposer un prix pour les roses, un prix pour les tulipes et
un prix pour les oeillets. Il désire acheter les fleurs au prix le plus bas, mais le
fleuriste ne vendra pas s’il ne gagne pas au mois autant d’argent qu’en vendant
les bouquets.
Si on note y1 le prix d’une rose, y2 le prix d’une tulipe et y3 le prix d’un oeillet,
le problème du traiteur est de minimiser le coût total : 288y1 + 180y2 + 160y3
mais il faut que les prix proposés soient acceptables pour le fleuriste :
Le fleuriste peut vendre un bouquet B1 de 8 roses, 4 tulipes et 4 oeillets à
40DH, donc pour le convaincre à vendre, les prix proposés doivent satisfaire la
contrainte : 8y1 + 4y2 + 4y3 ≥ 40, et pour chacun des 2 autres bouquets on a
une contrainte analogue. le problème du traiteur est alors de trouver les prix
y1 , y2 , y3 solutions de :


 minimiser w = 288y1 + 180y2 + 160y3
sous les contraintes




8y1 + 4y2 + 4y3 ≥ 40

(DE)

 6y1 + 6y2 + 4y3 ≥ 45
2y1 + 4y2 + 2y3 ≥ 30




y1 ≥ 0, y2 ≥ 0, y3 ≥ 0

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.

Definition 1 On appelle dual du programme linéaire sous forme canonique :



 z = max cT x
(P ) Ax ≤ b (1.10)
x≥0

le programme linéaire 
 w = min bT y
(D) AT y ≥ c (1.11)
y≥0

Noter que (D) peut aussi s’écrire



 − max −bT y
−AT y ≤ −c
y≥0

20 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS

et qui a pour dual : 


 − min(−c)T x
−Ax ≥ −b
x≥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

= cTB B −1 b + (cTN − cTB B −1 N )xN .

Comme x∗ est optimale pour (P), on a : cTB B −1 b = cT x∗ et cTN − cTB B −1 N ≤ 0


donc
cT x = cT x∗ + (cTN − cTB B −1 N )xN .
En Posant
dTN = cTN − cTB B −1 N et dTB = 0
on a dj ≤ 0 pour tout j = 1, ..., n + m et :
cT x = cT x∗ + dTN xN + dTB xB
= cT x∗ + dT x
Soit, en revenant à l’ordre de la base initiale :
 
n
X m
X n
X
cT x = cT x ∗ + dj xj + dn+i bi − aij xj 
j=1 i=1 j=1

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

qui s’écrit, en posant yi∗ = −dn+i , i = 1, · · · , m :


n m
!
X X
c T x = c T x ∗ − bT y ∗ + dj + aij yi∗ xj ,
j=1 i=1

prenons x = (0, · · · , 0, b1 , · · · , bm ), on obtient :


cT x∗ = bT y ∗ .
Pour j = 1, ...n, prenons xT = (eTj , xn+1 , · · · , xn+m ) où ej est le j ieme vecteur
Pm
de la base canonique de Rn on obtient : cj = dj + i=1 aij yi∗ et comme dj ≤ 0
pour tout j (condition d’optimalité de x∗ ), alors
AT y ∗ ≥ c et y ∗ = −dn+i ≥ 0
ce qui termine la preuve.
Remarque une fois le problème primal résolu alors la valeur optimale du
dual est égale à celle du primal et la solution optimale du dual est yi∗ =
−dn+i , i = 1, · · · , m où dT est la dernière ligne du tableau final du simplexe du
primal.
Exemple pour résoudre le problème :


 minimiser w = 5y1 + 11y2 + 8y3
2y1 + 4y2 + y3 ≥ 5



3y1 + y2 + 4y3 ≥ 4
y1 + 2y2 + 2y3 ≥ 3




y1 ≥ 0, y2 ≥ 0, y3 ≥ 0

22 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS

on écrit son dual




 maximiser z = 5x1 + 4x2 + 3x3
2x1 + 3x2 + x3 ≤ 5



4x1 + x2 + 2x3 ≤ 11
3x1 + 4x2 + 2x3 ≤ 8




x1 ≥ 0, x2 ≥ 0, x3 ≥ 0

la résolution de ce dernier par la méthode du simplexe donne le tableau optimal


final :
x1 x2 x3 x4 x5 x6
x3 0 -1 1 -3 0 2 1
x1 1 2 0 2 0 -1 2
x5 0 -5 0 -2 1 0 1
z 0 -3 0 -1 0 -1 -13
ce qui nous permet de conclure que la solution de notre problème initial est :
y1∗ = −d(3+1) = 1, y2∗ == −d5 = 0, y3∗ = −d6 = 1, wmin = zmax = 13.
Remarques Si le domaine de (P) est vide zmax = −∞ alors ou bien wmin =
−∞ ou bien wmin = +∞ (wmin ne peut être fini car sinon zmax est fini par
dualité forte). Donc, soit wmin = zmax = −∞ soit on a un saut de dualité infini.
Theorem 4 (Complémentarité linéaire) Soient x et y des solution réalisables
de (P) et (D) respectivement, u = b − Ax et v = AT y − c Alors x et y sont des
solution optimales de (P) et (D) respectivement si et seulement si : v T x = 0 et
uT y = 0 (ce qui est équivalent à vj xj = 0, j = 1, ..., n et ui yi = 0, i = 1, ..., m.)
Preuve En multipliant par y T l’égalité Ax + u = b on a : y T Ax + y T u = y T b
et en remplaçant y T A par sa valeur tirée de l’équation v = AT y − c on obtient :
v T x + y T u = bT y − cT x
Donc si x et y sont des solution optimales de (P) et (D) respectivement par le
théorème de dualité forte on a cT x = bT y donc v T x + y T u = 0 et on sait que
v T x ≥ 0, y T u ≥ 0 d’où v T x = 0 et y T u = 0.
Inversement si v T x = 0 et y T u = 0 alors cT x = bT y donc max(P ) = cT x car
T
bP y est un majorant de (P) (dualité faible). De même min(D) = bT y.
( vj xj = 0 et vj xj ≥ 0 pour tout i entraine que uj xj = 0 pour tout j)

1.7.1 dualité, forme générale


Soit f : X ⊂ Rn → R, gi : X → R, i = 1, ..., m et hj : X → R, j = 1, ..., p.
Considérons le problème de programmation mathématique :


 minimiser f (x)
gi (x) ≤ 0, i = 1, ..., m

(P )

 hj (x) = 0, j = 1, ..., p
x∈X

On appelle fonction de Lagrange associée à (P), la fonction L définie de X ×


Rm p
+ × R vers R par :
m
X p
X
L(x, u, v) = f (x) + ui gi (x) + vj hj (x)
i=1 j=1
1.8. SENSIBILITÉ AUX PERTURBATIONS 23

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

donc le problème (P) est équivalent à


( )
inf sup L(x, u, v)
x∈X u∈Rm p
+ , v∈R

et on appelle dual de (P) le problème



 maximiser {inf x∈X L(x, u, v)}
(D) ui ≥ 0, i = 1, ..., m
vj ∈ R, j = 1, ..., p

Pour le cas linéaire on a : X =∈ Rn , f (x) = cT x, g(x) = b−Ax, h(x) = e−Bx,


avec c ∈ Rn , b ∈ Rm , e ∈ Rp , A matrice m × n, B matrice m × p et
 T
 min c x

Ax ≥ b

(P ) (1.12)

 Cx = e
x≥0

La fonction de Lagrange associée à (P) est :


L(x, u, v, w) = cT x + uT (b − Ax) + v T (e − Bx) − wT Ix, u ≥ 0, w ≥ 0
L(x, uv, ww) = uT b + v T e + (c − uT A − v T B − wT I)x, u ≥ 0, w ≥ 0
noter que inf x∈X L(x, u, v, w) = −∞ sauf si c − uT A − v T B − wT I = 0 auquel
cas
inf L(x, u, v, w) = uT b + v T e
x∈X

et comme w ≥ 0, l’égalité c − uT A − v T B − wT I = 0 peut être remplacée par


uT A + v T B ≤ c le problème dual s’écrit alors

 max uT b + v T e
(D) uT A + v T B ≤ c (1.13)
u≥0

1.8 Sensibilité aux perturbations


dans ce paragraphe nous nous proposons de voir sous quelles conditions une
solution optimale d’un programme linéaire restera optimale si on modifie un coût
ci , i = 1, ..., n ou le second membre bj , j = 1, ..., m de l’une des contraintes. Ce
qui est appelé analyse poste-optimale du problème. Considérons le problème :

 max z = cT x
(P ) Ax = b
x≥0

Soit x∗ ∈ Rn une solution optimale de (P), B la matrices de base et N la matrice


hors base associées à x∗ . rappelons qu’on a alors :
x∗B = B −1 b ≥ 0, zmax = cTB B −1 b = cT x∗ et dT = cTN − cTB B −1 N ≥ 0
24 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS

1.8.1 Perturbation des coûts


Supposons que l’un des coefficients coûts ck , 1 ≤ k ≤ n a subi une modifi-
cation λ ∈ R c’est à dire que cT est remplacé par cTλ = (c1 , · · · , ck + λ, · · · , cn ).
Comme l’ensemble des contraintes n’a pas subi de modification, x∗B = B −1 b
reste réalisable pour le nouveau problème (Pλ ). Pour que x∗ soit optimale il
suffit d’avoir
dTλ = cTλ,N − cTλ,B B −1 N ≤ 0
ce qui va donner des condition sur la valeur de λ. Donc si dTλ ≥ 0 alors x∗ reste
optimale et la valeur optimale de (Pλ ) est

zλmax = cTλB B −1 b = cTλ x∗ .

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∗ .

1.8.2 Perturbation sur les contraintes


On remplace bT par bTµ = (b1 , · · · , bq + µ, · · · , bm ), 1 ≤ q ≤ n, µ ∈ R.
Comme dT = cTN − cTB B −1 N ne dépend pas de bµ alors pour que xµ = B −1 bµ
soit optimale il suffit qu’elle soit réalisable pour (Pµ ) c’est à dire

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

donne le tableau optimal final :

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

les variables de base optimale sont : x1 , x2 , x5 , alors, à partir du tableau initial,


la matrice de base B et la matrice hors base N sont données par :
1.8. SENSIBILITÉ AUX PERTURBATIONS 25
     
2 1 0 1 0 4  
0
B= 1 2 0 , N =  0 1 , et cB =
  5 , cN =

0
0 1 1 0 0 0

et à partir du tableau final :


     
2/3 −1/3 0 2/3 −1/3 30
B −1 =  −1/3 2/3 0 , B −1 N =  −1/3 2/3 , B −1 b =  20 ,
1/3 −2/3 1 1/3 −2/3 10
x∗1 = 30, x∗2 = 20, zmax = 220.

1) Perturbation du coût : on remplace les coefficients (4,5) de la fonction


économique de (PL) par (4,5+λ), alors
dTλ = cTλ,N − cTλ,B B −1 N  
2/3 −1/3
= (0 0) − (4 5 + λ 0)  −1/3 2/3 
1/3 −2/3
= (−1 + λ/3 − 2 − 2λ/3)
dλ ≤ 0 ⇔ −3 ≤ λ ≤ 3
Donc pour tout λ ∈ [−3, 3], x∗1 = 30, x∗2 = 20 reste solution optimale de (Pλ et
zmax = cTB B −1 b = 220 + 20λ
Noter que pour λ = −3 ou λ = 3 la solution n’est pas unique (pour λ = −3, x∗1 =
40, x∗2 = 0 est aussi une solution et zmax = 160, pour λ = 3, x∗1 = 10, x∗2 = 30
est aussi une solution et zmax = 280).
Si (par exemple) λ > 3, alors on le tableau :
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 + λ/3 −2 − 2λ/3 0 −220 − 20λ

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

soit une solution de base optimale pour (P Lt ) il suffit d’avoir :


B −1 bt ≥ 0
    
2/3 −1/3 0 80 90 − t
B −1 bt =  −1/3 2/3 0   70 + t  = 1/3  60 + 2t 
1/3 −2/3 1 30 30 − 2t
26 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS

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.

Rapport de sensibilité donné par Solveur :

valeur finale coefficient dans augmentation diminution


des variables fonction objectif permise permise
30 4 6 3/2
20 5 3 3

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

1.9 Exemples de problèmes modélisés par un


programme linéaire
Problème 1. Une usine fabrique des pièces en inox. Ces pièces sont de trois
types A, B, C. Elle sont fabriquées par lots de 50 dans un atelier où sont ras-
semblées : deux machines pour la découpe de l’inox, une machine pour l’em-
boutissage, deux machines pour le polissage. Chaque machine fonctionne 120
heures par mois.
Les caractéristiques de fabrication sont rassemblées dans le tableau suivant :

Coût de l’heure Lot A Lot B Lot C


Découpage 20 DH 1h 1,5h 1,5
Emboutissage 30 DH 0,5h 0h 1h
Polissage 40 DH 2h 1h 1h
coût de l’inox/lot 50 DH 85 DH 68 DH
Prix de vente /lot 200 DH 200 DH 210 DH
L’objectif de ce problème est de maximiser le bénéfice de l’usine. Ecrire le
programme linéaire qui modélise ce problème.

Problème 2. Une entreprise dispose de 2 usines, U1 , U2 , susceptibles de fabri-


quer trois types d’appareils A1 , A2 et A3 . Dans l’usine U1 , le coût unitaire de
production des trois appareils est respectivement de 1500 DH, 1800 DH et 2000
DH. Dans l’usine U2 , il est de 1800 DH, 2000 DH et 2500 DH respectivement.
Les prix de vente unitaires sont respectivement 1900 DH, 2200 DH et 2800 DH
Il y a 1300 heures disponibles dans U1 par mois et 1600 heures disponibles
dans U2 par mois. Les temps de fabrication en heures sont dans le tableau
suivant :
1.9. EXEMPLES DE PROBLÈMES MODÉLISÉS PAR UN PROGRAMME LINÉAIRE27

A1 A2 A3
Usine U1 2 2,5 5
Usine U2 2,8 4 3

La production totale ne doit pas dépasser 7100 appareils A1 , 6500 appareils A2


par mois et que le nombre d’appareils A3 est au plus égale à trois fois le nombre
d’appareils A1 .
L’entreprise désire connaı̂tre le nombre de chaque type d’appareils A i (i=1,
2,3) à fabriquer par chaque usine Uj (j=1, 2) et par mois pour maximiser son
bénéfice. Modéliser le problème.

Problème 3. Une entreprise dispose de deux dépôts D1 et D2. Ces dépôts


doivent alimenter en marchandise trois clients C1 C2 et C3.
les besoins des clients sont : 200 unités de marchandise pour C1, 200 pour C2,
300 pour C3.
Les dépôts contiennent : 300 unités de marchandise pour D1 et 450 pour D2.
Le coût de transport d’une unité de marchandise en Dirham est donné dans le
tableau suivant :
C1 C2 C3
D1 30 60 30
D2 70 60 20

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 4. Une compagnie d’assurance est soumise à des contraintes dans


la gestion de son portefeuille d’actifs financiers. Le gestionnaire doit placer au
moins 30% de son capital en obligation et moins de 50% de son portefeuille en
titres étrangers.
Les rendements qu’il anticipe pour l’année à venir sont :
- action marocaine : 10%, action étrangère : 12%,
- obligation marocaine : 8%, obligation étrangère : 9%.
La compagnie dispose d’un capital de 5 000 000 DH, et souhaite en obtenir
le rendement le plus élevé possible.
Modéliser le problème de la compagnie d’assurances.

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.

Problème 6. Une entreprise a la capacité de produire 1100 articles par mois


en temps normale. Elle peut produire jusqu’à 250 articles en plus pas mois en
payant des heures supplémentaires avec un sur coût de 70 DH par article.
Les commandes des clients pour les 4 prochains mois sont : 900 articles pour
le mois 1 ; 1100 pour le mois 2 ; 1700 pour le mois 3 et 1400 pour le mois 4.
L’entreprise peut stocker ses excédents à la fin de chaque mois pour un coût de
30 DH par article par mois.
Ecrire le programme linéaire qui va donner le nombre d’articles que doit
produire l’entreprise en temps normal et en heures supplémentaire chaque mois
pour satisfaire la demande des clients pour les 4 mois avec un coût minimum en
heures supplémentaires et frais de stockage.

Problème 7. Une société de transport de voyageurs exploite une ligne de bus


Fes-Marrakech-Agadir, elle ne peut pendre ou faire descendre des voyageurs en
cours de route. Les billets de voyage sont vendus à trois tarifs différents :
Tarif 1 : plein tarif, billet remboursable jusqu’au jour du départ.
Tarif 2 : billet non remboursable et non échangeable.
Tarif 3 : billet acheté au moins 3 semaines avant le départ, non remboursable et
non échangeable.
les tarifs en fonction des trajets sont donnés dans le tableau suivant :

Fes-Marrakech Marrakech-Agadir Fes-Agadir


tarif1 300 160 360
tarif2 220 130 180
tarif3 100 80 140
Chaque bus a une capacité maximum de 30 places. D’après l’expérience des
années passées, les prévisions de demandes en places pour un jour donné sont :
Fes-Marrakech Marrakech-Agadir Fes-Agadir
tarif1 4 8 3
tarif2 8 10 8
tarif3 22 20 18
Ecrire le programme qui donnera une répartition des places assurant un bénéfice
maximum pour le jour concerné.

Prolème 8. Un responsable de cuisine souhaite préparer un repas le moins


chère possible en respectant les contraintes suivantes, le repas doit contenir au
moins :
- 200 g de glucides
- 90 g de lipides
- 50 g de protides
1.9. EXEMPLES DE PROBLÈMES MODÉLISÉS PAR UN PROGRAMME LINÉAIRE29

- au moins la moitié des protides doit être d’origine végétale


- le repas doit fournir au moins 1200 calories.
Le cuisinier doit choisir parmi les produits dont la composition (en g par 100 g)
et le prix sont donnés dans la tableau suivant pour 100 g de chaque produit :

sardines Poulet fromage lentilles spaghetti pommes carottes


de terre
glucides 0 0 2 20 30 14 9
lipides 6 9 25 0,4 0,4 0 0
protides 22 22 20 10 5 2 1
calories 140 170 300 120 140 70 40
Prix 1,60 2,60 12,00 1,80 1,20 0,5 0,4
de 100 g

Ecrire le programme qui donnera le menu le moins chère respectant les contraintes.

Problème 9. Une société de transport aérien disposant de 100 équipages désire


assurer 90 vols. Notons par Ci j le coût d’affectation de l’équipage i au vol j .
Sachant qu’un équipage doit être affecté à chaque vol et un vol doit être assuré
par un seul équipage, modéliser le problème de la société.

Problème 10. Une entreprise a besoin au moins des effectifs d’employés sui-
vants pour chacun des jours de la semaine.

Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche


14 13 15 16 19 18 11

Par obligation de la législation du travail, chaque employé travaille cinq jours


consécutifs et s’arrête deux jours. Quel est le nombre minimum d’employés pour
faire tourner l’entreprise.

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 :

z = 200x1 +200x2 +210x3 −(20+0, 5∗30+2∗40+50)x1 −(1, 5∗20+40+85)x2 −(1, 5∗20+30+40+68)x3

z = 35x1 + 45x2 + 32x3


les contraintes sont dictées par la disponibilité des machines :
Découpage : x1 + 1, 5x2 + 1, 5x3 ≤ 240
Emboutissage : 0, 5x1 + x3 ≤ 120
30 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS

Polissage : 2x1 + x2 + x3 ≤ 240


Le programme linéaire qui modélise notre problème est alors :


 maximiser z = 35x1 + 45x2 + 32x3
sous les contraintes :




x1 + 1, 5x2 + 1, 5x3 ≤ 240

(P )

 0, 5x1 + x3 ≤ 120
2x1 + x2 + x3 ≤ 240




x1 ≥ 0, x2 ≥ 0, x3 ≥ 0.

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 :

z = 0, 10x1 + 0, 08x2 + 0, 12x3 + 0, 09x3

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

Le problème de l’entreprise A s’écrit :



 max z = cT x
(P ) Ax ≤ b
x≥0

32 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS

Le problème de l’entreprise B s’écrit :



 min w = bT y
(D) AT y ≥ c
y≥0

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)

z = −258000 + 90x11 + 60x12 + 30x13 + 160x21 + 130x22 + 100x23 + 70x24

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

Problème 7. Notons x1i le nombre de places proposées pour le trajet Fes-


Marrakech au tarif i, i = 1, 2, 3. x2i le nombre de places proposées pour le
trajet Marrakech-Agadir et x3i le nombre de places proposées pour le trajet
Fes-Agadir. La fonction à maximiser est alors :
z = 300x11 +220x12 +100x13 +160x21 +130x22 +80x23 +360x31 +180x32 +140x33
Sous les contraintes :
x11 + x12 + x13 + x31 + x32 + x33 ≤ 30
x21 + x22 + x23 + x31 + x32 + x33 ≤ 30
0 ≤ x11 ≤ 4, 0 ≤ x12 ≤ 8, 0 ≤ x13 ≤ 22,
1.9. EXEMPLES DE PROBLÈMES MODÉLISÉS PAR UN PROGRAMME LINÉAIRE33

0 ≤ x21 ≤ 8, 0 ≤ x22 ≤ 10, 0 ≤ x23 ≤ 20,


0 ≤ x31 ≤ 3, 0 ≤ x32 ≤ 8, 0 ≤ x33 ≤ 18,
Solution (solveur)

Fes-Marrakech Marrakech-Agadir Fes-Agadir


tarif1 4 8 3
tarif2 8 10 8
tarif3 7 1 0
zmax = 9640DH
Problème 8. Notons x1 , ...x7 les quantités (dans l’ordre du tableau) de chacun
des 7 produits en 100 g. Alors le programme s’écrit :


 min 1, 6x1 + 2, 6x2 + 12x3 + 1, 8x4 + 1, 2x5 + 0, 5x6 + 0, 4x7
2x3 + 20x4 + 50x5 + 14x6 + 9x7 ≥ 200




 6x1 + 9x2 + 25x3 + 0, 4x4 + 0, 4x5 ≥ 90


22x1 + 22x2 + 20x3 + 10x4 + 5x5 + 2x6 + x7 ≥ 50
10x4 + 5x5 + 2x6 + x7 − (22x1 + 22x2 + 20x3 ) ≥ 0




140x1 + 170x2 + 300x3 + 120x4 + 140x5 + 70x6 + 40x7 ≥ 1200




x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x5 ≥ 0, x6 ≥ 0, x7 ≥ 0


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

sous les contraintes :


100
X
xij = 1, j = 1, ...., 90
i=1
90
X
xij ≤ 1, i = 1, ..., 100
j=1

Problème 10. Soit x1 le nombre d’employés qui commencent le travail lundi et


se reposent samedi et dimanche, x2 le nombre d’employés qui commencent mardi
et se reposent dimanche et lundi, ..., x7 le nombre d’employés qui commencent
dimanche et se reposent vendredi et samedi. Alors on doit minimiser :
P7
z = i=1 xi
sous les contraintes :
x1 + x4 + x5 + x6 + x7 ≥ 14 (la somme de ceux qui travaillent lundi est ≥ à 14)
x1 + x2 + x5 + x6 + x7 ≥ 13 (mardi)
x1 + x2 + x3 + x6 + x7 ≥ 15 (mercredi)
x1 + x2 + x3 + x4 + x7 ≥ 16 (jeudi)
x1 + x2 + x3 + x4 + x5 ≥ 19 (vendredi)
x2 + x3 + x4 + x5 + x6 ≥ 18 (samedi)
x3 + x4 + x5 + x6 + x7 ≥ 11 (dimanche)
xi ≥ 0, i = 1, ..., 7
34 CHAPITRE 1. PROGRAMMATION LINÉAIRE ET APPLICATIONS

Solution par solveur :


minimum d’employés zmin = 22
obtenu pour :
- Solution 1 : x1 = 4, x2 = 7 x3 = 1, x4 = 7, x5 = 0, x6 = 3, x7 = 0
et dans ce cas le nombre de présents par jour est :
lundi 14, mardi 14, mercredi 15, jeudi 19, vendredi 19, samedi 18, dimanche 11.
ou bien
- Solution 2 :x1 = 4, x2 = 7 x3 = 1, x4 = 4, x5 = 3, x6 = 3, x7 = 0
et dans ce cas le nombre de présents par jour est :
lundi 14, mardi 17, mercredi 15, jeudi 16, vendredi 19, samedi 18, dimanche 11.

Vous aimerez peut-être aussi