Vous êtes sur la page 1sur 38

UNIVERSITE MOHAMMED PREMIER

FACULTE PLURIDISCIPLINAIRE DE NADOR

DEPARTEMENT DE SCIENCES ECONOMIQUES ET DE GESTION

Recherche opérationnelle
(Programmation linéaire)
Cours & Exercices

Semestre S6

Année universitaire
2019/2020
Modélisation

1. Introduction

La programmation linéaire est l’une des plus importantes techniques


d’optimisation utilisées en recherche opérationnelle.

L’objectif de programmation linéaire est de déterminer l’affectation optimale


de ressources rares entre des activités ou produits concurrents. Les situations
économiques demandent souvent qu’on optimise une fonction sous plusieurs
contraintes prenant la forme d’inégalités.

2. Formulation d’un problème de maximisation

2.1. Enoncé du problème

Une entreprise fabrique deux produits A et B, en utilisant une machine m et


deux matières premières p et q. On dispose chaque jour de 8 heures de m, de 10 kg
de p et de 36 kg de q.

On suppose que :

— la production d’une unité de A nécessite 2 kg de p et 9 kg de q, et utilise la


machine m durant 1 heure ;

— la production d’une unité de B nécessite 2 kg de p et 4 kg de q, et utilise la


machine m durant 2 heure ;

— les profits réalisés sont de 50 dh par unité de A et 60 dh par unité de B.

L’objectif que poursuit l’entreprise est de maximiser le profit qu’elle pourra


tirer, par jour, de ces 2 produits en utilisant au mieux ses ressources.

Le tableau suivant résume les données afférentes à ce problème de production

1
2.2. La construction d’un modèle linéaire (Modélisation)

Quelles sont les informations dont doit disposer le directeur de l’entreprise


pour considérer que son problème est résolu ? Il suffit de connaître la quantité du
produit A et la quantité du produit B à fabriquer quotidiennement, n’est-ce pas ?

La formulation d’un problème d’optimisation comporte toujours les trois étapes


suivantes :
1. choix des variables du modèle, (Variables de décision)
2. formulation de l’objectif, (Fonction objectif)
3. formulation des contraintes, (Contraintes fonctionnelles et contraintes de positivité)

Variables de décision

Agissons comme si ces quantités nous étaient connues et dénotons-les par :

x1 = la quantité du produit A à produire

x2 = la quantité du produit B à produire

Les variables x1 et x2 sont dites variables de décision.

Fonction objectif

Quel profit l’entreprise retirera-t-elle de la vente de ces deux produits ? Il


s’agit d’additionner les bénéfices à tirer de chacun des 2 produits :

— pour le produit A, elle retire 50 dh par unité et en fabrique x1 unités ; cette


production lui rapporte donc un profit de (50 x1) dh;

— de même, la quantité x2 du produit B lui permet de faire un profit de (60 x2) dh.

Le profit total à tirer des deux produits s’élève donc à :

(50 x1 + 60 x2) dh

Nous dénoterons ce profit total par z et laisserons implicite l’unité monétaire :

z = 50 x1 + 60 x2

Nous cherchons évidemment à rendre z aussi grand que possible en donnant à


x1 et x2 des valeurs appropriées.

La grandeur z est une fonction qui, à chaque plan de production (une quantité
de A, une quantité de B), associe le nombre de dirhams que l’entreprise retirerait

2
comme profit si elle adoptait ce plan. Cette fonction z, qui traduit l’objectif de
notre problème, s’appelle fonction objectif ou fonction économique. Et, comme
nous cherchons à rendre z aussi grand que possible, nous écrivons :

Maximiser z où z = 50 x1 + 60 x2

ce que généralement l’on convient d’abréger comme suit :

Max z = 50 x1 + 60 x2

S’il ne s’agissait pour l’entreprise que de maximiser z, il suffirait de laisser


augmenter x1 ou x2 pour que z prenne une valeur aussi grande qu’elle le souhaite.

Mais il y a bien sûr des empêchements naturels, appelés contraintes, qui


freinent le rêve d’un profit infini. Prenons en considération tour à tour chacune
des contraintes.

Contraintes

Contrainte relative à la machine m : Le temps d’utilisation de la machine m pour


fabriquer les produits A et B ne peut excéder les 8 heures disponibles :

Temps d’utilisation de m ≤ 8.

Or, ce temps utilisé est la somme des heures consacrées à chacun des types de
produits. Pour le produit A, le temps nécessaire à la fabrication de la quantité x1 se
calcule ainsi :

1 heure / (unité de A) × x1 (unité de A) = x1 heures

Pour le produit B, on procède de façon analogue :

2 heure / (unité de B) × x2 (unité de B) = 2x2 heures

La contrainte relative à la machine m s’écrit donc :

x1 + 2x2 ≤ 8 (m)

On emploie le signe « ≤ », et non « = », car il n’est pas obligatoire que toutes les
heures disponibles soient utilisées pour la fabrication des produits A et B, bien
qu’il ne soit pas interdit qu’il en soit ainsi.

Contraintes relatives aux matières premières : En s’inspirant de la contrainte


relative à la machine, ces contraintes s’écrivent tout naturellement :

3
2x1 + 2x2 ≤ 10 (p)

9x1 + 4x2 ≤ 36 (q)

Contraintes de positivité

Elles assurent que la solution ne comporte pas des valeurs négatives


(inacceptables).

x1 , x2 ≥ 0.

Le modèle se résume ainsi :

2.3. Variables d’écart

Afin de ramener les contraintes à des égalités (qui sont plus faciles à traiter que
les inégalités), on introduit des variables d’écart. Ces variables seront toujours,
comme les variables de décision x1 et x2, positives ou nulles.

Après l’ajout des variables d’écart x3, x4 et x5 relatives aux contraintes (m), (p) et
(q), nous obtenons la formulation :

La variable d’écart d’une contrainte représente la quantité disponible non


utilisée. C’est l’écart entre la disponibilité et le besoin.

4
2.4. Généralisation :

Forme canonique d’un programme linéaire (MAXIMISATION)

Forme canonique d’un programme linéaire (MINIMISATION)

5
Méthode graphique
Dans cette section nous présentons une technique de résolution de programme
linéaire à deux variables x1 et x2. Dans ce cas on peut utiliser une représentation
graphique du programme linéaire. La représentation graphique sera utile pour
acquérir une compréhension intuitive des principes de base de la programmation
linéaire.

1. Enoncé du problème
Une entreprise de fabrication de chassis envisage la production de deux nouveaux
modèles au moyen des capacités de ses trois ateliers. Il s’agit respectivement d’un
chassis en aluminium et d’un chassis en bois. Le premier produit nécessite le
passage dans le premier atelier pour fabriquer le cadre en aluminium et dans le
troisième atelier où le verre est monté sur le chassis. Tandis que le second produit
nécessite le passage dans le deuxième atelier pour fabriquer le cadre en bois et
dans le troisième atelier où le verre est monté sur le chassis. Les profits unitaires,
les temps de fabrication de chacun des produits dans chacun des ateliers ainsi que
les capacités hebdomadaires de ces ateliers sont donnés au tableau suivant :

La question qui se pose est la suivante : "Combien faut-il produire de chassis de


chaque type par semaine afin d’obtenir un profit maximal ?"

2. Formulation du problème

Les variables de décision seront :


x1 = nombre de chassis de type 1 à produire par semaine.
x2 = nombre de chassis de type 2 à produire par semaine.
Le problème de planification de la production de chassis se traduit par le modèle
linéaire suivant :

6
3. Construction de la région réalisable

A chaque couple de valeurs des variables de décision x1 et x2 on associe un point


(x1; x2) du plan R2 : le point (x1; x2) s’interprète comme la proposition d’un plan de
production indiquant le nombre de chassis à fabriquer par semaine. Généralement,
on parle indifféremment du point (x1; x2) ou du plan de production (x1; x2) ou
encore de la solution (x1; x2).

On appelle région réalisable, l’ensemble des valeurs de variables de décision qui satisfont
toutes les contraintes.

Dans le cas de l’exemple, c’est l’ensemble des points (x1, x2) satisfaisant les
inégalités suivantes :

Graphiquement une inégalité telle que 3x1 +2x2 ≤ 18 correspond à un demi-plan


limité par la droite obtenue en prenant l’inéquation à l’égalité (3x1+2x2 = 18).

La région réalisable est donc l’intersection des cinq demi-plans correspondant aux cinq
inégalités.

Tout d’abord, les contraintes x1 ≥0 et x2 ≥ 0 signifient que tous les points (x1; x2)
représentant des solutions acceptables doivent être dans le premier quadrant, soit
à droite de l’axe Ox2 et au-dessus de l’axe Ox1.

La contrainte relative à l’atelier 1 : La droite associée à cette contrainte est la


droite d’équation :
x1 = 4 (1)
La représentation graphique de l’équation (1) s’obtient en traçant la droite
verticale qui passe par le point (4; 0). La contrainte (A1) est satisfaite pour les
points du plan du même côté de la droite (1) que l’origine du repère.

7
Puisque toutes les contraintes du modèle linéaire sont de la même forme, il suffit
de les prendre en considération tour à tour, en procédant, pour chaque contrainte
comme suit :
— choisir 2 points de la droite associée. Afin de faciliter les calculs, on peut choisir
les deux points ayant chacun une coordonnée nulle. Puis tracer cette droite ;
— déterminer de quel côté de la droite associée la contrainte est satisfaite. Pour
repérer rapidement le bon côté, il suffit de regarder si le point (0; 0) est du bon
côté ;
— tracer une flèche pointant vers ce côté.

Illustrons à nouveau cette procédure à l’aide de la contrainte (A2). La droite


associée à cette contrainte est la droite d’équation :
x2 = 6 (2)
— les points (0; 6) et (8; 6) appartiennent à la droite (2) associée à (A2) ;
— le point (0; 0) vérifie cette dernière et les points réalisables selon la seule
contrainte (A2) se trouvent sous la droite (2) ;
— la flèche pointant vers le bon côté est placée.
Le résultat graphique de la prise en considération des contraintes (A1) et (A2) est
illustré sur la figure suivante :

8
La prise en considération graphique de la contrainte (A3) se traduit par le tracé de
la droite d’équation :
3x1 + 2x2 = 18 (3)
et par l’exclusion des points situés au-dessus de cette droite.

4. Recherche d’une solution optimale

Proposition :
La valeur optimale de la fonction objectif d’un problème de programmation linéaire est
obtenue à l’un des sommets de la région réalisable si cet ensemble existe et est borné.

La région réalisable que nous venons de construire ne détermine pas une solution,
mais tout un domaine contenant un nombre infini de points. Il va falloir repérer
un plan de production optimal, c’est-à-dire un point (x1*, x2*) vérifiant toutes les
contraintes et permettant à z de prendre sa plus grande valeur sur la région
réalisable.

9
Pour cela, on va considérer des valeurs successives de la fonction économique :
z=p
Ce qui correspond graphiquement à des droites parallèles
300x1 + 500x2 = p
Les points d’une de ces droites sont donc le lieu de tous les points donnant la
même valeur du profit (d’où le nom de droites d’isoprofits).
Tracer une première droite d’isoprofit permet d’obtenir une illustration de la
pente de z. En traçant une deuxième permet de déterminer la direction selon
laquelle la valeur de z augmente. Ainsi, en augmentant petit à petit la valeur de p
dans l’équation (300x1 + 500x2 = p), on obtient des droites parallèles, chacune plus
loin de l’origine que les précédentes.

Comme on cherche ici à maximiser la fonction économique z, on détermine une


solution optimale en cherchant la droite d’isoprofit la plus élevée qui comporte au
moins un point de la région réalisable.

Ici, il n’y a qu’une seule solution optimale qu’est le point


10
(x1*, x2*) = (2, 6)
Ce point se trouve à l’intersection des droites (2) et (3). On utilise donc à plein les
capacités disponibles des ateliers 2 et 3. Par contre, pour cette solution optimale,
les capacités disponibles de l’atelier 1 seront plus que suffisantes. Au point
optimal, la fonction économique prend la valeur 3600 :
z* = (300 ×2) + (500 × 6) = 3600

Remarques

La région réalisable est un ensemble convexe, elle peut être soit :

 Vide
 Borné (une solution optimale existe toujours)
 Non borné (une solution optimale peut exister comme elle ne peut pas
exister)

La solution optimale d’un problème de programmation linéaire lorsqu’elle existe


est constituée
 d’un seul point (un sommet de la région réalisable) ou
 d’une infinité de points (un segment d’extrémités deux sommets adjacents
de la région réalisable)

Lorsque la région réalisable n’est pas borné la proposition précédente n’offre pas
de garanties quant à l’existence d’une solution optimale.

11
12
Algorithme du simplexe
Méthode des tableaux

Introduction
Lorsqu’on considère un programme linéaire ayant plus de 2 variables, la
résolution graphique devient difficile, mais les propriétés restent les mêmes.
Si la fonction objectif peut avoir une valeur optimale dans la région réalisable,
celle-ci se trouve en un des sommets de la région réalisable. Pour atteindre la
valeur optimale, seuls les sommets doivent donc être examinés.
On pourrait donc en déduire qu’il suffit de calculer la valeur de la fonction
objectif à chaque sommet et de choisir finalement la plus grande de ces valeurs;
mais cette approche est impraticable pour les grands programmes.
Une procédure "intelligente" est donc nécessaire : l’algorithme du simplexe
utilise une procédure itérative qui permet de trouver la valeur optimale ou, à
défaut, met en évidence que la région réalisable est vide.

a) Forme canonique d'un Programme Linéaire

Max z = c1 x1 + c2 x2 + .......... +cn xn


a11 x1 + a12 x2 + .......... + a1n xn ≤ b1
a21 x1 + a22 x2 + .......... + a2n xn ≤ b2
....................................................................
am1 x1 + am2 x2 + .......... + amn xn ≤ bm
x1 ≥0, x2 ≥ 0, ... , xn ≥0

b) Forme standard d'un Programme Linéaire

On transforme les inégalités des contraintes en égalités par introduction de


variables d'écart (variables supplémentaires positives ou nulles).
d'où la forme standard

Max z = c1 x1 + c2 x2 + .......... +cn xn


a11 x1 + a12 x2 + .......... + a1n xn + xn+1 = b1
a21 x1 + a22 x2 + .......... + a2n xn + xn+2 = b2
......................................................................................................
am1 x1 + am2 x2 + .......... + amn xn + xn+m = bm
x1 ≥0, x2 ≥ 0, ..., xn ≥ 0, xn+1 ≥ 0, xn+2 ≥ 0, …, xn+m ≥ 0

13
Cette forme standard du programme linéaire correspond à la forme matricielle
suivante :

Max z = c x
Ax=b
x≥0

avec A matrice (m ×(n+m) ) b vecteur (m×1)


c vecteur (1×(n+m)) x vecteur (1×(n+m))

a11 a12 .......... a1n 1 0 0


a21 a22 .......... a2n 0 1 0
A = . . . 0 .
. . . . .
. . . . 0
am1 am2 ......... amn 0 0 1

Définition :
Soit A une matrice (m × (n+m)) de rang m.
Une base est une matrice B(m × m) extraite de A dont le déterminant est non nul,
(inversible).

Soit B une base, alors en permutant les colonnes de A, on peut toujours mettre A
sous la forme :
A = (H B)
où H est la sous-matrice formée par les colonnes de A qui ne sont pas dans la
base.
De même on peut écrire x=( )
Ax = b
(H B) ( )=b
H +B =b
B-1H + B-1B = B-1b
= B-1b - B-1H

La solution de base relativement à B est = B-1b telle que xH =0.

14
On remarque que le système à résoudre possède m égalités et n + m inconnues.
Donc les valeurs de n variables peuvent être fixées arbitrairement, par exemple à
zéro. On dit qu’elles sont mises hors base.

Définition :
On appelle variables hors base les n variables (parmi n+m variables) fixées
à zéros.
Les m variables restantes sont appelées variables de base.

Définition :
On appelle solution de base une solution où en ayant choisi n variables hors
base (nulles), on obtient une solution unique en résolvant les m contraintes
d’égalité obtenues en ajoutant les variables d’écart.

Notons xB les variables de base correspondant aux m variables positives ou nulles


et xH les variables hors base, correspondant aux n variables nulles.

Définition : On appelle solution de base réalisable une solution de base qui,


en plus, vérifie les contraintes de positivité (xB ≥ 0).

Propriété :

Le programme linéaire étant mis sous forme standard, chaque sommet de la


région réalisable correspond à une et une seule solution de base réalisable
et inversement.

15
Méthode des tableaux

Nous décrirons le déroulement de la méthode du simplexe en l’appliquant au


modèle de fabrication des chassis (FC) introduit au chapitre précédent.

Le programme linéaire sous forme canonique

On introduit les variables d’écart, on obtient alors le programme linéaire sous


forme standard

On peut vérifier cette propriété sur l’exemple de fabrication des chassis dont la
représentation graphique est donnée à la figure suivante.
A la figure, les sommets (0; 0), (0; 6), (2; 6), (4; 3), (4; 0) correspondent à des
solutions de base réalisables tandis que les points (0; 9), (4; 6) et (6; 0)
correspondent à des solutions de base non réalisables, comme le montre le
tableau suivant

16
Tableau initial

On construit un tableau initial du simplexe, qui se compose du vecteur b, de la


matrice A, et d’une ligne [c , 0] situés sous les précédents où 0 correspond à la
valeur de z à l’origine (lorsque x1 = x2 = 0) :

Variables
hors Base

Base x1 x2 x3 x4 x5 b
Variables
de Base x3 1 0 1 0 0 4

x4 0 2 0 1 0 12

x5 3 2 0 0 1 18

z 300 500 0 0 0 0

On a ajouté au-dessus du tableau le nom des variables pour voir à quelle variable
correspond chaque colonne du tableau.
Plusieurs caractéristiques d’un tableau simplexe sont à remarquer :
— Tout d’abord, on peut lire directement sur le tableau les valeurs des variables
de base. Si x1 = x2 = 0, on obtient x3 = 4, x4 = 12 et x5 = 18. Soit xB = b.
— Dans la dernière ligne, on trouve un coefficient égal à 0 pour chaque variable
de base (la fonction z est exprimée en fonction des seuls variables hors base).
— La matrice carrée correspondant aux variables de base est la matrice identité.
— Enfin, le dérnier coefficient de la dernière ligne donne l’opposé de la valeur
de z.

17
Tableau 2 :

Pivot et changement de base


Pour augmenter la valeur de z, on examine une nouvelle solution de base. Pour
l’obtenir, on doit introduire une nouvelle variable dans la base et exclure une des
variables qui y figurait précédemment. On appelle changement de base le
processus qui consiste à choisir la variable entrante et la variable sortante.

Choix de la variable entrante


Dans la dernière ligne, le coefficient dont la valeur est la plus élevée détermine la
variable à entrer dans la base. Donc la variable entrante est x2. On indique ceci
dans le tableau en colorant la colonne de la variable entrante que l’on appelle la
colonne pivot.

Choix de la variable sortante


Le choix la variable sortante revient à calculer le minimum du rapport du
coefficient du membre de droite de chaque contrainte sur le coefficient
correspondant de la colonne pivot lorsque ce dernier est strictement positif :

Dans le cas où le coefficient dans la colonne entrante est négatif ou nul, la ligne
n’entre pas en compte dans le calcul du minimum.

La variable sortante est alors la variable de base dont la valeur se lit dans la ligne

18
où le minimum se produit : ici, il s’agit de la deuxième ligne et donc de la variable
x4. On encadre alors la ligne où le minimum se produit. Cette ligne reçoit le nom
de ligne pivot :

Pivotage et tableaux simplexe


Le pivotage est le processus qui consiste à amener la colonne de la variable
sortante en lieu et place de la variable entrante. Le pivot nous permettra de
transformer le tableau actuel en un deuxième tableau correspondant à la nouvelle
base. Ceci peut être fait par trois types d’opérations :

1. Transformation de la ligne pivot : pour obtenir la ligne du pivot transformée,


il suffit de diviser tous ses éléments par le pivot.

19
2. Transformation de la colonne pivot : après avoir ramené par division le
pivot à 1, toutes les éléments situé au-dessus et au-dessous du pivot deviennent
zéro.

3. Transformation des autres cases du tableau : pour obtenir la transformée


des autres nombres, il suffit d’appliquer la règle dite du rectangle :

a’ est la valeur modifiée du coefficient a qui est considéré.


b est l’élément situé sur la même ligne que a, mais dans la colonne du pivot.
c est l’élément situé dans la même colonne que a, mais sur la ligne du pivot.

Dans le tableau à modifier, le pivot et les coefficients a, b et c forment les coins


d’un rectangle. D’où le nom de la méthode.

Remarquons que la règle du rectangle implique :


si une ligne contient un 0 à l’intersection avec la colonne du pivot, cette ligne ne
sera pas modifiée.
si une colonne contient un 0 à l’intersection avec la ligne du pivot, cette colonne
ne sera pas modifiée.

20
En appliquant ces opérations au tableau initial, on obtient le deuxième tableau :

On peut lire directement sur ce tableau la deuxième solution de base réalisable.


En posant x1 = x4 = 0, nous conservons une matrice identité qui donne
x2 = 6, x3 =4 et x5 = 6.
Le premier coefficient de la dernière ligne (ici, -3000) donne l’opposé de la valeur
z dans la deuxième solution de base réalisable :
Deuxième solution de base : xB2 = (0; 6; 4; 0; 6)
Valeur de la fonction z en x : z2 = 3000
B2

Tableau 3

Le maximum de la fonction z est atteint lorsqu’il n’y a plus de coefficients positifs


dans la dernière ligne. On poursuit les changements de base et les pivotages,
conformément aux règles exposées ci-dessus, jusqu’à ce qu’on y parvienne.

– Comme il ne reste plus comme coefficient positif (dans la dernière ligne) que
300, on introduit x1 dans la base. La colonne de x1 devient la colonne pivot.
– La division de la colonne des seconds membres par la colonne pivot révèle que
le plus faible rapport correspond à la ligne x5. C’est x5 qui quitte la base. Alors le
nombre 3 devient le nouveau pivot.

21
Le dernier pas de la deuxième itération consiste à déterminer la nouvelle solution
de base au moyen du pivotage :

1. Transformation de la ligne et la colonne pivot : Divisons la ligne pivot par 3,


puis annuler tous les éléments de la colonne pivot sauf le pivot qui est remplacé
par 1.

22
2. Transformation des autres cases du tableau : Nous utilisons la règle du
rectangle pour transformer le reste des coefficients. Le résultat est le suivant :

On peut lire directement sur ce tableau la troisième solution de base réalisable et


la valeur de la fonction objectif z pour cette solution :

Troisième solution de base : xB3 = (2; 6; 2; 0; 0)


Valeur de la fonction z en xB3 : z3 = 3600

Comme il n’y a plus de coefficients positifs sur la dernière ligne, la solution


courante est optimale. Ainsi :

(x1* , x2*) = (2 , 6) et z* = 3600

Le chemin suivi par la méthode des tableaux est illustré par la figure suivante.

23
Résumé

Critère de sélection de la variable entrant dans la base:


On sélectionne la variable hors base (HB) ayant le plus grand coefficient positif
dans la ligne z.
 la fonction objectif z est exprimée en fonction des seules variables HB .
 Si tous les coefficients dans la ligne de z sont négatifs ou nuls, alors stop.
Le tableau courant décrit une solution optimale.

Critère de sélection de la variable sortant de la base:


On sélectionne la variable dans la Base ayant le plus petit coefficient positif dans
la colonne R.
 R : est la colonne obtenue en faisant le rapport membre à membre
de la colonne b et de la colonne de la variable entrant dans la base.

Pivotage et Tableau simplexe


 Pivotage consiste à passer d’un point extrême à un point extrême voisin en
longeant une arête.
 On appelle pivot l'intersection de la colonne de la variable entrante et la
ligne de la variable sortante.

Pour obtenir le tableau, on applique les règles suivantes:


- Le pivot est égal à 1
- Les coefficients de la ligne du pivot sont divisés par le pivot
- Les coefficients de la colonne du pivot sont nuls
- Les autres coefficients sont obtenus par la règle du rectangle

La règle du rectangle :

×
= −
a’ est la valeur modifiée du coefficient a qui est considéré.
b est l’élément situé sur la même ligne que a, mais dans la colonne du pivot.
c est l’élément situé dans la même colonne que a, mais sur la ligne du pivot.

24
Dualité
1. Introduction

Exemple : Problème de production.

Une entreprise fabrique deux produits P1 et P2. La fabrication de chaque produit


nécessite trois ressources A, B et C disponibles en quantités données.
L'entreprise cherche à maximiser le bénéfice total provenant de la vente des
deux produits.
Produit P1 Produit P2 Disponibilité
Ressource A 3 9 81
Ressource B 4 5 55
Ressource C 2 1 20
Bénéfice 6 4

Le programme linéaire correspondant est

Supposons à présent qu'un acheteur se présente pour acheter toutes les


ressources de l'entreprise. Il propose à l'entreprise les prix unitaires y1, y2, y3
pour chacune des ressources.

Quels prix unitaires y1, y2, et y3, l'acheteur doit-il proposer à l'entreprise en question
pour qu'elle accepte de vendre toutes ses ressources ?

25
 L'entreprise acceptera de lui vendre toutes ses ressources uniquement si
elle obtient, pour chaque produit, un prix de vente supérieur ou égal au
profit qu'elle ferait en vendant ses produits.

Pour le produit P1

 La valeur du paquet des RESSOURCES qui entre dans la production d’une


unité du produit P1 ?

La production d’une unité du produit P1 nécessite :

3 unités de la ressource A,
4 unités de la ressource B,
2 unités de la ressource C.
L’acheteur propose :
y1 pour acheter 1 unité de A,
y2 pour acheter 1 unité de B,
y3 pour acheter 1 unité de C.

La valeur de ce paquet des ressources consommées par le produit P1 est donc

 Le bénéfice provenant d’une unité du PRODUIT P1 ?

Ce bénéfice est : 6

L’entreprise n’acceptera pas de céder ce paquet de ressources pour moins de 6.


L’acheteur devra donc fixer les prix offerts pour les ressources de l’entreprise de
façon à ce que

Pour le produit P2
Similairement à ce qui précède, on écrit

Il raisonnable de penser que

26
 De son coté, l'acheteur cherche à minimiser le prix total d’achat des
ressources A (81), B (55), C (20).

Finalement, pour déterminer les prix unitaires minimaux qu’il proposera à


l’entreprise, l’acheteur devrait résoudre le programme linéaire suivant :

Les problèmes (P) et (D) utilisent en fait exactement les mêmes données
numériques. On peut les lire directement à partir du tableau ci-dessous;
(P) correspond à une lecture ligne par ligne, (D) à une lecture colonne par
colonne.

PRIMAL (Max)

x1 x2 b
y1 3 9 ≤ 81

y2 4 5 ≤ 55
DUAL (Min)
y3 2 1 ≤ 20
≥ ≥
c 6 4

La dualité associe à tout problème linéaire un autre problème linéaire qui est
appelé problème dual du problème initial; par opposition le problème initial est
appelé problème primal.

27
Considérons un problème de maximisation sous forme canonique :

Le problème dual est le suivant :

Règles de dualisation

Primal (dual) Dual (Primal)


Max ◄--► Min
A matrice des contraintes (m, n) ◄--► tAmatrice des contraintes (n, m)
Second membre des contraintes ◄--► Coefficient de la fonction objectif
Coefficient de la fonction objectif ◄--► Second membre des contraintes
Nombre de contraintes == Nombre de variables de décision
Nombre de variables de décision == Nombre de contraintes

Dualisation de programme linéaire sous forme canonique

Max z ◄--► Min w


variable xj ≥ 0 ◄--► contrainte j de type ≥
contrainte i de type ≤ ◄--► variable yi ≥ 0

Remarque :
 Le dual d’un problème linéaire de minimisation est un problème linéaire de
maximisation.
 Le dual du problème dual est le problème primal.

28
Remarque :
Le programme linéaire initial doit être mis sous forme canonique avant de
déterminer son dual.

2. Propriétés de la dualité

 Dualité forte
le primal possède une solution optimale (x1*, . . ., xn*)
si et seulement si
le dual possède une solution optimale (y1*, . . ., ym*).
Dans ce cas, les fonctions objectifs z et w ont la même valeur optimale,

 Théorème des écarts complémentaires


Soit (x1*, . . . , xn*) une solution réalisable d’un problème primale.
(x1*, . . . , xn*) est optimale
si et seulement si
il existe (y1* , . . . , ym*) tel que
(y1* , . . . , ym*) est une solution réalisable du problème duale,

Pour tout i=1, …, m


et
Pour tout j=1, …, n

Autrement dit :
La ième contrainte primale n’est pas saturée ⟹ la ième variable (de décision) duale est nulle.
La jème variable (de décision) primale est non nulle ⟹ la jème contrainte duale est saturée.

29
Exemple :
Appliquons le TEC au problème linéaire suivant :

Soit la solution primale


Cette solution est elle optimale ?

Le problème linéaire dual de (P) est :

Cherchons y1, y2 et y3 vérifiant le théorème des écarts complémentaires.


S’ils existent alors la solution primale proposée est optimale.
Sinon alors la solution primale proposée n’est pas optimale.

1) On a
La 2ème contrainte primale n’est pas saturée ⟹ la 2ème variable duale est nulle.
⟹ y2 = 0

La 3ème contrainte primale n’est pas saturée ⟹ la 3ème variable duale est nulle.
⟹ y3=0
2) On a
La 2ème variable primale n’est pas nulle ⟹ la 2ème contrainte duale est saturée.
⟹ 3y1 + y2 + 4y3 = 25
⟹ 3y1 = 25 car y2 = y3 = 0
⟹ y1 = 25/3
3) Cette solution y2 =y3 = 0, y1 = 25/3 ne satisfait pas la 1ère contrainte duale
y1 + y2 + 7y3 ≥15
Et par suite elle n’est pas réalisable.
4) La solution primale précédente x1=0 , x2 = 32 n’est donc pas optimale .

30
Exercice
vérifier que (x1 , x2, x3, x4 )= (3,0,7,0) est une solution réalisable optimale en appliquant
le théorème des écarts complémentaires.

Max z =

Résolution du problème dual


en utilisant le tableau final du problème primal

Résoudre (implicitement) le dual par la méthode du simplexe (mais en travaillant


sur le tableau primal !)

Reprenons l’exemple précédent

Le programme sous forme standard

La première solution de base réalisable est


x1 = x2 = 0 (variables hors-base) et s1 = 81, s2 = 55, s3 = 20 (variables de base).
La valeur de la fonction objectif est z = 0.

31
Base x1 x2 s1 s2 s3 b

s1 3 9 1 0 0 81

s2 4 5 0 1 0 55

s3 2 1 0 0 1 20

z 6 4 0 0 0 0

Variable entrante : max (6, 4)= 6 correspond à la variable hors base x1.
Donc x1 va entrer dans la base.
81 55 20 20
Variable sortante : min ( , , )= correspond à la variable de base s3 .
3 4 2 2
Donc s3 va sortir de la base

On obtient donc le tableau suivant

Base x1 x2 s1 s2 s3 b

15 3
s1 0 1 0 − 51
2 2

s2 0 3 0 1 -2 15

1 1
x1 1 0 0 10
2 2

z 0 1 0 0 -3 -60

Variable entrante : x2
51 15 10 15
Variable sortante : min ( , , )= correspond à la variable de base s2.
15/2 3 1/2 3
Donc s2 va sortir de la base

32
On obtient donc le tableau suivant

Base x1 x2 s1 s2 s3 b

5 7 27
s1 0 0 1 −
2 2 2
1 2
X2 0 1 0 − 5
3 3
1 5 15
x1 1 0 0 −
6 6 2
1 7
z 0 0 0 − − -65
3 3

Tous les nouveaux coefficients de la fonction objectif z (valeurs marginales) sont


négatifs. Donc STOP.
La solution de cette base est optimale
15 27
x1*= x2*=5 s1*=
2 2
s2*=0 s 3*=0
La valeur optimale (maximale) de z est 65.

Le tableau optimal contient non seulement la solution (optimale) du problème


initial mais également celle de son dual.

Les variables de décision du dual sont associées aux variables d’écart du primal.
Réciproquement,
les variables d’écart du dual sont associées aux variables de décision du primal.

 Les fonctions objectifs z et w ont la même valeur optimale

 la valeur marginale d'une variable dans un programme est égale à l'opposé


de la valeur optimale de la variable associée dans l'autre programme
et réciproquement.

(la valeur marginale est le coefficient apparaissant dans l’expression de la fonction


objectif obtenue lors du dernier tableau Simplexe).

33
PRIMAL
z = 65 x1 x2 s1 s2 s3

27
valeurs optimales 5 0 0
2
1 7
valeurs marginales 0 0 0 − −
3 3

DUAL w = 65 t1 t2 y1 y2 y3

1 7
valeurs optimales 0 0 0
3 3
15 27
valeurs marginales − -5 − 0 0
2 2

Le programme dual :

avec sa forme standard

34
EXERCICES

35
UNIVERSITÉ MOHAMMED PREMIER ANNÉE UNIVERSITAIRE : 2019-2020
FACULTÉ PLURIDISCIPLINAIRE DE NADOR SEMESTRE 6
DÉPARTEMENT : ÉCONOMIE-GESTION RECHERCHE OPÉRATIONNELLE

PROGRAMMATION LINÉAIRE : EXERCICES

Exercice 1 : On considère le programme linéaire suivant :

M a x z = 4x1 + 3x2

2x1 + x2 ≤ 8





 x1 + 2x2 ≤ 7

(P )


 x2 ≤ 3



x1 ≥ 0, x2 ≥ 0

1. Tracer les contraintes et déterminer la région réalisable.


2. Déterminer la solution optimale et la valeur optimale de z .

Exercice 2 : Deux usines produisent du papier de trois qualités différentes. Elles ont des commandes
pour chaque type de papier : la compagnie qui gère les usines a des contrats pour fournir 16 tonnes
de papier de qualité inférieure, 5 tonnes de papier de qualité moyenne, et 20 tonnes de papier de
qualité supérieure.
Il coûte 10 000 DH par jour pour faire fonctionner l’usine A et 20 000 DH par jour pour l’usine B.
L’usine A produit 8 tonnes de papier de qualité inférieure, 1 tonne de papier de qualité moyenne
et 2 tonnes de papier de qualité supérieure par jour. L’usine B produit 2 tonnes de papier de qualité
inférieure, 1 tonne de papier de qualité moyenne et 7 tonnes de papier de qualité supérieure par
jour.
On cherche combien de jours chaque usine doit fonctionner afin de satisfaire la demande de la
façon la plus économique.
1. Modéliser le problème ci-dessus sous forme d’un programme linéaire.
2. Résoudre graphiquement ce programme.

Exercice 3 : Une entreprise fabrique trois produits P1 , P2 et P3 . Pour réaliser ce projet, elle utilise trois
centres de fabrication. Les temps opératoires, en heure par unité, à chaque centre de fabrication
sont les suivants :
P1 P2 P3 Temps disponible
Centre I 4 2 4 80 heures
Centre I 2 2 3 50 heures
Centre I 1 3 3 40 heures

La contribution unitaire de chaque produit au bénéfice est la suivante : 50 DHS pour P1 , 30 DHS
pour P2 , 40 DHS pour P3 .
1. Déterminer la fonction économique et les contraintes.
2. Donner la forme canonique du programme Linéaire régissant le problème.
3. Écrire ce programme linéaire sous forme standard.
4. Résoudre ce programme par la méthode du Simplexe (Tableaux).
5. Le centre II est-il pleinement utilisé ?
Exercice 4 : On considère le programme linéaire suivant

M a x z = 30x1 + 50x2 + 80x3

x1 + x2 + x3 ≤ 200





 3x1 + 2x2 + 4x3 ≤ 400

(P )


 x1 + 2x2 ≤ 300



x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
 x1  € 0 Š
1. Vérifier que la solution x2
x3
= 150 est réalisable.
25
2. Écrire (D) le programme dual de (P ). € 0 Š
3. En utilisant le théorème des écarts complémentaires, montrer que la solution 150 est optimale
25
pour le programme (P ).

Exercice 5 . On considère le programme linéaire suivant

M i n z = 96x1 + 40x2 + 238x3

x1 + x2 + 7x3 ≥ 15




(P ) 3x1 + x2 + 4x3 ≥ 25


x1 ≥ 0, x2 ≥ 0, x3 ≥ 0

1. Écrire le programme dual de (P).  x1  € 5 Š


2. En utilisant le théorème des écarts complémentaires, vérifier que la solution x2
x3
= 10 est
0
optimale pour le programme (P ).

Exercice 6 : On considère le programme linéaire suivant

M a x z = 60x1 + 20x2 + 40x3

4x1 + 2x2 + x3 ≤ 6000






(P ) 2x1 + 12 x2 + 3x3 ≤ 4000


x1 ≥ 0, x2 ≥ 0, x3 ≥ 0

1. Écrire le programme (P ) sous forme standard.


2. Résoudre le programme (P ) par la méthode du simplexe (tableaux).
3. Écrire (D ) le programme dual de (P ).
4. En utilisant le tableau final simplexe de (P ), déduire La solution optimale du dual (D ) et la valeur
optimale de la fonction objectif du dual (D ).
5. Résoudre graphiquement le programme dual (D ).