Vous êtes sur la page 1sur 120

1

ENSEIGNEMENT SUPERIEUR ET
UNIVERSITAIRE.
INSTITUT SUPERIEUR DE STATISTIQUE.
B.P. 2471
LUBUMBASHI.

COURS DE RECHERCHE OPERATIONNELLE


(Destiné aux étudiants de licence en informatique)

PAR
M. NKONGOLO MWAMBA GHISLAIN.
(Licencié en statistique)

ANNEE ACADEMIQUE 2020-2021.


2

OBJECTIFS DU COURS

OBJECTIF GLOBAL
A la fin de ce cours de recherche opérationnelle, l’étudiant de licence de gestion à qui
il est destiné doit être capable d’analyser et de représenter par des modèles
mathématiques appropriés des phénomènes économiques ou d’organisation et de leur
appliquer des techniques rationnelles d’optimisation en vue de définir les meilleures
décisions.
OBJECTIFS SPECIFIQUES
Pour atteindre l’objectif global ainsi défini, l’apprenant doit être capable :
1. En programmation linéaire
-) de définir et d’interpréter un programme linéaire ;
-) de traduire mathématiquement des problèmes d’organisation, après analyse de leur
fonctionnement, par des programmes linéaires correspondants ;
-) de résoudre des programmes linéaires à l’aides des méthodes de résolution enseignées ;
-) d’expliquer la paramétrisation de la fonction économique et de résoudre les programmes
paramétriques établis.
2. En théorie des graphes, l’étudiant doit être capable
-) de définir et de construire un graphe représentant un phénomène économique ou
d’organisation ;
-) de rechercher sur un graphe le chemin de valeur minimale ou maximale ;
-) d’appliquer les graphes et les techniques appropriées dans les problèmes
 de la recherche du flot maximal ;
 d’affectation optimale et de transport de coût minimal ;
-) de résoudre un problème d’ordonnancement par la recherche du chemin critique, des
intervalles de flottement des événements, des marges libres des opérations, etc.
3. En gestion de stocks, l’étudiant doit être capable
-) de définir un problème de gestion de stock et de le représenter graphiquement ;
-) de déterminer les rafales économiques à commander et les périodes de gestion dans les
modèles déterministes ;
-) de déterminer le stock optimal à réapprovisionner dans les modèles aléatoires de gestion de
stocks ;
3

-) d’appliquer les méthodes classiques et particulières de réapprovisionnement permettant de


déterminer les quantités à commander et les dates de passation de commande.
4

CONTENU DU COURS

CHAPITRE 0 : INTRODUCTION
1. Aperçu historique
2. Définition, problèmes et branches de la recherche opérationnelle

LA PROGRAMMATION LINEAIRE

CHAPITRE 1 : GENERALITES
1.1 Introduction
1.2 Expressions mathématiques des programmes linéaires
1.3 Variables d’écart
1.4 Définitions essentielles associées aux programmes linéaires

CHAPITRE 2 : QUELQUES PROBLEMES ECONOMIQUES DE


PROGRAMMATION LINEAIRE
2.1 Problème de nutrition
2.2 Problème de transport
2.3 Problème de production
2.4 Problème de placement
2.5 Problème d’importation
2.6 Problème de fabrication
Chapitre 3 : METHODES DE RESOLUTION DES PROGRAMMES LINEAIRES
3.0 Propriétés des programmes linéaires
3.1 Méthode graphique ou méthode de balayage
3.2 Algorithme de dénombrement ou méthode de sélection
3.3 Méthode de Simplexe ou Méthode de Dantzig
3.4 Méthode de la base artificielle ou Méthode « M »
3.5 La dualité
5

THEORIE DES GRAPHES

CHAPITRE 4 : DEFINITIONS ET CONCEPTS GENERAUX


4.1 Introduction
4.2 Notion de graphe
4.3 Chemin et circuit
4.4 Graphes complet, symétrique, antisymétrique et fortement connexe
4.5 Graphe partiel et sous-graphe
4.6 Fermeture transitive
4.7 Application inverse Γ-1
4.8 Concepts non orientés
CHAPITRE 5 : QUELQUES APPLICATIONS LIEES A LA STRUCTURE D’UN
GRAPHE
5.1 Recherche d’un chemin de longueur minimum
5.2 Algorithme pour trouver la fermeture transitive Γ(xi)
5.3 Recherche des circuits dans un graphe
CHAPITRE 6 : GRAPHES VALUES ET QUELQUES APPLICATIONS
ECONOMIQUES DE LA THEORIE DES GRAPHES
6.0 Généralités sur les graphes valués
6.1 Recherche de chemin de valeur optimum
6.2 Problème du flot maximal
6.3 Problème d’affectation optimale. Algorithme hongrois
6.4 Problème de transport. Algorithme de Stepping-Stone (marche pied-escalier)
CHAPITRE 7 : PROBLEME D’ORDONNANCEMENT
7.1 Enoncé du problème d’ordonnancement
7.2 Etablissement du graphe de programme
7.3 Date de réalisation de l’ensemble des travaux. Chemin critique. Intervalle de flottement
et marges des opérations

GESTION DE STOKS

CHAPITRE 8 : LES PRINCIPAUX MODELES DE GESTIONS DES STOCKS


8.1 Introduction
8.2 Les modèles de base de gestion
6

8.3 Modèles classiques de gestion des stocks


8.3.1 Les modèles déterministes
8.3.2 Les modèles aléatoires
REFERENCES BIBLIOGRAPHIQUES
7

CHAPITRE 0 : INTRODUCTION

1. APERÇU HISTORIQUE
La recherche opérationnelle (R.O) est la traduction des expressions anglaises
(Operationnal Research) et américaine (Opérations Research). Les risques de guerre, la
conduite des opérations militaires ont fourni à la recherche opérationnelle les conditions
favorables à son développement. L’un des premiers problèmes militaire de la recherche
opérationnelle fut la mission confiée à Archimède par Hiéron de trouver le moyen de résister
à l’attaque des vaisseaux. Mais au cours de la deuxième guerre mondiale la recherche
opérationnelle s’est véritablement révélée. Les substantiels résultats obtenus alors l’ont été
grâce à la conjonction de deux facteurs essentiels :
- Premièrement les besoins de la défense qui, en même temps qu’ils exigeaient une parade
efficace contre le danger, faisaient passer au second plan le coût élevé des recherches ;
- Deuxièmement les progrès réalisés sur le plan des mathématiques ont fourni aux
chercheurs de nouveaux procédés d’analyse. A ces progrès ajoutons ceux obtenus en
informatique avec la naissance des ordinateurs dits de la première génération (IBM 650,
Gamma-Bull, …, 1955-1956). En effet, l’informatique a permis la résolution automatique
des problèmes qui, manuellement, ne pouvaient pas l’être.

Après la deuxième guerre mondiale, la recherche opérationnelle pénétra dans les


affaires, dans l’industrie ainsi que dans les administrations publiques. Aujourd’hui des
nouvelles applications de la recherche opérationnelle en médecine et en Santé Publique ont
vu le jour.

2. DEFINITION, PROBLEMES ET BRANCHES DE LA RECHERCHE


OPERATIONNELLE
La recherche opérationnelle est une discipline carrefour où se rencontrent les
économistes, les mathématiciens, les statisticiens et les informaticiens. Plusieurs définitions
de la recherche opérationnelle ont été conçues par différents chercheurs et possèdent de
points communs. Ainsi Robert Faure, Bernard Lemaire et Christophe Picouleau
considèrent la recherche opérationnelle comme « l’ensembles des méthodes et techniques
rationnelles d’analyse et de synthèse des phénomènes d’organisation utilisables pour
élaborer de meilleures décisions ». Ces phénomènes d’organisation sont représentés en
recherche opérationnelle par des modèles mathématiques qui prennent souvent la forme des
8

équations. Le but est d’obtenir une solution optimale, c’est-à-dire celle qui minimise ou
maximise la performance du système étudié sous condition des contraintes précisées dans le
modèle.

La recherche opérationnelle est un domaine vaste dans lequel on retrouve les


problèmes de divers types ayant donné naissance aux différentes branches de la recherche
opérationnelle. Les problèmes dont s’occupe la recherche opérationnelle ne concernent pas
ceux dont une solution de bon sens peut être appliquée naturellement. La recherche
opérationnelle s’occupe des problèmes ou situations pour lesquelles, pour une raison
quelconque, le bon sens humain se révèle faible ou impuissant. Ces problèmes peuvent être
groupés en trois grandes catégories ; à savoir :
1°. Les problèmes combinatoires : ce sont des problèmes pour lesquels il existe plusieurs
solutions dénombrables et pour lesquels l’utilisation d’un algorithme judicieux permet de
choisir la ou les solutions optimales. Les principaux problèmes de cette catégorie sont :
- Les problèmes d’investissement où il est question de rechercher les investissements
les plus rentables dans un projet déterminé ;
- Les problèmes de production qui consistent à optimiser les niveaux d’activité en
tenant compte des ressources qui sont limitées ;
- Les problèmes d’affectation qui consistent à affecter un ouvrier ou une machine à une
et une seule tâche, et chaque tâche à un seul ouvrier ou à une seule machine, de
manière à rendre minimum le coût d’affectation ;
- Les programmes de transport qui consistent à organiser le transport des marchandises
entre les centres de production (ou de départ) et les centres de consommation ou
distribution (ou centres d’arrivée) de manière la moins coûteuse possible ;
- Les problèmes de circulation à travers un réseau (problème du voyageur de
commerce, problème de flot maximal, problème de chemin optimal,…) ;
- Les problèmes d’ordonnancement : il s’agit ici de planifier dans le temps un ensemble
d’opérations ou tâches contribuant à la réalisation d’un même projet ainsi que de
déterminer la durée optimale de réalisation de ce projet.

Ces problèmes peuvent être traités à l’aide des méthodes et techniques des
branches de la recherche opérationnelle suivantes : la programmation linéaire, la théorie des
graphes, l’ordonnancement, la programmation dynamique, etc.
9

2°. Les problèmes stochastiques ou aléatoires. Ce sont des problèmes dans lesquels le hasard
joue un rôle important et est connu à travers les distributions de probabilité. Parmi ces
problèmes nous pouvons citer :
- Les problèmes de file d’attente qui consistent à l’examen d’un système d’attente
alimenté par des arrivées des unités dans le système et diminué des sorties des unités
après un service dans un ou plusieurs guichets ou stations. Le but de l’étude d’un
système d’attente peut être celui de trouver le nombre de guichets, stations ou
serveurs qui minimise la somme des coûts d’attente des clients (sujets attendant d’être
servis) ;
- Les problèmes de stock où il est question de déterminer les quantités à commander
dans une gestion des stocks et les dates auxquelles il faut commander ;
- Les problèmes de gestion et de renouvellement des équipements : ce sont des
problèmes qui consistent :
 pour les matériels qui se détériorent à déterminer le moment de leur
remplacement de façon à minimiser pour une période donnée la somme des
différents coûts (coût d’achat du matériel, coût d’entretien et de réparation de
l’ancien matériel, coût de la perte de rendement) ;
 et pour les matériels sujets à des pannes irréparables à déterminer le nombre
des pièces à remplacer, la fréquence de remplacement de façon à minimiser la
somme de différents coûts (coût du matériel considéré, coût de remplacement
des pièces, coût de la panne).

Cette deuxième catégorie de problèmes stochastiques est résolue par les méthodes
et techniques des branches de la recherche opérationnelle ci-après : les files d’attente, la
gestion des stocks, la gestions des équipements. La programmation dynamique dans le cas
aléatoire peut être mise à contribution pour résoudre certains problèmes de gestion des stocks
ou de gestion des équipements.

3°. Les problèmes concurrentiels. Les problèmes de concurrence sont des problèmes dans
lesquels chacun de deux joueurs ne connaît pas la décision prise par l’autre joueur, mais
cherche à minimiser (ou maximiser) les conséquences de la décision pouvant être prise par
l’autre joueur vis-à-vis de sa décision propre. Parmi ces problèmes on peut citer la politique
d’approvisionnement, de vente, le choix d’un moyen de publicité. Ces problèmes sont du
ressort de la théorie des jeux.
10

Le cours de la recherche opérationnelle et notamment l’apprentissage de certaines


de ses branches exige un pré requis solide en mathématique et en statistique. Les
disciplines développées dans ce cours sont exemptées dans la mesure du possible de leurs
développements mathématiques et accordent une plus grande importance aux résultats qui
résultent de ces développements.

Nous regroupons l’étude des disciplines de la recherche opérationnelle et des


problèmes correspondants en trois parties subdivisées en chapitres, les trois parties ayant
trait aux trois catégories de problèmes de recherche opérationnelle présentés ci-dessus.
11

LA PROGRAMMATION LINEAIRE

CHAPITRE 1 : GENERALITES

1.1 INTRODUCTION
La programmation linéaire est une branche de la recherche opérationnelle qui
s’occupe de l’étude et de la résolution des programmes linéaires. Elle trouve son application
dans divers domaines et différents problèmes à caractère combinatoire, notamment dans la
résolution des problèmes de transport, de production, d’affectation, d’investissement etc.
Dans ces problèmes, il est essentiellement question de trouver l’optimum d’une fonction
linéaire dite fonction économique en respectant certaines contraintes ou certaines conditions
dont on ne peut se passer. Ces conditions ou contraintes se présentent mathématiquement
sous forme d’équations ou inéquations du premier degré. L’on comprend dès lors pourquoi il
y a le mot « linéaire » dans la dénomination de cette branche de recherche opérationnelle :
c’est parce que la fonction économique et les contraintes sont des expressions dans
lesquelles les variables sont considérées à leur première puissance.
Parmi les contraintes, il y a celles de non négativité des variables, étant donné que
celles-ci expriment le niveau d’activité (quantité à produire, à transporter, à consommer,
nombre d’ouvriers, montant à investir ou à placer…).
Ainsi un programme linéaire est un modèle mathématique dans lequel il faut
optimiser une fonction économique linéaire de certaines variables, celles-ci étant liées entre
elles par un certain nombre d’équations ou inéquations du premier degré qui doivent être
respectées lors de cette optimisation et qui jouissent de la propriété de non négativité.

1.2 EXPRESSIONS MATHEMETIQUES DES PROGRAMMES


LINEAIRES
De ce qui précède, étant donné n variables x1, x2, … xn non négatives, un
programme linéaire de ces variables se présente comme suit :
12

Optimiser Z  c1 x1  c2 x2  ...  cn xn (1).


Sous les contraintes :
a11 x1  a12 x2  ...  a1n xn  b1

a21 x1  a22 x2  ...  a2n xn  b2 (2)


……………………………….
am1 x1  am2 x2  ...  amn xn  bm

x1  0, x2  0,..., xn  0 (3)

Les aij , les c j et les bi sont des constantes positives, négatives ou nulles.

Autres notations.
1. Notation condensée :
n
Optimiser Z   c j x j
j 1

a
j 1
ij x j  bi , i  1, 2,..., m
Contraintes :
x j  0, j  1, 2,..., n

2. Notation matricielle :
Fonction économique : Optimiser CX tel que
Contraintes : AX ≤ B, X ≥ 0,
où A = matrice m x n ;
C = matrice ligne 1 x n ;
B = matrice colonne m x 1
X = matrice colonne n x 1.
a11 a12 a13 ......... a1n

a21 a22 a23 .......... a2n


A=
………………………..
am1 am2 am3 .......... amn

C  (c1 , c2 ,..., cn )
13

b1 x1
b2 x2
. .
B= ; X =
. .
. .
bm xn

3. Ecriture vectorielle :
n n
Opt c
j 1
j xj tel que x P
j 1
j j  P0

xj  0

b1 a11 a12 a1n


b2 a21 a22 a2n
. . . .
P0 = . , P1 = . , P2 = . ,. . . , Pn = .
. . . .
bm am1 am2 amn

NB: optimiser c’est soit minimiser, soit maximiser.


S’il faut minimiser (ou maximiser) la fonction économique, le problème est dit à minimum (à
maximum).
1.3 VARIABLES D’ECART
Très souvent dans la résolution des programmes linéaires, il est fait appel à un
système de contraintes sous forme d’équations. Si donc, initialement les contraintes (2), dites
contraintes physiques du problème, sont des inéquations, il faut transformer celles-ci en
équation par l’usage de certaines variables appelées variables d’écart.
Supposons que les inéquations soient de la forme ai1 x1  ai 2 x2  ...  ain xn  bi ,
i = 1, …, m. Pour que ces inéquations se transforment en équations, il suffit d’ajouter au
membre de gauche une quantité positive ou nulle pour ramener l’égalité entre les deux
membres. Cette quantité que l’on ajoute s’appelle variable d’écart. Soit t i cette variable

d’écart ; il vient : ai1 x1  ai 2 x2  ...  ain xn  ti  bi


14

Ainsi le système de contraintes physiques, initialement sous forme de


n n

 aij x j  bi , i  1, 2,..., m devient


j 1
a
j 1
ij x j  t i  bi , i  1, 2,..., m

Notons que les variables d’écart ti jouissent aussi de la propriété de non négativité.
Supposons maintenant que les inéquations soient de la forme :
ai1 x1  ai 2 x2  ...  ain xn  bi . Pour qu’elles deviennent équations on retranche au membre de
gauche une quantité positive ou nulle capable de ramener l’égalité entre les deux membres.
Soit ti cette quantité ou variable d’écart. Il vient : ai1 x1  ai 2 x2  ...  ain xn  ti  bi
La fonction économique ne change pas car les variables d’écart ne modifient pas sa
valeur.
1.4 DEFINITIONS ESSENTIELLES ASSOCIEES AUX
PROGRAMMES LINEAIRES
On appelle :
1 Solution : un ensemble de valeurs associées aux variables xj (j = 1, …, n) d’un
programme linéaire satisfaisant au système de contraintes physiques du programme
linéaire ;
2 Solution admissible : un ensemble de valeurs des variables xj non négatives
satisfaisant aux contraintes d’un programme linéaire (X ≥ 0).
3 Solution admissible optimale : une solution admissible qui optimise la fonction
économique du programme linéaire ;
4 Base : un ensemble de m variables xj dont le déterminant de leurs coefficients aij dans
le système des contraintes sous forme d’équations est différent de zéro. Chaque fois
que l’on détermine une base, on distingue les m variables de base et le n-m variables
hors base. Bien entendu, m < n où m et n sont respectivement le nombre des
contraintes et celui des variables du programme. Pour une base à déterminant non nul
les vecteurs Pj correspondants sont linéairement indépendants ;
5 Solution de base : une solution qui s’obtient en annulant n-m variables hors base et en
résolvant le système de m contraintes sous forme d’équations à m inconnues ou
variables de base. En supposant que les m premières variables x j soient les variables
de base, la solution de base peut s’écrire (x1,x2, …, xm, 0, 0, …, 0) ;
6 Solution de base admissible : une solution de base telle que les variables xj ≥ 0 ;
7 Système :
- Standard ou saturé : un système de contraintes constitué uniquement des
égalités : AX = B ;
15

- Canonique : un système de contraintes défini uniquement des inégalités :


par exemple AX ≤ B ou AX ≥ B ;
- Mixte : un système de contraintes comportant à la fois des égalités et des
inégalités ;
8 Hyperplan : une contrainte dans un espace ayant plus de trois dimensions. Exemple :
3x1  4x2  5x3  2x4  4. Une contrainte dans un espace à trois dimensions s’appelle

plan (exemple : 3x1  4 2  x3  2 ) et une contrainte dans un espace à deux

dimensions s’appelle droite (exemple : x1  3x2  5 ) ;


9 Ensemble de points convexe : un ensemble tel que toute combinaison linéaire
convexe de deux points de cet ensemble appartient encore à cet ensemble. On appelle
combinaison linéaire convexe de deux points X et Y, respectivement de coordonnées
(x1, x2 , …, x n) et (y1, y2, …, yn), un point Z de coordonnées
( x1  y1 ,x2  y2 ,..., xn  yn ) avec  ,   0 et     1 . On écrit, pour

abréger, Z  X  Y ,  ,   0,     1;
10 Polyèdre convexe : un ensemble convexe des points ayant un nombre fini de
sommets. En fait, c’est une figure géométrique obtenue en représentant
graphiquement le système de contraintes. Un sommet est un point de l’ensemble
convexe qui ne peut être obtenu par aucune combinaison linéaire convexe de points
de l’ensemble. Mais tout point P de l’ensemble convexe peut être obtenu à partir de
combinaison linéaire de sommets :
P    k S k avec 0   k  1 et  k 1

L’ensemble vide peut être considéré comme convexe.


Le sommet d’un polyèdre convexe s’appelle également point anguleux ou extrémal ;
11 Espace de contraintes : un repère orthonormé de dimension m dans lequel on
représente le vecteur Po et et les vecteurs Pj de la matrice A des contraintes.
12 Espace de décisions ou de solutions : un repère euclidien orthonormé des variables
(x1, x2, …, xn).
16

CHAPITRE 2 : QUELQUES PROBLEMES ECONOMIQUES


DE PROGRAMMATION LINEAIRE
2.1 PROBLEME DE NUTRITION
Ce problème constitue une illustration classique en programmation linéaire. IL
consiste à nourrir par exemple une armée ou un bétail de la façon la plus économique tout en
satisfaisant aux conditions nutritives.
Soient n ingrédients ou aliments différents A1, A2, …, An à partir desquels on doit
choisir la quantité de chaque nourriture à consommer périodiquement (journellement,
hebdomadairement, mensuellement etc) par une personne ou un groupe de personnes. Ce
menu, mensuel par exemple, doit contenir certains éléments nutritifs tels que les protéines,
les sels minéraux, les vitamines, etc. Soient E1, E2, …, Em ces éléments nutritifs. On suppose
que pour une bonne alimentation chaque personne doit consommer par mois au moins :
b1 unités d’élément nutritif E1 ;
b2 unités d’élément nutritif E2 ;
………………………………..
bm unités d’élément nutritif Em.
Soit aij la quantité de l’élément nutritif Ei contenu dans une unité de l’ingrédient Aj.
La présentation sous forme de tableau permet une lecture simple.

Aj Qté minimale
Ei A1 A2 A3.............An Imposée
E1 a11 a12 a13............a1n B1
E2 a21 a22 a23............a2n b2
E3 a31 a22 a32............a2n b3
............... ....................................... .....
Em am1 am2 am3...........amn bm
Prix unitai- c1 c2 c3..............cn
Res

Ce tableau est désigné par l’expression de « matrice de nutrition ». On y lit ainsi qu’il y a par
exemple a12 unités d’élément nutritif E1 dans une unité de l’aliment A2, a21 unités d’élément
nutritif E2 dans une unité de l’aliment A1. Par ailleurs b1, b2, …, bm sont les quantités
minimales respectives des éléments nutritifs E1, E2, …, Em à consommer mensuellement dans
17

le régime alimentaire, lequel est formé des aliments A1, A2, …, An. Les prix unitaires
respectifs de ces aliments sont c1, c2, …, cn.
Déterminer le régime approprié correspondant à chercher les quantités xj de
chaque aliment qu’il faut dans le régime. Si donc on consomme x j unités de Aj (j = 1,2, …,
n), on aura consommé pour chaque élément nutritif les quantités suivantes : pour
 E1 : a11x1 + a12x2 + … + a1nxn
 E2 : a21x1 + a22x2 + … + a2nxn
………………………...........
 Ei : ai1x1 + ai2x2 + … + ainxn
.............................................
 Em : am1x1 + am2x2 + … + amnxn
L’on sait qu’il faut au moins bi unités de Ei dans le régime (i = 1,2, …, m) ; d’où :
a11x1 + a12x2 + … + a1nxn ≥ b1.
a21x1 + a22x2 + … + a2nxn ≥ b2.
………………………………..
am1x1 + am2x2 + … + amnxn ≥ bm.
Bien entendu x j  0 j  1,...., n

Etant donné qu’une unité de l’aliment Aj coûte cj (j = 1, …, n), alors le coût du régime
alimentaire s’exprime par la fonction Z = c1x1 + c2x2 + … + cnxn.
Déterminer un régime alimentaire le plus économique correspond à résoudre le
programme linéaire suivant :
n
Minimiser Z   c j x j
j 1

sous les contraintes :


n

a
j 1
ij x j  bi , i  1,...., m

x j  0, j  1, , n

C’est la traduction mathématique du problème.

2.2 PROBLEME DE TRANSPORT


Les marchandises doivent être transportées d’un ensemble des centres de
production vers un ensemble des centres de distribution (consommation). Soient P 1, P2, …,
Pm les centres de production et a1, a2, …, am les quantités respectives produites dans ces
centres. Soient encore B1, B2, …, Bn les centres de distribution et d1, d2, ...., dn les quantités
18

minimales demandées (consommées) dans ces centres. Soit c ij le coût de transport d’une

unité de marchandise du centre Pi au centre Bj.


Le problème est d’organiser le transport des marchandises de la manière la moins
coûteuse possible. Appelons xij la quantité de marchandises transportée du centre Pi au centre
Bj. On sait par ailleurs que chaque centre de production Pi ne peut délivrer au plus que ce
qu’il a produit, tandis que chaque centre de distribution Bj peut recevoir une quantité
dépassant sa demande minimale. Le problème actuel est de déterminer un programme
d’expédition tel que :
m
1°. La demande dj au centre Bj soit satisfaite : x
i 1
ij  d j ( j  1, 2,...., n)

n
2°. Le ravitaillement au centre Pi ne soit pas dépassé : x
j 1
ij  ai (i  1, 2,...., m)

m n
3°. Le coût d’expédition soit minimum :  c
i 1 j 1
ij xij

n m
4°. La demande totale soit au moins inférieure au ravitaillement total :  d j   ai
j 1 i 1

Exemple numérique.
1
P1 D1 (d1 = 2)
a1 = 4 2
2 D2 (d2 = 3)
4
3
P2 D3 (d5 = 5)
a2 = 7 6
Le programme linéaire correspondant se présente comme suit :
Min Z  x11  2x12  3x13  2x21  4x22  6x23
sous les contraintes :
x11  x 21  2
x12  x 22  3

x13  x23  5

x11  x12  x13  4

x21  x22  x23  7

xij  0 (i  1, 2 ; j  1, 2, 3)
19

2.3 PROBLEME DE PRODUCTION


Pour fabriquer deux produits P1 et P2, on doit leur faire subir des opérations sur
trois machines M1, M2 et M3 successivement, mais dans un ordre indifférent (pas de temps
d’attente). Les temps unitaires d’exécution sont donnés dans le tableau ci-après où par
exemple on peut relever que le temps unitaire d’exécution de la pièce P 1 sur la machine M2
est de 7 minutes.

Machines M3
Produits M1 M2
P1 11 minutes 7 minutes 6 minutes
P2 9 minutes 12 minutes 16 minutes

On suppose que les machines n’ont pas de temps mort par suite d’une attente d’un produit en
opération sur une autre machine, ce qui peut être réalisé puisque l’ordre des opérations est
indifférent.
Les heures disponibles pour chaque machine pour une activité d’un mois sont :
M1 : 165 heures = 9900 minutes ;
M2 : 140 heures = 8400 minutes ;
M3 : 160 heures = 9600 minutes.
Le produit P1 donne un profit unitaire de 900 F et P2 un profit unitaire de 1000 F.
On se propose de déterminer le programme linéaire qui maximise le profit de cette
production.
Toutes les données du problème peuvent être consignées dans le tableau ci-après :
Machines
Produits M1 M2 M3 Profit unitaire
P1 11 minutes 7 minutes 6 minutes 900 F
P2 9 minutes 12 minutes 16 minutes 1000 F
Temps disponible des 9900 minutes 8400 minutes 9600 minutes
Machines
20

Le programme linéaire correspondant est le suivant :


Max Z = 900 x1 + 1000 x2
sous les contraintes :
11 x1 + 9 x2 ≤ 9900 ;
7 x1 + 12 x2 ≤ 8400 ;
6 x1 + 16 x2 ≤ 9600 ;
xj ≥ 0, j = 1,2
où xj est le nombre de pièces Pj à produire pendant un mois.
Remarque : pour qu’un système de contraintes sous forme d’équations soit compatible,
c’est-à-dire ne soit pas contradictoire il faut que le nombre d’équations exprimant les
contraintes soit inférieur au nombre de variables ou inconnues : m < n.

2.4 PROBLEME DE PLACEMENT


Une société désire placer un capital de 100 unités monétaires. Son but est
évidemment de maximiser le revenu global de ce placement. Diverses modalités de
placement s’offrent à la société sur le marché financier. Chacune d’elles lui assure un intérêt
déterminé se chiffrant comme suit :
M1 : 3% ; M2 : 2,5% ; M3 : 3,5% ; M4 : 4% ; M5 : 5% ; M6 : 4,5%.
Pour des raisons définies la société se voit contrainte de placer 40% au moins du
capital selon les modalités M1 ou M2, 35% au plus selon les modalités M3 ou M4 et 35% au
plus selon les modalités M5 ou M6.
On observe d’abord que l’ensemble des données se réduit au tableau suivant :

Modalités d’investissement M1 M2 M3 M4 M5 M6
Intérêt 3% 2,5% 3,5% 4% 5% 4,5%
Sommes placées x1 x2 x3 x4 x5 x6
Contraintes 40% minimum 35% maximum 35% maximum
On en tire facilement le programme linéaire suivant :
Maximiser Z  3x1  2,5x2  3,5x3  4x4  5x5  4,5x6

x1  x2  x3  x4  x5  x6  100

x1  x 2  40

si x3  x4  35

x5  x6  35

x1 , x2 , x3 , x4 , x5 , x6  0
21

2.5 PROBLEME D’IMPORTATION.


Un importateur de whisky dispose d’un marché illimité, mais se trouve restreint
par la réglementation des importations quant aux quantités mensuelles maximales autorisées
qui s’établissent comme suit :
Sir Roses : au plus 2000 bouteilles à 35 F ;
Highland Wind : au plus 2500 bouteilles à 25 F ;
Old Frenzy : au plus 1200 bouteilles à 20 F.
Il effectue trois mélanges A, B et C qu’il vend aux prix respectifs de 34 ; 28,5 et
22,5 la bouteille. Ces mélanges se définissent comme suit :
Pas moins de 60% de Sir Roses ;
A
Pas plus de 20% de Old Frenzy.

Pas moins de 15% de Sir Roses ;


B
Pas plus de 60% de Old Frenzy.

C Pas plus de 50% de Old Frenzy.


On cherche les mélanges qui rendent maximaux les bénéfices de l’importateur. On se
contentera de traduire le problème sous forme d’un programme linéaire.
Notons que la qualité C ne contient pas plus de 50% de Old Frenzy, au mieux elle
devrait donc contenir 50% de Highland Wind, mais dans ces conditions elle serait alors
vendue au prix d’achat. Cette procédure n’ayant pas de sens économique on ne saurait
entreprendre une telle fabrication.
Appelons x11 la quantité de Sir Roses, x12 celle de Highland Wind et x13 celle de
Old Frenzy contenues dans le mélange A. Soient x21, x22 et x23 les quantités correspondantes
contenues dans le mélange B.
La fonction économique s’écrit :
Z  34( x11  x12  x13 )  28,5( x21  x22  x23 )  35( x11  x21 )  25( x12  x22 )  20( x13  x23 )

Soit Z   x11  9x12  14x13  6,5x21  3,5x22  8,5x23


22

Cette fonction économique Z est à rendre maximale sous les contraintes ci-dessous :
x11  x21  2000 x11  0,60( x11  x12  x23 )

x12  x 22  2500 et x13  0,20( x11  x12  x13 )

x13  x23  1200 x23  0,60( x21  x22  x23 )

x21  0,15( x21  x22  x23 )

Soit : x11  x21  2000 3x12  3x13  2x11  0

x12  x 22  2500 et 4 x13  x11  x12  0

x13  x23  1200 2x23  3x21  3x22  0

3x22  3x23  17x21  0

2.6 PROBLEME DE FABRICATION


Une entreprise a la faculté de fabriquer sur une machine donnée, travaillant 45
heures par semaines, trois produits différents P1, P2 et P3. L’article P1 laisse un revenu net de
4 F, l’article P2 un revenu de 12 F et l’article P3 un revenu de 3 F. Les rendements horaires de
la machine sont respectivement pour chacun des trois produits et dans l’ordre 50, 25 et 75.
Enfin les ventes possibles sont limitées comme suit : 1000 objets P1, 500 objets P2 et 1500
objets P3. Comment répartir la production de façon à maximiser le revenu de l’entreprise ?
Le programme linéaire correspondant se présente comme suit, si l’on appelle x 1 la
quantité à fabriquer du produit P1, x2 la quantité correspondante de P2 et x3 celle de P3.
Fonction économique à maximiser : Z  4 x1  12x2  3x3

Contraintes : x1  1000
x 2  500 contraintes de production maximale.

x3  1500

x1 x2 x3
   45 : contrainte de temps disponible
50 25 75
x1 , x2 , x3  0 : contraintes de non négativité.
23

CHAPITRE 3 : METHODES DE RESOLUTION DES


PROGRAMMES LINEAIRES

3.0 PROPRIETES DES PROGRAMMES LINEAIRES


Les méthodes de résolution des programmes linéaires s’appuient sur les propriétés
ou théorèmes ci-après :
1. L’ensemble des solutions satisfaisant aux contraintes d’un programmes linéaire est
convexe : {X/AX ≤ B, X ≥0} est convexe.
2. Toute solution de base admissible est un sommet de C = {X/AX ≤ B, X ≥0}, c’est-à-dire
c’est un sommet de l’ensemble des solutions satisfaisant aux contraintes du programme
linéaire. Tout sommet de l’ensemble C = {X/AX ≤ B, X ≥0} est une solution de base
admissible.
3. L’ensemble C = {X/AX ≤ B, X ≥0} ou ensemble des solutions satisfaisant aux
contraintes du programme linéaire est soit vide, soit un polyèdre convexe, soit un
ensemble polyédrique convexe non borné.
4. Dans le cas où P = {X/AX = B, X ≥0} est un polyèdre convexe non vide la fonction
économique prend son minimum ou son maximum en un sommet ou éventuellement en
une combinaison linéaire des sommets. Si la fonction économique C(X) est optimum en
plusieurs sommets, C(X) est optimum en toute combinaison linéaire convexe de ces
sommets. Cette combinaison ne contient jamais de points intérieurs au polyèdre, mais
seulement des points d’une de ses faces ou d’un de ses segments.

3.1 METHODE GRAPHYQUE OU METHODE DE BALAYAGE


Nous allons illustrer la présentation de cette méthode en résolvant un programme
linéaire. Soit le problème de fabrication dont le programme ci-après a été établi au point 2.3 :
Maximiser Z = 900 x1 + 1000 x2 tel que :
11 x1 + 9 x2 ≤ 9900
7 x1 + 12 x2 ≤ 8400
6 x1 + 16 x2 ≤ 9600
x1 ≥ 0, x2 ≥ 0.
Résoudre un programme linéaire consiste à rechercher sa solution admissible optimale.
24

La méthode graphique part de la représentation graphique des contraintes dans


l’espace des solutions. Dans le cas d’espèce, les droites qui séparent la zone admissible de la
zone non admissible de chaque contrainte sont :
d1 ≡ 11 x1 + 9 x2 = 9900.
d2 ≡ 7 x1 + 12 x2 = 8400.
d3 ≡ 6 x1 + 16 x2 = 9600.

d1

1000

d2
d3
B
500
C
D

E
A 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1500
1700
Z = 90000

La représentation graphique des contraintes du programme ci-dessus consiste à


dessiner les droites d1, d2 et d3, et à considérer l’espace du plan dont les coordonnées des
points vérifient les inégalités. On obtient ainsi un polyèdre convexe à 5 sommets ABCDE
(Voir partir non hachurée du graphique). L’ensemble des points de ce polyèdre convexe
donne l’ensemble des solutions admissibles.
Soit par exemple la solution x1 = 450 et x2 = 100 : c’est le point F(450 ; 100).
Pour ce point Z = 900 x 450 + 1000 x 100 = 505000 F. Ceci n’est pas le maximum de Z
puisqu’on peut augmenter les valeurs de x1 et x2, et par conséquent celle de Z. De même en
25

considérant la solution x1 = 266 et x2 = 500 (points G sur d3), on obtient Z = 900 x 266 +
1000 x 500 = 729400 F. Ceci ne fournit pas non plus le maximum de Z.
Représentons aussi la fonction Z sur le graphique en lui donnant une valeur
arbitraire de façon à permettre la représentation, par exemple Z = 90000. Déplaçons la droite
Z parallèlement à elle-même de façon à accroître les valeurs de x 1 et de x2. En procédant
ainsi, on remarque que le point D = d1 ∩ d2 donne la plus grande valeur à Z. Ce point est un
sommet du polyèdre convexe, c’est-à-dire une solution de base admissible. Il est tel que si
l’on déplace encore la droite Z dans la même direction, elle se trouvera complètement en
dehors du polyèdre convexe dans la zone hachurée. D est le point de coordonnées x1 = 626 et
x2 = 334 obtenues par résolution du système des équations des droites d1 et d2.
Le maximum de Z est donc 900 x 626 + 1000 x 334 = 897400 F. Il correspond à
la saturation des machines M1 et M2, la machine M3 restant encore disponible pendant 9600 –
(6 x 626 + 16 x 334) = 500 minutes.

Exemple d’un régime alimentaire.


On se propose de réaliser une alimentation économique des bestiaux, alimentation
qui contient obligatoirement quatre sortes de composants nutritifs A, B, C, D. L’industrie
alimentaire produit précisément deux aliments M et N qui contiennent ces composants. La
quantité de chaque composant nutritif contenue dans 1 kg de chaque aliment, la quantité
minimale de chaque composant nutritif exigée pour l’alimentation journalière d’un animal et
le coût unitaire par kg de chaque aliment sont contenus dans la matrice de nutrition qui suit :

Aliments M N Quantité minimale


Composant nutritif exigée par jour
A 100 g = 0,1 kg 0 0,4 kg
B 0 100 g = 0,1 kg 0,6 kg
C 100g = 0,1 kg 200 g = 0,2 kg 2 kg
D 200 g = 0,2 kg 100g = 0,1 kg 1,7 kg
Coût unitaire 10 F/kg 4 F/kg

Quelle quantité d’aliment M et N doit-on utiliser par jour et par animal pour réaliser
l’alimentation la moins coûteuse ?
Soient x1 et x2, les quantités respectives en kg de M et N à consommer par jour et
par animal.
26

Le programme linéaire correspondant se présente comme suit :


Minimiser Z = 10 x1 + 4 x2
sous les contraintes
0,1 x1 + 0 x2 ≥ 0,4.
0 x1 + 0,1 x2 ≥ 0,6.
0,1 x1 + 0,2 x2 ≥ 2.
0,2 x1 + 0,1 x2 ≥ 1,7.
x1 ≥ 0, x2 ≥ 0.

Résolution par la méthode graphique.


Les droites correspondant aux contraintes sont :
d1 ≡ 0,1 x1 = 0,4
d2 ≡ 0,1 x2 = 0,6
d3 ≡ 0,1 x1 + 0,2 x2 = 2
d4 ≡ 0,2 x1 + 0,1 x2 = 1,7
Représentation graphique :
27

En plaçant Z présentement dans la zone hachurée vers la zone non hachurée, le premier point
de cette dernière zone qui sera rencontré par Z correspond au minimum. C’est le point I1 de
coordonnées (4 ; 9) se trouvant à l’intersection de d1 et d4 qui donne le minimum de Z = (10
x 4) + (4 x 9) = 76 F. On remarque encore que le minimum correspond à un sommet du
polyèdre, c’est-à-dire une solution de base admissible. Ce minimum correspond à la
consommation minimale des composants A et D et il y a dépassement de la quantité
minimale prescrite pour B et C. En effet,
0,1 x 9 = 0,9 >0,6 soit un dépassement de 0,3 kg de B ;
0,1 x 4 + 0,2 x 9 = 2,2 > 2 soit un dépassement de 0,2 kg de C.
Exercice.
Résoudre par la méthode graphique le programme linéaire ci-après :
1
Maximiser Z  x  y tel que :
2
x ≤2
x +y≤3
-x + y ≤ 1
x, y ≥ 0
Limite de la méthode graphique.
Cette méthode ne permet que la résolution des programmes linéaires ayant deux
variables ou tout au plus trois. En effet, chaque variable étant représentée par un axe, il est
impossible de représenter un système orthonormé de plus de trois axes sur une feuille de
papier à deux dimensions.
3.2ALGORITHME DE DENOMBREMENT OU METHODE DE
SELECTION
Principe et justification de la méthode.
Nous avons vu que l’optimum de la fonction économique d’un programme
linéaire a lieu à un sommet (ou quelques sommets) du polyèdre convexe qui en est alors la
solution optimale. C’est-à-dire la solution optimale d’un programme linéaire est une solution
de base admissible. C’est pourquoi le principe de la méthode de dénombrement consiste à
rechercher toutes les solutions de base du système {X/AX = B}. Uniquement pour les
solutions de base admissibles on calculera la valeur de la fonction économique. On choisira
la solution de base admissible qui optimise la fonction économique.
Lorsque le système AX = B comporte m équations et n inconnues, la méthode
consiste à choisir m variables parmi les n inconnues, à annuler les n – m autres restantes et à
28

résoudre le système composé de m équations et m inconnues. Il faut procéder ainsi et


résoudre tous les systèmes possibles de m équations à m inconnues. Il y en aura au total
n!
C nm  . On comprend tout de suite que si n et m sont grands, la méthode devient
m!(n  m)!
impraticable et fastidieuse.
Exemple : résoudre le programme linéaire ci-après :
1
Maximiser Z  x1  x 2 tel que
2
x1 ≤ 2
x1 + x2 ≤ 3
-x1 + x2 ≤ 1
x1≥ 0, x2 ≥ 0
Il faut convertir le système de contraintes en égalités par l’introduction des variables d’écart.
Il vient le programme ci-après :
1
Maximiser Z  x1  x2
2
sous les contraintes :
x1 + t1 = 2
x1 + x2 + t2 = 3
-x1 + x2 + t3 =
x1  0, x2  0, t1  0, t 2  0, t3  0
Tableau des résultats de calcul
Variables x1 x2 t1 t2 t3 Commentaires Z
annulées
(x1, x2) 0 0 2 3 1 S.B.A 0
(x1, t1) 0 - 0 - - Impossible -
(x1, t2) 0 3 2 0 -2 S.B.N.A -
(x1, t3) 0 1 2 2 0 S.B.A 1
(x2, t1) 2 0 0 1 3 S.B.A 1
(x2, t2) 3 0 -1 0 4 S.B.N.A -
(x2, t3) -1 0 3 4 0 S.B.N.A -
(t1, t2) 2 1 0 0 2 S.B.A 2
(t1, t3) 2 3 0 -2 0 S.B.N.A -
(t2, t3) 1 2 1 0 0 S.B.A 2,5
29

Z est maximum pour x1  1, x2  2, t1  1, t 2  t 3  0 ; alors Z  2,5


Exercice : Résoudre le programme linéaire ci-après par la méthode de dénombrement :
Max. F = 3 x + 4 y + 2 z tel que :
x+y+z≤2
z≤1
x+y≤1
x ≥ 0, y ≥ 0, z ≥ 0.

3.3 METHODE DE SIMPLEXE OU METHODE DE DANTZIG


3.3.1 Introduction
La méthode de Simplexe, c’est la méthode générale de résolution des programmes
linéaires. On l’appelle aussi méthode de Dantzig car, elle a été mise au point en 1947 par
George Dantzig.
Le principe de l’algorithme de Simplexe consiste à :
1° Déterminer une première base admissible, c’est-à-dire à se positionner à un sommet du
polyèdre convexe ;
2° Etablir une procédure permettant d’évoluer de base en base (de sommet en sommet à la
surface du polyèdre) en améliorant (diminution ou augmentation selon le cas) la valeur de
la fonction économique ;
3° Arrêter la procédure dès qu’il n’est plus possible de diminuer ou d’augmenter la valeur de
la fonction économique.
L’application de l’algorithme nécessite donc la connaissance :
- des formules de changement de base ;
- de la variation de la fonction économique lors des changements de base ;
- des critères de choix pour les changements ;
- d’un critère d’optimalité ;
- d’un critère pour le cas où la solution est infinie.
3.3.2 Résultats principaux de la description algébrique de l’algorithme de simplexe
1 Formule de changement de base
La matrice A des contraintes est composée des vecteurs P1, P2, …, Pn. Appelons
Po le vecteur ayant comme composantes les deuxièmes membres des contraintes sous forme
d’équations. Supposons que les vecteurs P1, P2, …, Pr, …,Pm sont des vecteurs unités de
l’espace des contraintes et forment une première base admissible. Dès lors les vecteurs Pm+1,
30

…, Pk, …, Pn sont des vecteurs hors base. Effectuer un changement de base c’est extraire un
vecteur Pr de la base et lui substituer un vecteur Pk hors base.
Le changement de base s’opère grâce aux formules suivantes :
xr j
xk j 
xr k

xi j
xi j  xi j  xr j pour i  k (1)
xr k

xr
x k 
xr k

xi k
x i  x i  xr pour i  k
xr k

Dans ces formules les xi j sont les composantes des vecteurs Pj. hors base et xi celles du

vecteur P0. Après changement de base les composantes des vecteurs Pj hors base deviennent
les xi j et celles du vecteur P0 deviennent xi . La composante x r k est appelée le pivot du

changement de base et doit être non nul.


Les formules (1) sont des formules de remplacement permettant des applications
intéressantes telles que la résolution des systèmes d’équations et l’inversion des matrices.
Exemple : Appliquer les formules de remplacement pour résoudre le système ci-après :
2 x1 + 3 x2 – x3 = 1
x1 + 0 x2 + 2 x3 = -2
x1 + x2 + x3 = 2
   
Ce système forme le vecteur x1 a1  x 2 a 2  x3 a3  b .
31

Nous plaçons et résolvons le système dans le tableau suivant.


   
To a1 a 2 a3 b
U1 2 3 -1 1
u2 1 0 2 -2
u3 1 1 1 2

U1 0 3 -5 5

a1 1 0 2 -2
U3 0 1 -1 4

U1 0 0 -2 -7

a1 1 0 2 -2
 4
a2 0 1 -1

a3 0 0 1 7/2
 1 0 0 -9
a1
 0 1 0 15/2
a2

D’où X  ( x1 , x2 , x3 )  (9 ; 15
2 ; 72 )
Exemple de l’inversion d’une matrice.
Soit la matrice
1 0 -1
A= 1 2 0
2 -1 3
Déterminer sa matrice inverse par l’application du théorème de remplacement.
32

  
a1 a2 a3 u1 u2 u3

u1 1 0 -1 1 0 0
u2 1 2 0 0 1 0
u3 1 -1 3 0 0 1

a3 -1 0 1 -1 0 0

u2 1 2 0 0 1 0

u3 5 -1 0 3 0 1

a3 0 2 1 -1 1 0

a1 1 2 0 0 1 0
u3 0 -11 0 3 -5 1

a3 0 0 1 -5/11 1/11 2/11


a1 1 0 0 6/11 1/11 2/11
a2 0 1 0 -3/11 5/11 -1/11

a1 6/11 1/11 2/11


D’où A-1 = a2 = -3/11 5/11 -1/11
a3 -5/11 1/11 2/11
On peut vérifier que A-1 A = I (= matrice unité)

1 0 0
A-1 A = AA-1 = 0 1 0
0 0 1
2 Variation de la fonction économique lors de changement de base
Introduisons les notations suivantes :
I (B) = l’ensemble des indices des vecteurs de la base B ;
I (B’) = l’ensemble des indices des vecteurs de la base B’.
Alors : Z 0  cx
iI ( B )
i i ; Zj  c x
iI ( B )
i ij

Observons que Zo est la valeur de la fonction économique en la base initiale B.


Si Z 0 est la valeur de la fonction économique en la nouvelle base B’, il vient :

xr
1°. Z 0  Z 0  (Z k  ck ) (2)
xr k
33

Dans un problème à minimum (maximum), le changement de base sera choisi de telle sorte
que la valeur de la fonction économique diminue (augmente). Il faudra donc que
Z k  ck  0 (Z k  ck  0) (cfr critères de choix pour le changement de base).
xr j
2°. Z j  c j  ( Z j  c j )  ( Z k  ck ) (3)
xr k

Les quantités Z j  C j représentent les variations unitaires de la fonction économique lors du

passage d’un point extrémal à un autre point extrémal : ce sont les coût marginaux des
variables xj hors base par rapport à la solution de base.

3 Critères déterminant le changement de base.


On peut résumer les critères d’entrée et de sortie des vecteurs dans le tableau
suivant :
Pk entre dans la base si : Pr sort de la base si
Z k  ck  max (Z j  c j ) Z j  c j  0
j

pour un problème à minimum.


xr x (4)
Z k  ck  min(Z j  c j ) Z j  c j  0   min i xi k
j xr k i xi k
pour un problème à maximum.

4 Critères d’optimalité et cas d’une solution infinie


1°. Le critère d’optimalité pour :
- un problème à minimum est d’arriver à trouver toutes les quantités Z j  c j  0 ;

- un problème à maximum est d’arriver à trouver toutes les quantités Z j  c j  0 .

Dans les deux cas, la solution optimale ainsi obtenue est fournie par les composantes xi du

vecteur P0 . La valeur minimum ou maximum de la fonction économique est donnée par :

Z 0  c x
iI ( B )
i i que l’on lit en dessous de la colonne de P0

2°. Le cas d’une solution infinie. S’il existe des quantités Z j  c j  0 pour un problème à

minimum ou des quantités Z j  c j  0 pour un problème à maximum, mais que toutes les

quantités xi k  0 , cela signifie que le polyèdre des solutions admissibles n’est pas borné et

que la direction de décroissance ou de croissance de la fonction économique est contenue


dans la partie ouverte du polyèdre. Donc la valeur minimum ou maximum de la fonction
économique est égale à – ∞ ou à +∞. Dans les deux situations, la solution optimale est infinie.
34

5 Résumé de l’algorithme de Simplexe


Le tableau ci-dessous donne la discussion complète pour les deux types de programmes.
Programme à minimum Programme à maximum
n n
Fonction économique : min Z   c j x j Fonction économique : max Z   c j x j
j 1 j 1

n n
Contraintes a
j 1
ij x j  bi , i  1,...., m Contraintes a
j 1
ij x j  bi , i  1,...., m

x j  0, j  1,...., n x j  0, j  1,....., n

Si les contraintes sont données sous forme d’inéquations, introduire les variables d’écart. Si on ne
dispose pas d’une base admissible explicite, l’expliciter par la méthode de remplacement ou introduire
les variables artificielles ; puis ranger les données en tableau comme celui donné en 6.
1°. Si Z j  c j  0 j alors la solution de base 1°. Si Z j  c j  0 j alors la solution de base

considérée est optimale, sinon on passe au considérée est optimale, sinon on passe au
point 2° ci-dessous. point 2° ci-dessous.
2° Si  j / Z j  c j  0 et xi j  0 i, alors la 2° Si j / Z j  c j  0 et xi j  0 i, alors la solution

solution optimale est infinie. La valeur de la optimale est infinie. La valeur de la fonction
fonction économique = -∞. Sinon on passe au économique = +∞. Sinon on passe au point 3°
point 3° ci-après. ci-après.
3°.Certains Z j  c j  0 avec certains xi j  0, 3°. Certains Z j  c j  0 avec certains xi j  0,

faire entrer le vecteur Pk tel que faire entrer le vecteur Pk tel que
Z k  ck  max (Z j  c j ) pour les Z j  c j  0 Z k  c k  min( Z j  c j ) pour les Z j  c j  0
j i

et faire sortir le vecteur Pr tel que : et faire sortir le vecteur Pr tel que :
xr x xr x
  min i  0 ( xi k  0)   min i  0 ( xi k  0)
x rk i xi k xr k i xi k

puis effectuer un changement de base selon les puis effectuer un changement de base selon les
formules (1), (2) et (3) reprises ci-dessous. formules (1), (2) et (3) reprises ci-dessous.
Poser avant de procéder l’itération suivante : Poser avant de procéder l’itération suivante :
xij  xij , xi  xi i et j xij  xij , xi  xi i et j

Z j  c j  Z j  c j j Z j  c j  Z j  c j j

Z 0  Z 0 , puis reprendre au point 1° Z 0  Z 0 , puis reprendre au po int 1


35

Formules de changement de base.


xr j xik x x
xk j  ; xi j  xij  xr j i  k ; x k  r ; xi  xi  ik xr i  k
xr j xrk x rk xrk

xr x rj
Z 0  Z 0  (Z k  ck ) ; Z j  c j  Z j  c j  (Z k  ck )
xrk x rk
6 Disposition pratique ou tableau de Simplexe.
Nous supposons que les vecteurs P1, P2, …, Pm constituent une première base
admissible.
C1 C2 C3 … Cr … Cm Cm+1 … Ck … Cn
Ci Base Po P1 P2 P3 ... Pr.... Pm Pm+1 … Pk … Pn
(xi) (xi1) (xi2) (xi3)...xir xim (xim+1) (xik) (xin)
C1 P1 x1 1 0 0 …0 …0 x1,m+1 ... x1,k ... x1,n
C2 P2 x2 0 1(E) 0 …0 …0 x2,m+1 ... x2,k(K) …x2,n
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
Cr Pr xr 0 0(L) 0 ... 1 ... 0 xr,m+1 … xr,k(S) …xr,n
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
Cm P m xm 0 0 0 ... 0 ... 1 xm,m+1 ... xm,k ... xm,n
Zo 0 0 0 … 0 …0 Zm+1–cm+1…zk-ck ... zn-cn
m m
N.B Z 0   ci xi ; Z j   ci xij
i 1 i 1

Formule du rectangle :
Pour faciliter l’application de l’algorithme de Simplexe, il existe un moyen pour
retrouver facilement les formules de changement de base. Si E est un élément du tableau de
simplexe, S étant le pivot, K l’élément situé dans la ligne de E et la colonne de S, L l’élément
situé dans la colonne de E et la ligne de S, c’est-à-dire si E, K,S,L sont les sommets d’un
rectangle dans le tableau de Simplexe et si E’ est l’élément du nouveau tableau correspondant
KL
à E, alors on a : E   E  i  r , sauf pour les éléments de la ligne S qui sont divisés
S
simplement par S. Cette formule est désignée sous le nom de la formule du rectangle.
36

Exemple numérique.
Soit à trouver les valeurs de Y= (y1, y2, …, y5) ≥ 0 qui minimisent :
Z = y1 + 6 y2 – 7 y3 +y4 + 5 y5 sous les contraintes :
5 y1 - 4 y2 + 13 y3 - 2 y4 + y5 = 20
y1 - y2 + 5 y3 - y4 + y5 = 8

5 -4 13 -2 1 20
A= ; Po =
1 -1 5 -1 1 8

Le système ne possède pas de base admissible explicite. Nous allons donc d’abord chercher
par la méthode de remplacement une première base admissible explicite à partir du tableau T o
ci-après :
To A1 a2 a3 a4 a5 Po
u1 5 -4 13 -2 1 20
u2 1 -1 5 -1 1 8
u1 4 -3 8 -1 0 12
a5 1 -1 5 -1 1 8
a1 1 -3/4 2 -1/4 0 3
a5 0 -1/4 3 -3/4 1 5

Le système d’équations précédent devient :


y1 -3/4 y2 + 2 y3 -1/4 y4 +0 y5 = 3
0 y1 -1/4 y2 + 3 y3 -3/4 y4 + y5 = 5
Ainsi la première base admissible est constituée des composantes a1 et a5. On a une première
solution de base admissible Y = (3, 0, 0, 0, 5). Pour cette solution
Z  3  6  0  7  0  5  5  28 .
37

Appliquons à présent l’algorithme de Simplexe.


1 5 6 -7 1
Ci BASE Po P1 P5 P2 P3 P4
1 a1 3 1 0 -3/4 2 -1/4
5 a5 5 0 1 -1/4 3 -3/4
Zj - cj 28 0 0 -8 24 -5
-7 P3 3/2 ½ 0 -3/8 1 -1/8
5 a5 ½ -3/2 1 7/8 0 -3/8
-8 -12 0 1 0 -2
-7 P3 12/7 -1/7 3/7 0 1 -2/7
6 P2 4/7 -12/7 8/7 1 0 -3/7
-60/7 -72/7 -8/7 0 0 -11/7

La dernière itération fournit tous les zj - cj ≤ 0 ; c’est le critère d’optimalité pour un


problème à minimum. Donc la solution optimale est Y = (y1, y2, y3, y4, y5) = (0 ; 4/7 ; 12/7 ;
0 ; 0). Pour cette solution Zo = -60/7 : c’est la valeur minimale de la fonction économique.
Exercice.
Trouver X = (x1, x2, x3, x4) ≥ 0 qui maximise Z = 2 x1 + 4 x2 + x3 + x4 sous les contraintes :
x1 +3 x2 + x4 ≤ 4
2 x1 + x2 ≤ 3
x2 +4 x3 + x4 ≤ 3
x j  0 j  1, 2, 3, 4 .

Après introduction des variables d’écart le programme devient


Max Z  2x1  4x2  x3  x4
sous les contraintes :
x1  3x2  0x3  x4  t1  4

2x1  x2  0x3  0x4  t 2  3

0x1  x2  4x3  x4  t3  3

x j  0, j  1, 2, 3, 4 ; t i  0, i  1, 2, 3

Comme les variables d’écart sont toutes affectées du signe + elles constituent une première
solution de base admissible explicite, c’est-à-dire la solution.
( x1, x2, x3, x4, t1, t2, t3) = (0 ;0 ;0 ;0 ;4 ;3 ;3)
On peut donc démarrer la méthode de simplexe à partir de cette solution
38

TABLEAUX DE SIMPLEXE
2 4 1 1 0 0 0
Ci BASE Po x1 x2 X3 x4 t1 t2 T3
0 t1 4 1 3 0 1 1 0 0
0 t2 3 2 1 0 0 0 1 0
0 t3 3 0 1 4 1 0 0 1
0 -2 -4 -1 -1 0 0 0
4 x2 4/3 1/3 1 0 1/3 1/3 0 0
0 t2 5/3 5/3 0 0 -1/3 -1/3 1 0
0 t3 5/3 -1/3 0 4 2/3 -1/3 0 1
16/3 -2/3 0 -1 1/3 4/3 0 0
4 x2 4/3 1/3 1 0 1/3 1/3 0 0
0 t2 5/3 5/3 0 0 -1/3 -1/3 1 0
1 x3 5/12 -1/12 0 1 1/6 -1/12 0 ¼
23/4 -3/4 0 0 ½ 5/4 0 ¼
4 x2 1 0 1 0 2/5 2/5 -1/5 0
2 x1 1 1 0 0 -1/5 -1/5 3/5 0
1 x3 ½ 0 0 1 3/20 -1/10 1/20 ¼
13/2 0 0 0 7/20 11/10 9/20 ¼

Solution optimale :
x1 = 1, x2 = 1, x3 = ½, x4 = 0, t1 = t2 = t3 = 0
Valeur de la fonction économique Z = 13/2

3.4 METHODE DE LA BASE ARTIFICIELLE OU METHODE « M »


Considérons le cas d’un programme à minimum (avec tous les bi  0). En général
on ne dispose pas d’une première base admissible et l’algorithme de Simplexe ne peut
démarrer. Nous avons vu que l’on pouvait utiliser la méthode de remplacement pour chercher
une première solution de base admissible explicite. Cela nécessite d’abord des calculs de
remplacement avant le démarrage proprement dit de l’algorithme de simplexe.
Pour contourner cette difficulté on utilise la méthode de la base artificielle. Pour ce
faire, si certaines composantes du vecteur B sont négatives (c’est-à-dire tous les bi ne sont
positifs ou nuls) il suffit de multiplier les membres des contraintes correspondantes par -1
pour que tous les bi deviennent positifs ou nuls. Puis on modifie le programme initial en
39

ajoutant à chaque contrainte une nouvelle variable vi affectée d’un coefficient M > 0
arbitrairement grand dans la fonction économique. Ainsi le programme initial :
n
min Z   c j x j tel que
j 1

a
j 1
ij x j  bi , i  1, 2,..., m

x j  0, j  1, 2,..., n

devient, après introduction des variables artificielles, le programme modifié ci-après :


n m
min Z   c j x j   M vi tel que
j 1 i 1

a
j 1
ij x j  vi  bi , i  1, 2,..., m

x j  0, vi  0

On peut donc observer que les m variables vi , dites variables artificielles, fournissent une
première base admissible et la procédure de Simplexe peut être entamée. Comme M est très
grand et vi  0 , la valeur de la fonction économique est très grande.
Pour que le programme modifié soit équivalent au programme initial il faut que
dans sa solution toutes variables artificielles soient nulles. Cela est possibles car pour réaliser
le minimum l’algorithme de Simplexe aura tendance à rejeter les variables vi hors de la base à
cause de leur coefficient M positivement très grand.
Si le programme initial admet une solution optimale finie (x1, x2,…; xn) alors (x1,
x2,…xn, 0, 0, 0, …, 0) est une solution optimale du programme modifié. En fait trois
situations peuvent se présenter :
1. Le programme complété (modifié) admet une solution optimale où toutes les variables
artificielles sont hors base : cette solution est aussi la solution optimale du programme
initial. Dans ce cas la procédure de Simplexe élimine tous les vecteurs P vi de la base et
l’on obtient ainsi une base du programme initial. La procédure peut se poursuivre, et il est
inutile de poursuivre les calculs des composantes d’un vecteur Pvi dès que celui-ci est
sorti de la base, le coefficient M figurant dans la fonction économique empêchant tout
vecteur Pvi sorti de réapparaître dans la base.
2. La solution optimale du problème complété contient des variables artificielles en base,
mais elles sont toutes nulles : on dit que la solution du problème initiale est une base
dégénérée. Ce cas arrive lorsque certaines contraintes sont linéairement dépendantes.
40

3. La solution optimale du programme complété contient des variables artificielles non


nulles en base. Cela signifie que le programme initial n’admet pas de solution c’est-à-dire
son système de contraintes est contradictoire.
Remarques.
1° Dans le tableau Simplexe on écrit Z j  c j en deux lignes, l’une contenant les termes

indépendant de M, l’autre ceux qui en dépendent. On introduira dans la base le vecteur


correspondant à la quantité Z j  c j ayant le plus grand terme positif en M.

2° Dans un problème à maximum, la fonction économique du programme complété sera du


n m
type : max Z   c j x j   M vi
j 1 i 1

Comme ici M est très grand et affecté du signe -, vi ≥ 0, la valeur de la fonction économique
est très petite et pour maximiser cette fonction, les variables vi à coefficient négativement très
petit sortiront de la base.
Exemple : Soit à résoudre le programme linéaire suivant :
min Z = x1 + x2,
sous les contraintes :
2 x1 + x2 ≥ 8
x1 + x2 ≥ 6
x1 +5 x2 ≥ 10
xj ≥ 0, j = 1,2.
Nous commencerons par l’introduction des variables d’écart pour avoir un système standard.
Il vient :
2 x1 + x2 - t1 = 8
x1 + x2 – t2 = 6
x1 + 5 x2 – t3 = 10.
A ce niveau la matrice A n’ayant pas une base admissible explicite, nous introduisons les
variables artificielles afin d’en faire une première solution de base explicite. Le programme
devient :
min Z = x1 + 2 x2 + M v1 +M v2 +Mv3
sous les contraintes :
2 x1 +x2 – t1 + v1 = 8
x1 +x2 – t2 + v2 = 6
x1 +5 x2 – t3 + v3 = 10
xj ≥ 0, ti ≥ 0, vi ≥ 0
41

Tableau de Simplexe.
1 2 0 0 0 M M M
C BASE B Px1 Px2 Pt1 Pt2 Pt3 Pv1 Pv2 Pv3
M Pv1 8 2 1 -1 0 0 1 0 0
M Pv2 6 1 1 0 -1 0 0 1 0
M Pv3 10 1 5 0 0 -1 0 0 1
0 -1 -2 0 0 0 0 0 0
24 M 4M 7M -M -M -M 0 0 0
M Pv1 6 9/5 0 -1 0 1/5 1 0
M Pv2 4 4/5 0 0 -1 1/5 0 1
2 Px2 2 1/5 1 0 0 -1/5 0 0
4 -3/5 0 0 0 -2/5 0 0
10 M 13M/5 0 -M -M 2M/5 0 0
1 Px1 10/3 1 0 -5/9 0 1/9 0
M Pv2 4/3 0 0 4/9 -1 1/9 1
2 Px2 4/3 0 1 1/9 0 -2/9 0
6 -3/4 0 -1/3 0 -1/3 0
4M/3 0 0 4M/9 -M M/9 0
1 Px1 5 1 0 0 -5/4 ¼
0 Pt1 3 0 0 1 -9/4 ¼
2 Px2 1 0 1 0 ¼ -1/4
7 0 0 0 -3/4 -1/4

La solution optimale est donc : x1 = 5 ; x2 = 1 ; t1 = 3 ; t2 = t3 = v1 = v2 = v3 = 0


La valeur minimale de la fonction économique est Z = 7.

3.5 LA DUALITE
3.5.1 Définition :
A tout programme linéaire, qu’on appelle alors primal, tel que :
n
min f ( x)   c j x j
j 1

sous les contraintes :


42

a
j 1
ij x j  bi , i  1, 2,...., m (I)

x j  0, j  1, 2,..., n

on peut faire correspondre un nouveau programme, dit problème dual, défini comme suit :
m
max g ( y )   bi y i
i 1

sous les contraintes :


m

a
i 1
ij y i  c j , j  1, 2,..., n ( II )

yi  0, i  1, 2,..., m
Reprenons toutes les données dans le tableau suivant :
xj
X1 x2 … xn ≥0
yj
Y1 a11 a12 … a1n ≥ b1
y2 a21 a22 … a2n ≥ b2
. . . … . .
. . . … . .
. . . … . .
ym am1 am2 … amn ≥ bm
! ! ! … !
Max g = min f
0 c1 C2 … cn

Programme primal (I) Programme dual (II)

min f ( x)  c1 x1  c2 x2  ...  cn xn max g ( y)  b1 y1  b2 y2  ...  bm ym


sous les contraintes : sous les contraintes :
a11x1 + a12x2 + … + a1nxn ≥ b1 a11y1 + a21y2 + … + am1ym ≤ c1
a21x1 + a22x2 + … + a2nxn ≥ b2 a12y1 + a22y2 + … + am2ym ≤ c2
………………………………….. …………………………………..
am1x1 + am2x2 + … + amnxn ≥ bm a1ny1 + a2ny2 + … + anmym ≤ cm
x1, x2, … , xn ≥ 0 y1, y2, … , ym ≥ 0
43

La fonction économique d’un programme à minimum exprime souvent le coût et


celle du programme à maximum le bénéfice.
On remarque que la dualité est involutive, c’est-à-dire que si l’on cherche le dual
du programme II, on trouve le programme I : le dual du dual est donc le primal. On dira donc
que les problèmes I et II forment un couple de problèmes duals l’un de l’autre.
On peut encore remarquer qu’à toute contrainte primale représentée par une
inéquation correspond une variable duale positive ou nulle et réciproquement.
3.5.2 Exemple des programmes duals et leurs solutions
Soit à résoudre le programme primal ci-après :
Max g = 2 x1 +4 x2 + x3 + x4
sous les contraintes :
x1 + 3 x2 + 0 x3 + x4 ≤ 4
2 x1 + x2 + 0 x3 + 0 x4 ≤ 3
0 x1 + x2 + 4 x3 + x4 ≤ 3
x1 ≥ 0, x2 ≥ 0, x3 ≥, x4 ≥ 0
Si on y introduit les variables d’écart, il devient :
max g = 2 x1 + 4 x2 + x3 + x4 tel que :
x1 + 3 x2 + 0 x3 + x4 + t1 = 4
2 x1 + x2 + 0 x3 + 0 x4 + t2 = 3
0 x1 + x2 + 4 x3 + x4 + t3 = 3
xj ≥ 0, j , ti ≥ 0 i
Ce problème a été résolu à la fin du point 3.3.2 par l’algorithme de Simplexe qui a fourni la
solution suivante :
x1 = 1, x2 = 2, x3 = ½ ; x4 = t1 = t2 = t3 = 0
g = 13/2.
Résolvons aussi par l’algorithme de Simplexe le programme dual correspondant.
Ce programme est alors :
min f = 4 y1 + 3 y2 + 3 y3
sous les contraintes :
y1 + 2 y2 + 0 y3 ≥ 2
3 y1 + y2 + y3 ≥ 4
0 y1 + 0 y2 + 4 y3 ≥ 1
y1 + 0 y2 + y3 ≥ 1
y1 ≥ 0, y2 ≥ 0, y3 ≥ 0
44

En introduisant les variables d’écart et les variables artificielles, le programme devient :


min f = 4 y1 + 3 y2 + 3 y3 + M v1 + M v2 + M v3 + M v4
sous les contraintes :
y1 + 2 y2 + 0 y3 - t1 + v1 = 2
3 y1 + y2 + y3 - t2 + v2 = 4
0 y1 + 0 y2 + 4 y3 - t3 + v3 = 1
y1 + 0 y2 + y3 - t4 + v4 = 1
yi  0 i, t i  0 i, v j  0 j

Les tableaux de résolution de Simplexe sont les suivants :


4 3 3 0 0 0 0 M M M M
C BASE B y1 y2 Y3 t1 t2 t3 t4 v1 v v v4
2 3
M v1 2 1 2 0 -1 0 0 0 1 0 0 0
M v2 4 3 1 1 0 -1 0 0 0 1 0 0
M v3 1 0 0 4 0 0 -1 0 0 0 1 0
M v4 1 1 0 1 0 0 0 -1 0 0 0 1
0 -4 -3 -3 0 0 0 0 0 0 0 0
8M 5M 3M 6M -M -M -M -M 0 0 0 0
M v1 2 1 2 0 -1 0 0 0 1 0 0
M v2 15/4 3 1 0 0 -1 ¼ 0 0 1 0
3 y3 ¼ 0 0 1 0 0 -1/4 0 0 0 0
M v4 3/4 1 0 0 0 0 ¼ -1 0 0 1
¾ -4 -3 0 0 0 -3/4 0 0 0 0
13M/2 5M 3M 0 -M -M M/2 -M 0 0 0
M v1 5/4 0 2 0 -1 0 -1/4 1 1 0
M v2 3/2 0 1 0 0 -1 -1/2 3 0 1
3 y3 ¼ 0 0 1 0 0 -1/4 0 0 0
M y1 3/4 1 0 0 0 0 ¼ -1 0 0
15/4 0 -3 0 0 0 ¼ -4 0 0
11M/4 0 3M 0 -M -M -3M/4 4M 0 0
M v1 ¾ 0 5/3 0 -1 1/3 -1/12 0 1
0 t4 ½ 0 1/3 0 0 -1/3 -1/6 1 0
3 y3 ¼ 0 0 1 0 0 -1/4 0 0
4 y1 5/4 1 1/3 0 0 -1/3 1/12 0 0
45

23/4 0 -5/3 0 0 -4/3 -5/12 0 0


3M/4 0 5M/3 0 -M M/3 -M/12 0 0
3 y2 9/20 0 1 0 -3/5 1/5 -1/20 0
0 t4 7/20 0 0 0 1/5 -2/5 -3/20 1
3 y3 ¼ 0 0 1 0 0 -1/4 0
4 y1 11/10 1 0 0 1/5 -2/5 1/10 0
13/2 0 0 0 -1 -1 -1/2 0

La Solution du programme dual est donc :


y1 = 11/10 ; y2 = 9/20 ; y3 = ¼ ; t4 = 7/20, t1 = t2 = t3 = 0.
La valeur minimale de f = 13/2.
Les solutions optimales de ces deux programmes duals nous amènent aux
constations suivantes :
1°. max g = min f = 13/2 ;
2°. Les gk - ck ≥ 0 (qu’on appelle coûts marginaux) du programme primal à son optimum
pour les variables d’écart sont la solution du programme dual ; par contre les -(fk -bk), qu’on
appelle coûts marginaux du programme dual à son optimum pour les variables d’écart sont la
solution du programme primal.
3.5.3 Propriétés de la dualité
1. S’il existe deux solutions finies xj (j = 1, …, n) pour le problème à minimum et
yi (i = 1, …, m) pour le problème à maximum alors :
m n

b y  c
i 1
i i
j 1
j x j , c’est-à-dire la valeur de la fonction économique de la solution yi

du problème à maximum est toujours inférieure ou égale à celle de la fonction


économique de la solution xj du problème à minimum.
2. Critère d’optimalité :
Si un problème dual et son primal admettent des solutions possibles, alors ils ont
tous les deux des solutions optimales qui ont toutes la même valeur de leurs
fonctions économiques. Inversement s’il existe des solutions possibles x 1, …, xn
pour un problème à minimum et y1,..., ym pour un problème à maximum telles
n m
que :  c j x j   bi yi alors ces solutions sont des solutions optimales des
j 1 i 1

problèmes respectifs. Si l’un des problèmes n’a pas de solution possible alors
l’autre n’en a pas non plus.
46

Conclusion :
La recherche de l’optimum d’un programme peut être remplacée par la recherche de
l’optimum du programme dual correspondant. Ou encore la recherche du minimum peut être
transformée en recherche du maximum et réciproquement. D’autre part, la dualité peut servir
à vérifier l’exactitude des calculs. Par ailleurs, un programme et son dual forment un jeu de
stratégie à somme nulle. Enfin, la recherche de l’optimum d’un programme paramétrique dont
les seconds membres des contraintes sont paramétrisés ne peut se faire que par la résolution
du programme dual associé.
47

EXERCICES

1. Dans quelle condition un point non anguleux du polyèdre convexe d’un programme
linéaire peut-il être une solution optimale ?
2. La méthode graphique de résolution des programmes linéaires utilise l’espace de
décisions (x1, x2, …, xn). Qu’est-ce qui explique l’impraticabilité de la méthode pour
la résolution de certains de certains programmes.
3. Un capital de 500 unités monétaires doit être placé selon les modalités M1, M2, M3 et
M4 procurant respectivement les intérêts 4%, 1%, 3% et 2%. Au plus 60% du capital
doit être placé selon les modalités M1 ou M2 et 80% au moins du capital doit être placé
selon les modalités M3 ou M4.
a. Ecrire le programme linéaire qui maximise l’intérêt des placements de ce
capital ;
b. Résoudre ce programme linéaire par la méthode de dénombrement et trouver
les différents montants placés selon les modalités précédentes qui maximisent
l’intérêt global. Quelle est la valeur de cet intérêt maximale ?
4. Résoudre par la méthode de la base artificielle le programme linéaire ci-après :
Max Z  4 x1  x2  x3

 6x1  4x2  x3  0

x1  2 x2  x3  0

x1  x2  1
5. On donne un problème de transport représenté par le programme linéaire ci-dessous :
Min Z  4x11  x12  2x13  6x21  4x22  3x23
Sous les contraintes :
x11  x12  x13  15

x21  x22  x23  35

x11  x21  15
x12  x 22  20

x13  x23  10

xij  0, i  1, 2 ; j  1, 2, 3

a. Construire le programme dual du programme de transport ci-dessous.


b. Une solution possible de ce programme de transport est :
48

x11  0 ; x12  15 ; x13  0 ; x21  15 ; x22  5 ; x23  10


Peut-on affirmer à l’aide du théorème d’équilibre que cette solution est optimale ?
6. Soit le programme linéaire paramétré ci-après :
Min F  6 y1  8 y2  10 y3 tel que :

y1  3 y3  4(1   )

y 2  2 y3  2
Dans quels intervalles de stabilité de  appartiennent respectivement les solutions :
4
a. y1  0 ; y 2  0 ; y3  (1   )
3
b. y1  0 ; y2  0 ; y3  1
7. Dans un atelier de couture on confectionne pendant 26 jours ouvrables du mois 2 types
de chemises C1 et C2, et 2 types de blouses B1 et B2. Les bénéfices unitaires de ces
quatre sortes de vêtements sont respectivement 500 F, 400 F, 300 F et 600 F. Les
rendements journaliers pour ces vêtements C1, C2, B1 et B2 sont respectivement 4 ; 5 ;
6 et 3. L’approvisionnement en tissus et autres inputs est juste suffisant pour satisfaire
au plus les commandes mensuelles évaluées à 200 pour les chemises et 230 pour les
blouses. Ecrire le programme linéaire qui maximise le profit sous contrainte des
conditions exprimées ci-dessous.
8. Voici le problème dual d’un problème de fabrication industrielle : un fabricant
indépendant loue les machines M1, M2 et M3 pour la fabrication de trois articles A1, A2
et A3. Le fabricant cherche à minimiser le coût de location de ces trois machines dont
la fonction économique pour une activité d’un mois se présente comme suit : 300 x1 +
400 x2 + 300 x3 où x1, x2 et x3 sont respectivement le prix horaire de location des
machines M1, M2 et M3. Les contraintes du problème sont :
x1  2 x2  100

3x1  2 x2  x3  400

x2  4x3  200
Les coefficients techniques sont les temps de fabrication de chaque pièce de ces trois
articles sur chaque machine. La 1ère contrainte, par exemple, exprime que le coût de
fabrication d’une pièce de A1 sur les machines M1 et M2 doit être au moins égal à 100.
a. Résoudre par la méthode de la base artificielle le programme linéaire ci-dessus pour
trouver les valeurs de x1, x2 et x3 qui minimisent la fonction économique.
b. Ecrire le programme primal correspondant.
49

c. Dégager la solution optimale du programme primal correspondant.


d. Donner l’interprétation économique des contraintes primales.

9. Une Brasserie dispose de deux usines qui produisent trois types de boissons (bière ,
sucré et eau gazeuse). L’usine A produit 4 hl de bières, 3 hl de sucrés et 2 hl d’eaux
gazeuses. L’usine B produit 1 hl de bières , 1hl de sucrés et 2 hl d’eaux gazeuses. Les
couts unitaires de production sont respectivement de 25 $ us pour l’usine A et 35 $ us
pour l’usine B. La satisfaction de la demande exige au moins 48 hl de bières, 45 hl de
sucrés et 31 hl d’eaux gazeuses. Soient x 1 le nombre d’heures de production de l’usine A
et x 2 le nombre d’heures de production de l’usine B.
a) Modélisez ce problème ?
b) Résoudre ce problème par la méthode de simplexe puis donner le temps minimum
de production ainsi que le cout minimum de production ?
c) Soient Y1 , Y2 et Y3 les variables duales, quelle est la valeur de la fonction
économique du programme dual si Y1  7 , Y2  8 et Y3  9 . Dire oui ou non si
cette solution est admissible puis justifiez votre réponse ?
10. Soit le programme linéaire qui consiste à minimiser la fonction d’achat
Z  400x1  320x2 sous contraintes :
x 1  3x 2  6
2x  x  4
 1 2

x 1  5
x  3
 2
x 1 , x 2  0
a. Déterminez les valeurs de x 1 et x 2 qui rendent minimale la fonction des dépenses
d’achat ? (Méthode de Simplexe)

Quelle est la valeur de la fonction économique Z ?


11. Représenter graphiquement l’ensemble – solution du système d’inéquations linéaires
suivant puis déterminer les coordonnées des points – sommets :
2x1  x 2  8
x  2x  7
 1 2

 2
x  3
x  0
 1
x 2  0
50
51

THEORIE DES GRAPHES

CHAPITRE 5 : DEFINITIONS ET CONCEPTS


GENERAUX

5.1 INTRODUCTION
La théorie des graphes est une partie importante de la théorie des ensembles.
Elle peut apporter une aide très efficace dans le traitement de certains problèmes de
caractère combinatoire apparaissant dans divers domaines économiques, sociologiques,
psychologiques ou technologiques… Elle constitue la base mathématique de la méthode du
« Chemin critique » dont l’une des variantes importantes est la méthode américaine PERT
(Program Evaluation Research Task). Cette méthode permet de mettre en œuvre et de
surveiller l’exécution des programmes de production ou de recherche.

Dans cette partie nous verrons quelques applications pratiques de la théorie des
graphes dans la résolution de certains problèmes notamment les problèmes du flot
maximum, de transport, d’affectation et d’ordonnancement.

5.2 NOTION DE GRAPHE


Considérons un ensemble de points en nombre fini ou non, mais distincts et
dénombrables. Soit par exemple un ensemble X de n points x1, x2,…, xn : X = {x1, x2,…,
xn }. A chaque élément xi  X faisons correspondre zéro, un ou plusieurs éléments de X
en représentant la liaison de tout élément xi à xj par des branches orientées que l’on
appellera arcs. Les éléments ou points de X sont appelés « sommets ». Le graphe est cet
ensemble des points reliés entre eux par des arcs.
Mathématiquement, on appelle graphe toute application d’un ensemble dans
lui-même. Le symbole Γ représente cette application. Ainsi, ( xi ) représentera l’ensemble

des sommets reliés à xi par un arc e provenance de xi . Lorsqu’à xi ne correspond aucun


sommet on dit qu’on lui fait correspondre l’ensemble vide  .
52

Pour désigner un graphe, il convient donc de définir à la fois l’ensemble X des


sommets et les correspondances qui existent entre ces sommets (application de X dans X)
et que l’on désigne par Γ: ainsi un graphe peut être désigné par le symbole G = (X, Γ). On
peut aussi désigner un graphe par l’ensemble X des sommets et l’ensemble V des arcs : on
écrit alors G = (X, V).
On peut représenter un graphe à l’aide d’un dessin tel que celui de la figure 1.1
ci-dessous appelé « représentation sagittale du graphe ». On peut aussi le représenter
comme sur la figure 1.2 ou bien encore à l’aide d’une matrice booléenne appelée matrice
d’incidence du graphe.

x2 c x3
a
j
g
x1 b
d x5 k
x6
i
l
f
h
m
e
x4 x7
p n
Figure 5.1
Γ(x1) = {x2, x4, x5} ; Γ(x2) = {x1, x3} ; Γ(x3) = {x5};
Γ(x4) = {x4, x5, x6, x7} ; Γ(x5) = {x4, x5} ;
Γ(x6) = {x3, x6, x7} ; Γ(x4) =  .
53

x1 b x1

x2 a x2
c
e
x3 x3
d
g j
x4 p x4

h f
x5 x5
k
i
x6 l x6
n
m
x7 . x7

Figure 5.2
Matrice booléenne correspondante.
On associe au graphe G= (X, Г) la matrice carrée n x n telle que M = ( mij )
où mij  0 si l ' arc ( xi , x j ) n' existe pas

1 si l ' arc ( xi , x j ) 

Pour le graphe des figures 1.1 et 1.2 la matrice booléenne est la suivante :
X1 x2 x3 x4 x5 x6 x7
X1 0 1 0 1 1 0 0
X2 1 0 1 0 0 0 0
X3 0 0 0 0 1 0 0
X4 0 0 0 1 1 1 1
X5 0 0 0 1 1 0 0
X6 0 0 1 0 0 1 1
X7 0 0 0 0 0 0 0

On peut représenter par un graphe des structures très diverses, par exemple :
- un réseau de routes ;
- un réseau électrique ;
54

- un groupe humain dont on étudie en psychologie les communications ;


- les relations de parenté d’un groupe d’individus ;
- la circulation des informations dans un système ;
- les opérations de montage ou de démontage d’un ensemble technologique ;
- les règles de certains jeux comme celles des échecs ou des dames ;
- un ensemble d’opérations concourant à la réalisation d’un projet.
Soit l’arc (xi, xj) : xi est l’extrémité initiale et xj est l’extrémité terminale. Deux
sommets xi et xj sont adjacents s’ils sont distinct et s’il existe un arc (xi, xj) ou (xj, xi).
Deux arcs sont adjacents s’ils sont distincts et ont une extrémité commune.
Exemple : Sur la figure 1.1, les sommets x1 et x2, x3 et x6 sont adjacents 2 à 2. Les arcs a et
c, f et g sont adjacents. Un sommet est isolé s’il n’est adjacent à aucun autre sommet.

5.3 CHEMIN ET CIRCUIT


Un chemin est une séquence d’arcs telle que l’extrémité terminale de chaque
arc coïncide avec l’extrémité initiale du suivant. C’est une succession d’arcs adjacents
permettant de passer d’un sommet à un autre en suivant les arcs. Ainsi sur la fig. 1.1, (x 1,
x2, x3, x5, x4), (x1, x2, x1, x4, x5, x5, x4, x6, x7), (x2, x1, x4, x5, x5, x4, x6, x3, x5), (x4, x7) sont
des chemins.
- Un chemin peut être fini ou infini.
- Un chemin est simple lorsqu’il n’utilise pas deux fois le même arc ; dans le cas
contraire, il est dit composé. Exemple : (x1, x2, x3, x5, x4, x6, x3) sur la figure 1.1 est un
chemin simple.
- Un chemin est élémentaire s’il n’utilise pas deux fois le même sommet. Exemple : (x2,
x1, x5, x4, x7) est chemin élémentaire.
- Un circuit est un chemin dont le sommet initial coïncide avec le sommet final.
Exemple : (x3, x5, x4, x6, x3) est un circuit sur la figure 1.1.
- Une boucle est un circuit constitué par un seul arc et un seul sommet. Exemple : l’arc p
est une boucle.
- La longueur d’un chemin ou d’un circuit est le nombre d’arcs que contient ce chemin
ou ce circuit. Exemple : le circuit (x3, x5, x4, x6, x3) sur la figure 11 est de longueur 4.
- Un chemin ou circuit hamiltonien est un chemin ou circuit qui passe une et une seule
fois par chaque sommet.
55

5.4 GRAPHE COMPLET, SYMETRIQUE, ANTISYMETRIQUE ET


FORTEMENT CONNEXE
 Un graphe G = (X, V) est complet si xi , x j  X , ( xi , x j )  V ou ( x j , xi )  V , c’est-

à-dire tout couple de sommets est relié au moins dans un sens.


_
 Un graphe G = (X, V) est symétrique si ( xi , x j )  V  ( x j , xi )  V , c’est-à-dire

si tout couple de sommets reliés est relié dans les deux sens. Exemple : le graphe de
la figure 1.1 n’est pas symétrique.
 Un graphe G = (X, V) est antisymétrique si ( xi , x j )  V / ( x j , xi )  V , c’est-à-

dire si tout arc (xi, xj) appartient à V, l’arc (xj, xi) en sens inverse n’existe pas. Ainsi
le graphe de la figure 1.1 n’est pas antisymétrique. Il résulte de la définition d’un
graphe antisymétrique que celui-ci ne contient pas de boucle.
 Un graphe est fortement connexe si entre tout couple de sommets xi, xj il existe un
chemin de xi à xj et un autre de xj à xi ; Ainsi le graphe de la figure 1.3 ci-dessous
est fortement convexe mais celui de la figure 1.1 ne l’est pas.

x2

x3

x1 x6

x4
x5
Figure 1.3

5.5 GRAPHE PARTIEL ET SOUS-GRAPHE


 Si dans un graphe on supprime un ou plusieurs arcs, on forme un graphe partiel du
graphe de référence. Exemple : le graphe formé des routes nationales est un graphe
partiel du graphe de toutes les routes d’un pays.
 Si dans un graphe on supprime un ou plusieurs sommets ainsi que les arcs qui y
arrivent et qui en partent, le graphe restant est un sous-graphe du graphe de
référence. Exemple : le graphe formé des routes d’une province est un sous-graphe
du graphe de toutes les routes du pays.
56

5.6 FERMETURE TRANSITIVE


Soit un graphe G = (X, Г), on a Г2(xi) = Г(Г(xi)) : c’est l’ensemble de tous les sommets
qui sont extrémités terminales d’arcs dont l’extrémité initiale est un sommet de Г(xi) ; ou encore
c’est l’ensemble des sommets accessibles de xi par un chemin de longueur 2.
De même Г3(xi) = Г(Г2(xi)) = Г(Г(Г(xi))) = ensemble des sommets accessibles de xi par un
chemin de longueur 3 ; etc.

La fermeture transitive de Г est une application  de X dans X définie par
 
( xi )  xi  ( xi )   2 ( xi )  ...   n ( xi ) . En d’autres mots ( xi ) est l’ensemble des sommets
accessibles à partir de xi par un chemin de longueur quelconque, xi étant compris dans cet
ensemble.
Exemple : soit X un ensemble d’individus, Г(xi) est l’ensemble des enfants de xi, Г2(xi) est

l’ensemble des petits enfants de xi. La fermeture transitive ( xi ) est l’ensemble de xi et tous ses
descendants.
Soit d(xi, xj) l’écart du sommet xi au sommet xj, c’est-à-dire la longueur du plus court

chemin de xi à xj. On posera d(xi, xj) = +∞ si x j  ( xi ) .

 xj sera un suivant de xi si ( xi , x j )  V ; xi sera un précédent de xj si ( xi , x j )  V ;

 xj est un descendant d’ordre α de xi si d(xi, xj) = α. Dans ce cas xi est alors un


ascendant d’ordre α de xj.

5.7 APPLICATION INVERSE Г-1


L’inverse de Г est une application Г-1 définie par :  1 ( x j )  xi / x j  ( xi ), c’est-à-

dire  1 ( x j ) est l’ensemble des précédents xj ou encore c’est l’ensemble des sommets xi tels

qu’il existe un arc (xi, xj).


 
 1 ( x j ) est constitué de xj et de tous les ascendants d’ordre fini de xj, ou encore  1 ( x j ) est

l’ensemble formé de xj et de tous les sommets d’où xj est accessible par un chemin.

5.8 CONCEPTS NON ORIENTES


Lorsqu’on étudie un graphe, il est parfois utile de faire abstraction de l’orientation des
arcs : c’est la théorie des graphes non orientés. Ainsi on appelle :
57

- Une arête, un arc sans flèche. On dit qu’il existe une arête entre deux sommets xi et xj s’il
existe un arc de xi à xj et/ou de xj à xi. Cest le cas par exemple sur la figure 1.3 pour les
couples (x1, x5), (x6, x5) etc..., mais pas pour le couple (x1, x6).
Une arête est généralement notée avec une lettre minuscule surmontée d’une barre. Ainsi
u = (xi, xj) est un arc allant de xi à xj, mais u  ( xi , x j ) est une arête entre xi et xj.

- Une chaîne, une séquence d’arêtes consécutives.


- Cycle, une chaîne fermée. C’est une chaîne finie qui part d’un sommet x i et aboutit à ce
même sommet.
- Chaîne simple : une chaîne dont les arêtes utilisées sont toutes différentes ; dans le cas
Contraire elle est dite « composée ».
- Chaîne élémentaire, une chaîne qui ne rencontre pas deux fois un même sommet.
- Graphe simplement connexe (on dit aussi graphe connexe) un graphe dont tout couple de
sommets est relié par une chaîne. Un graphe fortement connexe est connexe.
- Composante connexe du graphe G = (X, Г) et que l’on note Cxi, l’ensemble des sommets
pouvant être reliés à xi par une chaîne augmenté de xi lui-même. Les différentes
composantes connexes du graphe G = (X, Г) constituent une partition de X, c’est-à-dire,
si xi  X :

1°. C xi   ;

2°. C xi  C x j  C xi  C x j   ;

3°.  C xi  X ;
xi X

Un graphe est connexe s’il ne possède qu’une composante connexe.


Exercice.
Soit le graphe G ci-après :
v2 v3

v1 v5

v4
Figure 5.4
58

Questions Réponses
a. Combien des sommets y a-t-il ? a. 5
b. Combinaison d’arcs. Y a-t-il ? b. 6
c. Déterminer Г(vi) c. Г(v1) = {v2, v4}
Г(v2) = {v3}
Г(v3) = {v5}
Г(v4) = {v5}
Г(v5) = {v1}
d. Combien de circuits y a-t-il et quels sont- d. 2 : (v1 - v2 - v3 - v5 - v1)
ils ? (v1 - v4 - v5 - v1)
e. Non, car il existe de couples de sommets,
e. Ce graphe est-il complet ? comme (v1, v3), non reliés par un arc.
f. C’est un graphe antisymétrique.
f. Est-il symétrique ou antisymétrique ? g. Oui
g. Est-il simplement connexe ? h.
h. Donner la matrice booléenne v1 v2 v3 v4 v5
v1 0 1 0 1 0
correspondant à ce graphe.
v2 0 0 1 0 0
v3 0 0 0 0 1
v4 0 0 0 0 1
v5 1 0 0 0 0
i. d (v1, v5) = 2
i. Quelle est la valeur de d (v1, v5).
59

CHAPITRE 6 : QUELQUES APPLICATIONS LIEES A LA


STRUCTURE D’UN GRAPHE

6.1 RECHERCHE D’UN CHEMIN DE LONGUEUR MINIMUM


Le problème revient à déterminer une piste allant d’un sommet u vers un sommet v
dans un graphe G donné. Deux possibilités se présentent :
1°. On considère tous les chemins élémentaires allant de u à v et on choisit celui de longueur
minimum d(u, v).
2°. Pour des graphes complexes, on applique la théorie suivante :
- Marquer 0 le sommet u ;
- Marquer 1 tous les sommets ayant des arcs aboutissants, venant de u, puis i+1 tous les
sommets ayant des arcs aboutissants venant d’un sommet marqué i. Un sommet déjà
marqué ne peut plus l’être pour la deuxième fois.
- La longueur cherchée égale au numéro marqué sur v.
Exemple : Soit le graphe ci-après. Cherchez-en le chemin de longueur minimum allant de u à v.

2 3
1

4
2
1
1

0
u
2
2
v
4
1

3
Figure 6.1

D’où d (u, v) = 4 : c’est le chemin représenté par le tracé rouge.


60

6.2 ALGORITHME POUR TROUVER LA FERMETURE TRANSITIVE Г(xi)


1°. marquer 0 le sommet xi (origine) ;
2°. marquer α+1 tout suivant non marqué d’un sommet marqué α ;
Certains sommets ne pourront éventuellement pas être marqués. L’ensemble des sommets

marqués constituent donc la fermeture transitive ( xi ).
Cet algorithme permet :
- Le calcul des distances d’un sommet xi à un sommet xj, d (xi, xj).
- L’obtention d’un chemin de longueur minimum allant de xi à xj.
- L’obtention d’un circuit passant par xi qui soit de longueur minimum : il suffit de
déterminer d (xi, xj) et d (xj, xi).
NB : Le marquage peut se faire soit sur le graphe, soit encore sur la matrice associée.
Exemple : trouver la fermeture transitive du sommet xi du graphe ci-après :

x2 ^
x3 Г(x3)
1
2 x4
1 2
x6
f 0
x1
3

x5
11
2 3
x7 x8
x9

Figure 6.2


( x1 )  x1 , x2 , x3 , x4 , x5 , x7 , x8 , x9 
Le chemin de longueur minimum entre x1 et x5 comporte 3 arcs. C’est le chemin : x1–x3–x8 – x5
ou le chemin x1 –x7 –x4 – x5.
61

Matrice associée au graphe.

x1 x2 x3 x4 x5 X6 x7 x8 x9
x1 0 1 1 0 0 0 1 0 0
x2 0 0 1 0 0 0 0 0 0
x3 0 0 0 0 0 0 0 1 0
x4 0 0 1 0 1 0 0 0 0
x5 0 0 0 0 0 0 0 0 0
x6 0 0 0 0 1 0 0 0 1
x7 0 0 0 1 0 0 0 0 0
x8 0 0 0 1 1 0 0 0 1
x9 0 0 0 0 1 0 0 0 0


Donc ( x1 )  x1 , x2 , x3 , x4 , x5 , x7 , x8 , x9  .

6.3 RECHERCHE DES CIRCUITS DANS UN GRAPHE


Notons tout d’abord que les boucles sont des cas particuliers des circuits. Il est
facile de les détecter dans un graphe ou sur sa matrice incidente : elles sont représentées
par les 1 de la diagonale. Après avoir supprimé les boucles ainsi détectées, on applique
l’algorithme ci-dessous pour rechercher les autres circuits du graphe.
Algorithme de recherche des circuits.
a. Sur le tracé du graphe.
1°. Repérer le sommet i = 1 ;
2°. Les arcs du sommet i sont-ils tous aboutissants ou tous incidents ? Si oui aller en
3°, sinon reprendre en 1° avec le sommet i + 1.
3°. Effacer le sommet i ainsi que ses arcs adjacents. Puis reprendre en 1° avec le
sommet i + 1.
La procédure s’arrête lorsque tous les sommets non effacés ont à la fois des arcs incidents
et aboutissants. Si le graphe ne contient aucun circuit, la procédure efface tout le graphe.
Dans le cas contraire seuls les circuits subsistent.
Exemple : Chercher les circuits s’il y en a, du graphe suivant :
62

x1 x2

x4
x4
x10
x5
x3
x9
x8

x6
x7

Figure 6.3

Il reste deux circuits, à savoir : x4 - x3 - x8 - x4 et x6 - x5 – x10 - x6

x3 x5

x4 x6

x10
x8

b. Sur la matrice d’incidence du graphe


Considérer un sommet i = 1
1°. Répérer la case (i, i);
2°. La ligne i ou la colonne i ne contient-elle que des zéros ? Si oui, aller en 3°, sinon
reprendre en 1° avec le sommet i + 1 ;
3°. Barrer la ligne i et la colonne i, puis reprendre en 1° avec le sommet i + 1.
La procédure s’arrête d’elle-même par épuisement. Si le graphe ne contient pas de circuits,
toutes les lignes et colonnes seront barrées. Dans le cas contraire, la partie non barrée de la
matrice indique les circuits.
63

Exemple : chercher les circuits du graphe précédent à partir de sa matrice incidente.


x1 x2 x3 x4 X5 x6 x7 x8 x9 x10
x1 0 1 0 0 0 0 0 0 0 0
x2 0 0 0 0 0 0 0 0 0 0
x3 0 1 0 0 0 0 0 1 0 0
x4 1 0 1 0 0 0 0 0 0 0
x5 1 0 0 0 0 0 0 0 0 1
x6 0 0 0 0 1 0 0 0 1 0
x7 0 0 0 1 0 0 0 1 0 0
x8 0 0 0 1 0 0 0 0 0 0
x9 0 0 0 0 0 0 0 0 0 0
x10 0 0 0 0 0 1 0 0 1 0

Le graphe de la partie non barrée se présente comme suit :

x8
x5
x3
x6

x4
x10
64

CHAPITRE 7 : GRAPHES VALUES ET QUELQUES


APPLICATIONS ECONOMIQUES DE LA
THEORIE DES GRAPHES

7.0 GENERALITES SUR LES GRAPHES VALUES


Un graphe valué est un graphe dont les arcs sont munis d’une certaine valeur. A
chaque arc du graphe G(X, V) on associe une valeur v. Le système des valeurs associées
aux arcs du graphe peut être numérique ou non.
- Le système des valeurs non numériques représente généralement les diverses
structures dans un groupe.
- Le système des valeurs numériques permet de représenter une grande variété de
phénomènes concrets faisant intervenir les grandeurs comme celles de fréquence,
de probabilité, de coûts, de capacité, des flots, de distance, …
Nous n’aborderons dans ce qui suit que les graphes valués dans un système de
valeurs numériques.

Système des valeurs numériques dans un graphe valué.


Etant donné un graphe G(X,V). On associe à tout arc (xi, xj)  V un nombre
l ( xi , x j )  lij  0 appelé « longueur » représentant la grandeur étudiée (probabilité,

capacité, coût, distance, …).


Exemple : soit le graphe G ci-après :

x2 4
5 x3

G= 1
3 x5
x1
2
2
x4
Figure 7.1
65

Matrice associée à un graphe valué


A tout graphe valué G(X, V) on peut associer une matrice M dont le rôle est
analogue à celui de la matrice booléenne d’un graphe et qui est définie comme suit :
 
M  mij tel que

mij  0 si ( xi , x j )  V

lij  valeur associée à l ' arc ( xi , x j ) si ( xi , x j )  V

Exemple : matrice associé au graphe G de la fig. 7.1


x1 x2 x3 X4 x5
x1 0 5 1 2 0
x2 0 0 4 0 0
x3 0 0 0 3 0
x4 0 0 0 0 2
x5 0 0 0 0 0

On appelle « force » d’un graphe valué numérique la valeur maximum des valeurs des arcs
du graphe. Par exemple dans le graphe de la fig. 7.1. la force de G est 5.

7.1 RECHERCHE DE CHEMIN DE VALEUR OPTIMUM


Le problème est de trouver le ou les chemins allant d’un sommet S0 appelé
« source » ou « entrée » à un autre sommet Sp appelé « destination » ou « sortie » tel que la
valeur totale du chemin soit optimum c’est-à-dire l ij
 optimum (minimum ou
( xi , x j )

maximum).
Dans la théorie économique la recherche du chemin de valeur minimum ou
maximum permet de minimiser ou maximiser selon le cas, dans les problèmes de transport,
de vente…, le coût, la capacité, la distance, le flot, … Les valeurs lij représentent alors le
coût de transport, les capacités …
Pour résoudre ce problème de recherche de chemin de valeur optimum il existe
plusieurs algorithmes dont ceux de Ford et Bellman-Kalaba. Mais l’algorithme suivant
s’applique aisément pour les réseaux comportant un grand nombre de sommets.
Après avoir vérifié qu’il n’y a pas de circuit dans le graphe on peut donc appliquer
l’algorithme ci-après expliqué dans le cas de maximisation :
66

1°. Marquer λ0 = 0 le sommet x0 ;


2°. Rechercher un sommet xi non marqué λi ;
3°. Tester si tous les sommets de   ( xi ) sont marqués. Si oui passer au point 4°, sinon
revenir en 2°
4°. Marquer i le sommet xi tel que i  max ( j  c ji ) avec x j    ( xi ) ; reprendre en 2°.
j

Le marquage ainsi obtenu constitue une solution du problème, la marque λi de xi indiquant


la valeur maximale du chemin allant de x0 à xi.
Le même algorithme peut aussi servir pour la recherche d’un chemin de valeur
minimale si le graphe ne contient pas de circuit. Dans ce cas le 4ème point de l’algorithme
sera : « marque λi le sommet xi tel que i  min( j  c ji ) avec x j    ( xi ); puis reprendre
j

au point 2° ».
Exemple : soit le graphe ci-après. Rechercher dans ce graphe le chemin des valeurs
maximale et minimale allant de x0 à xn .
a. Recherche du chemin de valeur maximale

9 15
5
3
3 20
2
3
7 13 4 11
11
0 5
31
x0 13
9 7
8 8 4
21
4
2
3 9
4 5 33
4 3
xn
4 5
16
2 8
8

Figure 7.2
67

Le chemin de valeur maximale allant de x0 à xn est tracé en rouge sur le graphe : sa valeur
est 33. Le marquage à chaque sommet exprime la valeur maximale du chemin allant de x0
à ce sommet.
b. Reprenons le même graphe pour la recherche du chemin de valeur minimale.
12
9
5
3
12
2 3
3 7
10 4 11
11
0 5 13
x0 8
9 7
8 8 4
4 15 2
3 9
4 5 15
4 3
xn
4 5
13
2 8
6
Figure 7.3

La valeur minimale des chemins allant de x0 à xn est 15.


Exercice.
Soit un réseau de villes A, B, C, … et des routes les reliant entre elles. Un voyageur veut se
rendre de la ville A vers la ville G. Trouver le chemin qu’il peut parcourir afin de
minimiser la distance.
68

C
30
100

B 70 D

60
50 30 80 150 130
45 35
140
A G
360
95
180

60
F
80
E

Figure 7.4

7.2 PROBLEME DU FLOT MAXIMAL


7.2.1 Définition
On appelle « réseau de transport » un graphe fini sans boucle où, à chaque
arc v, est associé un nombre c(v) ≥ 0 a appelé « capacité de l’arc » et dans lequel il
existe deux sommets particuliers x0 et xn tels que :
1°.   ( x0 )  , c’est-à-dire x0 n’a pas d’antécédent. On l’appelle « entrée ou source
du réseau ».
2°. ( xn )   , c’est-à-dire x n n’a pas de suivant ; on l’appelle « sortie ou destination
du réseau ».
Soient V  ( xi ) l’ensemble des arcs incidents intérieurement à xi et V  ( xi )
celui des arcs incidents extérieurement à xi. On dit qu’un arc v est « incident à un
sommet xi vers l’extérieur » si xi est l’extrémité initiale de v et si l’extrémité terminale
de v est différente de xi. Un arc v est « incident à un sommet xi vers l’intérieur » si xi
est l’extrémité terminale de v et si l’extrémité initiale de v est différente de xi.
On peut donc dire que V  ( xi ) est l’ensemble des arcs venant des sommets

autres que xi mais ayant xi comme extrémité terminale, tandis que V  ( xi ) est
l’ensemble des arcs partant de xi vers d’autres sommets.
69

Un flot  pour un réseau de transport est une quantité  (v) associée à chaque
arc v du réseau telle que :
1°.  (v)  0 v V (V = ensemble des arcs du réseau) ; c’est-à-dire que le flot ne peut
jamais être négatif, il ne peut être que positif ou nul ;
2°.  (v)   (v), x i  x 0 , xi  x n
vV  ( xi ) vV  ( xi )

Cette propriété exprime que le flot est conservatif, c’est-à-dire que le flot respecte
la loi de Kirchhoff en tout sommet autre que x0 et xn : « Tout flot qui entre dans un
sommet doit en sortir ».
_
3°.  (v)  C (v) v V : Cela signifie que le flot dans un arc doit être inférieur ou égal
à la capacité de cet arc. Si  (v)  C(v) on dit que l’arc est saturé.  (v) peut être
assimilé à une quantité de matière qui passe dans l’arc v et qui ne doit jamais
dépasser la capacité C(v) de cet arc.
4°.   (v )    (v )   0
vV  ( x0 ) vV  ( xn )

Le nombre  0 représente la quantité de matière qui sort de x0 vers le réseau et arrive du


réseau en xn.
Un flot est dit complet ssi tout chemin de x0 à xn du réseau comporte au moins
un arc saturé.

7.2.2 Exemple d’un réseau de transport


Certains ports de chargement A1, A2, …, Am disposent respectivement des
tonnages x1, x2, …, xm d’un produit que d’autres ports B1, B2, …, Bn réclament en
quantités y1, y2, …, yn. Chaque liaison maritime entre un port Ai et un port Bj a une
capacité limitée Cij. On cherche à satisfaire au mieux toutes les demandes et à organiser les
expéditions.
A cette fin, on construit un réseau de transport en reliant une entrée A aux m
sommets Ai par des arcs de capacité xi et les n sommets Bj à une sortie B par des arcs de
capacité yj. En appelant  j le tonnage total arrivant en un port Bj et i celui correspondant

aux expéditions des Ai, rij étant la quantité transportée de Ai à Bj le tonnage global sera
m n
maximal si R   rij est max imal avec 0  rij  Cij , i  1, 2, ..., m ; j  1, 2, ..., n .
i 1 j 1
70

m
et r
i 1
ij   j  y j , j  1, 2, ..., n

r
j 1
ij   i  xi , i  1, 2, ..., m

Ajoutons que certaines capacités Cij peuvent être nulles par hypothèse car aucune liaison
maritime entre Ai et Bj n’existe.
Ce problème peut être représenté par le graphe ci-après :

A1 C11 B1

C12 C21
x1 Cm1

C13 B2 y2 y1
A2 C22
Cm2
A B3 B
x2 C23
C2n Cm3 y3
yn
C1n
xm

Am Cmn Bn
Figure 7.5
La quantité rij à faire passer de Ai à Bj s’appelle « flot ». Le problème consiste à maximiser
m n
le flot global R   rij de transport soumis à des capacités limitées.
i 1 j 1

7.2.3 Coupe et valeur d’une coupe.


Soit E l’ensemble de touts les sommets dans le réseau de transport et F un
ensemble des sommets contenant la sortie xn et ne contenant pas x0. L’ensemble V  (F )
des arcs incidents vers l’intérieur à F est une coupe du réseau.
71

Exemple : Soit le réseau représenté par le graphe ci-dessous.

x4

x8
x1

x5 F

x0 x2 x9
xn

x3 x6

x10

x7

Figure 7.6
F = {x2, x3, x6, x9, xn}
V  (F ) = {(x1, x2), ( x0, x2), (x5, x2), (x0, x3), (x5, x9), (x10, x9), (x8, xn), (x10, xn)}

V  (F ) est la coupe correspondant à F. Soit F l’ensemble des sommets du réseau


n’appartenant pas à F.
En notant encore par C ( F , F ) une coupe dans un réseau correspondant à F et

F . On peut dire que la coupe C ( F , F ) détermine une partition de tous les sommets en

deux sous ensembles F et F tels que xn  F et x0  F . La valeur de la coupe C ( F , F ) est

par définition la somme des capacités des arcs allant de F à F (avec x0  F et xn  F ).

Donc, si l’on appelle  (F ) la valeur de la coupe C ( F , F ) , alors :

 ( F )   C (v)    C( x , x
i j )
vV  ( F ) xi F x j F

Comme F contient la sortie toute unité de matière allant de x0 à xn emprunte au moins une
fois un arc de V  (F ). Donc quel que soit un flot  et une coupe V  (F ) on a :

 ( xn )  C (V  ( F ))
72

S’il existe un flot  0 ( xn ) et une coupe V  ( F ) telle que  0 ( xn )  C (V ( F )) alors le flot

 0 ( xn ) a donc une valeur maximale et la coupe V une capacité minimale ; d’où le


théorème suivant :
Théorème de Ford-Fulkerson ou théorème de min-cut, max-flow :
« Dans un réseau de transport donné, la valeur maximale d’un flot est égale à la capacité
minimale d’une coupe : max  0  min C ( V  ( F ))
x0 F , xn F

7.2.4 Recherche du flot maximum. Algorithme de Ford-Fulkerson.


L’algorithme de Ford-Fulkerson permet d’obtenir le maximum d’un flot à
travers un réseau. Il se justifie par le théorème précédent. Il s’énonce comme suit :
1°. Faire passer un flot au jugé (flot initial ou flot à volonté). Ce flot initial doit être borné à
la capacité des arcs et respecter la loi de Kirchhoff.
2°. Améliorer le flot initial (flot ou jugé) pour qu’il devienne complet. Si le flot n’est pas
complet il existe dans le graphe au moins un chemin n’ayant pas d’arc saturé allant de
l’entrée à la sortie. On augmente le flot de ce chemin d’une quantité telle qu’un arc au
moins soit saturé. On recommence l’opération jusqu’à ce que tous les chemins
contiennent chacun au moins un arc saturé et l’on obtient ainsi un flot complet.
3°. A partir d’un flot complet marquer les sommets du graphe de la façon suivante :
a. Marquer l’entrée x0 du signe + ;
b. -Marquer d’une marque +xi tout sommet xj non marqué d’un arc (xi, xj) non saturé
tel que xi est marqué ;
-Marquer d’une marque -xi tout sommets xj non marqué d’un arc (xj, xi)
transportant un flot non nul pour lequel l’extrémité xi est marquée.
c. Si, par cette procédure, on parvient à marquer la sortie, le flot n’est pas maximal.
On considère alors une chaîne de points marqués (+ ou/et -) allant de l’entrée à la
sortie et la séquence de sommets qui la composent. (Une chaîne est une suite
ordonnée d’arcs adjacents d’orientation quelconque). Si un arc placé dans cette
séquence est orienté dans l’ordre de la séquence, on augmente le flot de cet arc ; s’il
est orienté en sens inverse, on diminue le flot de cet arc. La quantité à augmenter ou
à retrancher au flot des arcs de la séquence est choisie de telle sorte qu’au moins un
arc soit saturé et que les flots des arcs soient tous positifs ou nuls.
Si en appliquant une nouvelle fois la procédure de marquage décrite ci-dessus, on n’arrive
pas à marquer la sortie alors on a trouvé un flot global maximal. Pour le calculer, on réalise
73

une coupe en constituant l’ensemble F des sommets marqués et l’ensemble F des sommets
non marqués. La valeur de cette coupe est la valeur maximale du flot.
Exemple : Trouver le flot maximal du réseau de transport représenté par la figure 4.3 ci-
dessous où les nombres indiqués à côté des flèches des arcs représentent les capacités
respectives.
6
4 2
1 2 8 9 8
6
9
44-
5 1
8
5 3
0 2 6
9 11
3 2
1
7 7
14 6
6
44 12
8
3 8 11
x3 10
7
2 9
Figure 7.7
La recherche du flot complet sera faite sur les matrices des capacités de la manière
suivante. Soit la matrice ci-dessous dont les capacités k(i, j) sont celles de la figure 7.7.
k (i, j)
0 1 2 3 4 5 6 7 8 9 10 11
0 0 6 8 14 0 0 0 0 0 0 0 0
1 0 0 4 0 6 2 0 0 0 0 0 0
2 0 0 0 0 0 0 7 0 0 3 0 0
3 0 0 1 0 0 0 8 2 0 0 0 0
4 0 0 0 0 0 8 0 0 2 0 0 0
5 0 0 0 0 0 0 0 0 9 1 6 0
6 0 5 0 0 0 0 0 11 0 0 0 0
7 0 0 0 0 0 0 0 0 0 4 9 2
8 0 0 0 0 0 0 0 0 0 3 0 9
9 0 0 0 0 0 0 7 0 0 0 8 6
10 0 0 0 0 0 0 0 0 0 0 0 12
11 0 0 0 0 0 0 0 0 0 0 0 0
74

Nous faisons passer un flot au jugé sur le chemin 0 - 1- 2 -6 - 7- 11. Dans la matrice nous
encerclons les capacités de ce chemin et lançons un flot égal à la plus petite valeur des
capacités encerclées. Nous lançons donc le flot de valeur 2 sur le chemin indiqué. Les
capacités sur ce chemin deviennent k ((i1,) j )  k (i, j )  f (i, j )  k (i, j )  2 . La matrice des

capacités k ((i1,) j ) est donc celle du tableau ci-après

k ((i1,) j )

0 1 2 3 4 5 6 7 8 9 10 11
0 4 8 14
1 2 6 2
2 5 3
3 1 8 2
4 8 2
5 9 1 6
6 5 9
7 4 9
8 3 9
9 7 8 6
10 12
11

Sur la matrice des capacités k ((i1,) j ) on repère le chemin non saturé 0 - 1 - 2- 6 - 7- 9- 11 sur

lequel on fait passer un flot de valeur 2 (plus petite capacité du chemin considéré). On
retranche ce flot aux capacités du chemin considéré et l’on obtient la matrice des capacités
k ((i2, )j ) telle que :

k ((i2, )j )  k ((i1,) j )  2  capacité sur le che min considéréou  k ((i1,) j )  autre capacité .
75

k ((i2, )j )

0 1 2 3 4 5 6 7 8 9 10 11
0 2 8 14

1 6 2

2 3 3

3 1 8 2

4 8 2

5 9 1 6

6 5 7

7 2 9

8 3 9

9 7 8 4

10 12

11
k ((i3, )j )  k ((i2, )j )  2 si la capacité est sur le che min indiqué .

0 1 2 3 4 5 6 7 8 9 10 11
0 8 14

1 4 2

2 3 3

3 1 8 2

4 8 0

5 9 1 6

6 5 7

7 2 9

8 3 7

9 7 8 4

10 12

11
76

k ((i4, )j )  k ((i3, )j )  2 .

0 1 2 3 4 5 6 7 8 9 10 11
0 6 14

1 4 2

2 1 3

3 1 8 2

4 8

5 9 1 6

6 5 5

7 9

8 3 7

9 7 8 2

10 12

11
k ((i5, )j )  k ((i4, )j )  3 .

0 1 2 3 4 5 6 7 8 9 10 11
0 3 14

1 4 2

2 1 0

3 1 8 2

4 8

5 9 1 6

6 5 5

7 9

8 3 7

9 7 5 2

10 9

11
77

k ((i6, )j )  k ((i5, )j )  1 .

0 1 2 3 4 5 6 7 8 9 10 11
0 2 14

1 4 2

2
3 1 8 2

4 8

5 9 1 6

6 5 4

7 8

8 3 7

9 7 5 2

10 8

11
k ((i7, )j )  k ((i6, )j )  4 .

0 1 2 3 4 5 6 7 8 9 10 11
0 2 10

1 4 2

2
3 1 4 2

4 8

5 9 1 6

6 5

7 4

8 3 7

9 7 5 2

10 4

11
78

k ((i8, )j )  k ((i7, )j )  2 .

0 1 2 3 4 5 6 7 8 9 10 11
0 2 8

1 4 2

2
3 1 4

4 8

5 9 1 6

6 5

7 2

8 3 7

9 7 5 2

10 2

11
k ((i9, )j )  k ((i8, )j )  2 .

0 1 2 3 4 5 6 7 8 9 10 11
0 2 6

1 2 2

2
3 1 2

4 6

5 9 1 4

6 3

7 2

8 3 7

9 7 5 2

10
11
79

k ((i10, j))  k ((i9, )j )  2 .

0 1 2 3 4 5 6 7 8 9 10 11
0 2 4

1 2

2
3 1

4 6

5 7 1 4

6 1

7 2

8 3 5

9 7 5 2

10
11

Sur la matrice k (10) , on a encerclé les capacités des sommets qu’on peut atteindre à partir
de 0 par des chemins non saturés. Ces sommets sont 2 et 3. Il n’existe plus de chemin non
saturé qui permet d’atteindre la sortie 11. On a donc trouvé un flot complet. Ce flot peut
être calculé en faisant : f (i, j )  k (i, j )  k ((i10, j)) . Ce calcul donne le tableau ci-après :
80

0 1 2 3 4 5 6 7 8 9 10 11
0 6 6 10

1 4 4 2

2 7 3

3 0 8 2

4 2 2

5 2 0 2

6 4 11

7 4 7 2

8 0 4

9 0 3 4

10 12

11

Le graphe avec les flots de ce tableau se présente comme celui de la figure 7.8 ci-après sur
laquelle on a appliqué la technique de marquage comme expliquée précédemment. Les arcs
saturés sont indiqués en rouge.

+1

-2 4+2 4 2
+5
1 2 2+2 2+2 8
6
+4 4+2
4-2
4 0
6+2
5 0 +8
0 2 4
+ +3 9 11
3 2
0
7 0
10 2
6
4 12
3
3 8 11
+0 10
7
2 7
Figure 7.8
81

On a pu marquer la sortie : le flot total n’est donc pas optimal. Considérons la séquence
suivante des sommets marqués : 0-2-1-4-5-8-11. En considérant les capacités des arcs de
cette séquence, on augmentera de 2 le flot des arcs dirigés dans le sens du chemin et l’on
diminuera de 2 les autres arcs du chemin. Ainsi, (0, 2) passera de 6 à 8, (2, 1) de 4 à 2,
(1, 4) de 4 à 6, (4, 5) de 2 à 4, (5, 8) de 2 à 4, (8, 11) de 4 à 6. Ainsi les arcs (0, 2) et (1, 4)
deviennent saturés tandis que l’arc (1, 2) ne l’est plus. Le graphe et les flots
deviennent comme ceux de la figure 7.9 ci-après:

-2 6 4 2
1 8
6 4 4
2 4 2 6
5 0 0
0 2 4
8 +3 9 11
+ 3
0 2
7 -1 0
10 2
6 4 12
3
3 8 11
+0 10
2 7
7
Figure 7.9

Sur le graphe de la figure 7.9 il n’est plus possible de marquer la sortie. On a donc trouvé
un flot global maximal. Pour le calculer réalisons la coupe dont les sommets marqués
forment l’ensemble F et les sommets non marqués, l’ensemble F :
F  0,1, 2, 3, 6 ; F  4, 5, 7, 8, 9,10,11 . Donc la valeur de la coupe est alors

(F )  C(F , F )    k(x , x i j )  6  2  3  2  11  24


xi F x j F

7.3 PROBLEME D’AFFECTATION OPTIMALE. ALGORITHME


HONGROIS.
Soient n ouvriers 01, 02, …, 0n et n postes p1, p2, …, pn. A toute affectation (0i,
pj) est attachée une valeur Cij ≥ 0, (i, j = 1, 2, …, n). Les valeurs Cij attachées aux
82

affectations peuvent être suivant la nature du problème considéré comme les coûts, des
durées etc. Certains Cij peuvent être infinis, ce qui signifie que l’affectation correspondante
est impossible. Affecter les n ouvriers aux n postes de manière que tous les ouvrier aient
chacun un poste et un seul et que chaque poste soit affecté à un et un seul ouvrier, ceci de
telle sorte que la valeur totale des affectations soit minimale, tel est l’énoncé du problème
d’affectation. L’algorithme hongrois permet de résoudre ce problème.
La méthode hongroise s’appuie sur le lemme suivant : on ne change pas la ou
les solutions optimales d’un problème d’affectation en diminuant ou augmentant d’une
même quantité λ tous les éléments d’une même ligne (ou d’une même colonne) de la
matrice Cij. Une telle opération diminue ou augmente de λ la valeur totale des affectations,
mais ne change pas la solution optimale.
L’algorithme hongrois se déroule en cinq phases :
Phase I : Obtention des zéros.
A tous les éléments d’une même colonne de la matrice des Cij enlever le plus
petit élément de la colonne ; puis dans la matrice obtenue enlever à tous les éléments d’une
même ligne le plus petit élément de la ligne. De cette façon, on est certain d’obtenir une
matrice C ij(1) ayant au moins un zéro par ligne et par colonne.

Exemple : Soit le tableau des Cij ci-après, exprimant le coût d’une affectation de Xi à Yj.
Chercher les affectations de coût minimum.
Y1 Y2 yY3 Y4 Y5
En appliquant la procédure de la phase I on enlèvera 6 à
X1 7 3 5 7 10
la colonne (1), 3 à la colonne (2), 1 à la colonne (3), 2 à la
X2 6 ∞ ∞ 8 7
colonne 4 et 7 à la colonne (5). Il vient le tableau ci-
X3 6 5 1 5 ∞
dessous :
X4 11 4 ∞ 11 15
X5 ∞ 4 5 2 10
(a)
(1) (2) (3) y(4)
5 (5) On appliquera la même procédure sur les éléments d’une
(1) 1 0 4 5 3 même ligne du tableau (b) ci contre et l’on obtient le
(2) 0 ∞ ∞ 6 0 tableau (c).
(3) 0 2 0 3 ∞
(4) 5 1 ∞ 9 8
(5) ∞ 1 4 0 3
(b)
83

(1) (2) (3) y(4)


5 (5) (1) (2) (3) y(4)
5 (5)
(1) 1 0 4 5 3 (1) 1 0 4 5 3

(2) 0 ∞ ∞ 6 0 (2) 0 ∞ ∞ 6 0
X
(3) 0 2 0 3 ∞ (3) 0
X 2 0 3 ∞
(4) 4 0 ∞ 8 7 (4) 4 0
X ∞ 8 7
(5) ∞ 1 4 0 3 (5) ∞ 1 4 0 3
(c) (d)

Phase II : Recherche d’une solution optimale.


Avec les zéros de C ij(1) , on cherche à former une solution de valeur zéro, c’est-à-dire une

affectation où tous les C ij(1) sont des zéros. Si cela est possible, on a trouvé la solution

optimale, sinon on passe à la phase III. Pour rechercher cette solution nulle, on considère
d’abord une des lignes qui a le moins de zéros, on encadre l’un des zéros de cette ligne,
puis on barre les zéros qui se trouvent sur la même ligne ou la même colonne que le zéro
encadré. On procède de même successivement pour toutes les lignes.
Dans notre exemple sur le tableau (d), on a d’abord encadré C12(1 ) et barré C 42
(1)
,

encadré C 54(1) , encadré C 21


(1) (1)
et barré C 25 et C 31(1) , encadré C 33(1) . On voit qu’on n’a pas pu
obtenir une affectation de valeur nulle car la 4ème ligne et la 5ème colonne n’ayant pas de
zéro encadré, on est obligé d’affecter X4 à Y5, ce qui entraîne un coût C 45
(1)
 7.

Phase III : obtention d’un ensemble minimal de lignes et colonnes contenant tous les
zéros.
Opérer pas à pas comme suit :
a. Vérifier que le couplage obtenu en phase II est maximal. Dans le cas contraire,
employer l’algorithme de Ford-Fulkerson comme dans le cas d’affectation simple
pour obtenir un couplage maximal.
b. Marquer d’une croix toutes les lignes qui ne contiennent aucun zéro encadré.
c. Marquer toute colonne qui a un ou plusieurs zéros barrés dans une des lignes
marquées.
d. Marquer toute ligne qui a un zéro encadré dans une colonne marquée.
e. Répéter c et d jusqu’à ce qu’il ne soit plus possible d’obtenir ainsi de nouvelles
lignes ou colonnes marquées.
84

Ce procédé permet d’obtenir un ensemble de lignes et/ou colonnes en nombre


minimal qui contient tous les zéros encadrés ou rayés.
Dans notre exemple, on a d’abord marqué la ligne (4) (voir tableau (d)), puis la
colonne (2) et la ligne (1). On n’a pas pu pousser plus loin.

Phase IV : Suite de la phase III.


Tracer un trait sur toute ligne non marquée et un trait sur toute colonne
marquée. Ceci permet d’obtenir d’une façon certaine l’ensemble des lignes et/ou des
colonnes en nombre minimal qui contient tous les zéros.
Sur le tableau (d) il faut tracer des traits sur les lignes (2), (3) et (5) et sur la
colonne (2).

Phase V : Déplacement éventuel de certains zéros.


Considérant le tableau partiel des éléments qui ne sont pas traversés par des
traits et prendre le plus petit nombre de ce tableau partiel, enlever ce nombre aux colonnes
non traversées par un trait et l’ajouter aux lignes traversées par un trait. Ceci revient à
enlever ce nombre à la partie non traversée par des traits et à l’ajouter aux éléments se
trouvant à l’intersection de deux traits et à laisser le reste invariable.
Sur le tableau (d) il faut retrancher 1 aux colonnes (1), (3), (4), (5) et ajouter
ensuite 1 aux lignes (2), (3) et (5) : on obtient le tableau (e).
(1) (2) (3) y(4)
5 (5)
(1) 0 X0 3 4 2
=
(2) X0 ∞ ∞ 6 0
>
=
(3) X0 -3 0 3 ∞
> 5
=
(4) -
>3 /0 ∞ 7 6
5
(5) -∞ 92 4 0 3
/ ≤
5
9 (e)
/ λ
≤ ≤
9
λ
≤ 5

λ /
5
≤ 3
/ .
5
3
/
.
3
.
85

Phase VI : Solution optimale obtenue ou établissement d’un nouveau cycle.


On reproduira la phase II sur le nouveau tableau C ij( 2 ) obtenu en phase V. Si une

solution optimale a été obtenue on s’arrête, sinon on continue jusqu’à ce qu’une phase II
donne une solution optimale. Cette solution optimale peut ne pas être unique.
( 2)
Sur le tableau (e) on a encadré C42 et barré C12( 2) , encadré C54( 2) , encadré C11( 2)
( 2)
et barré C21 et C31( 2) , encadré C 25
( 2)
, encadré C 33(1) . Chaque ligne et chaque colonne
contiennent un zéro encadré : une solution optimale est donc trouvée avec
C11( 2)  C 25
( 2)
 C33
( 2)
 C 42
( 2)
 C54
( 2)
 0 . Cette solution optimale donne, en revenant au tableau
initial : C11 + C25 + C33 + C42 + C54 = 7 + 7 + 1 + 4 + 2 = 21. Le couplage à valeur
minimale est représenté par le schéma ci-dessous :

X1 Y1
X2 Y2
X3 Y3
X4 Y4
X5 Y5
Figure 7.10
Remarques :
1. S’il y a plus d’individus que des jobs ( m  n ) on introduira m  n jobs fictifs pour
lesquels tous les individus ont la même qualification ou une même valeur des C ij = 0. Il
est clair que toute solution au problème modifié donne une solution au problème
original. En effet, si un individu est affecté à un job fictif dans le problème modifié, il
n’est pas affecté du tout dans le problème original et de cette façon le principe
d’optimalité est préservé.
2. Dans certains problèmes d’affectation on se propose de rechercher l’affectation
donnant le maximum de la fonction économique. Dans ce cas on opère de la façon
suivante :
a) On recherche le maximum des Cij dans la matrice des valeurs Cij, soit C = max Cij.
b) On calcule les valeurs Cij telles que Cij  C  Cij .

Il est évident que le maximum du problème d’affectation formé avec les Cij correspond
au minimum de celui formée avec les Cij . On recherche donc la solution optimale du
tableau formé avec les Cij .
86

7.4 PROBLEME DE TRANSPORT. ALGORITHME DE STEPPING-


STONE (MARCHE PIED-ESCALIER).
Soit le problème de transport ci-après. Des marchandises doivent être
transportées d’un ensemble des centres de production vers un ensemble de centres de
distribution. Soient P1, P2, …, Pm les centres de production et a1, a2, …, am les quantités
produites dans ces centres respectivement. Soient encore B1, B2, …, Bn les centres de
distribution et d1, d2, …, dn les quantités minimums demandées dans ces centres. Soit cij le
coût de transport d’une unité de marchandise du centre Pi au centre Bj.
Le problème est d’organiser le transport des marchandises de la manière la
moins coûteuse possible. Si l’on appelle xij la quantité transportée de l’origine Pi à la
destination Bj, le tableau formé avec les quantités xij (i = 1, …, m, j = 1, …, n) est appelé
« matrice des débits ou schéma de transport ». Signalons que ce problème a été présenté
dans le chapitre 2 et peut être traité à l’aide de la programmation linéaire.
m n
Supposons que  ai   d j . Dans ces conditions il y a lieu de trouver une
i 1 j 1

m
solution telle que : x
i 1
ij  d j ( j  1, 2, ..., n)

x
j 1
ij  ai (i  1, 2, ..., m)

m n
Le coût d’expédition sera alors déterminé par la fonction  c
i 1 j 1
ij xij

Le graphe correspondant si m = 4 et n = 5 se présente comme suit :

P1 B1

P2 B2

P3 B3

P4 B4

B5
Figure 7.11
87

Un tel problème peut aussi être résolu par l’algorithme de Stepping-Stone dû au


mathématicien américain G. Dantzig.
Exemple :
Dans 3 usines A, B et C on dispose de certains tonnages d’un produit ; ces tonnages sont
respectivement 100, 120 et 120. Le produit est livré à 5 magasins 1, 2, 3, 4 et 5 qui doivent
recevoir respectivement 40, 50, 70, 90 et 90 tonnes. Le coût de transport d’une certaine
unité du produit est donné par le tableau qui suit. On se propose de déterminer un plan
(schéma) de transport des 340 tonnes de telle sorte que le coût total de transport de ces 340
tonnes soit minimum.

(1) (2) (3) y(4)


5 (5)
(A) 4 1 2 6 9

(B) 6 4 3 5 7
(C) 5 2 6 4 8
Dde 40 50 70 90 90
ss
L’algorithme de Stepping-Stone part de la construction d’une première solution
de base en utilisant une règle dite « règle du coin nord-ouest ».

(1) (2) (3) y(4)


5 (5)
(A) 40 50 10 100

(B) 60 60 120
(C) 30 90 120
40 50 70 90 90

On part du coin nord-ouest du tableau des affectations. A l’intersection de la 1ère ligne et de


1ère colonne, on porte le plus petit des nombres représentant la disponibilité (100) et la
demande (40). On porte donc 40. On complètera donc la 1ère ligne (la 1ère colonne si la
ligne est saturée) jusqu’à saturation de la disponibilité (ou de la demande). Ceci nous
conduit donc à prendre : x11 = 40 ; x12 = 50 ; x13 = 10 ; x14 = x15 = 0. Nous saturerons
ensuite la demande dans la 3ème colonne, puis la disponibilité dans la 2ème ligne, ce qui
donnera x21 = x22 = 0, x23 = 60 ; x24 = 60 ; x25 = 0. Saturons maintenant la demande dans la
88

4ème colonne, puis la disponibilité dans la 3ème ligne, soit x31 = x32 = x33 = 0 ; x34 = 30 ; x35
= 90. On a ainsi réalisé une solution de base. Le coût global en est :
Z = (40)(4) + (50)(1) + (10)(2) + (60)(3) + (60)(5) + (30)(4) + (90)(8) = 1550.
Nous allons maintenant en partant de cette solution en rechercher une nouvelle
qui correspond à un coût global moins élevé, mais qui contiendra encore au moins 8
variables à valeur nulle. Pour ce faire, nous supposerons chaque fois que l’on affecte une
unité du produit dans une case à variable précédemment nulle ; il faudra, pour garder
l’équilibre, retrancher ou augmenter d’une unité dans les cases déjà affectées de ligne et de
colonne correspondantes.

40 50 10 40 50 10
+1 +1
-1 -1
60 60 60 60
+1 -1 +1 -1
30 90 30 90
+1 -1

(a) (b)
 14  6235  2 15  9  8  4  5  3  2  1

40 50 10 40 50 10

-1 +1 -1 +1
60 60 60 60
+1 -1 +1 -1
30 90 30 90

(c) (d)
 21  6  4  2  3  1  22  4  1  2  3  2
89

40 50 10 40 50 10
-1 +1
60 60 60 60
-1 +1 -1 +1
30 90 30 90
+1 -1 +1 -1

(e) (f)
 25  7  8  4  5  2  31  5 4 235 4 1

40 50 10 40 50 10
-1 +1
60 60 60 60

-1 +1 -1 +1
30 90 30 90

+1 -1 +1 -1

(g) (h)
 32  2  1  2  3  5  4  1  33  6  4  5  3  4
Pour réaliser une solution plus avantageuse supposons que l’on affecte une
unité dans la case (1,4) : 1ère ligne et 4ème colonne, tableau (a). Il faut alors en retirer une de
la case (1,3), en ajouter une dans la case (2,3) et finalement en retirer une de la case (2,4).
Cet échange circulaire d’une unité fait varier le coût total d’une quantité  14 (case 1,4).
Les  ij dont il est question constituent les coûts marginaux unitaires quand on passe d’une

base à l’autre.  ij est facilement évalué en consultant le tableau des coûts unitaires cij.

Après calcul des  ij pour toutes les cases à variable nulle on peut remarquer

que l’échange qui fait diminuer le coût est tel que  rk  min  ij ,  ij  0. Ici c’est l’échange
i, j

correspondant à  25  2 . Mais au lieu de déplacer une seule unité, déplaçons le plus


grand nombre d’unités possibles. Pour cela considérons dans l’escalier (cases intervenant
dans l’échange) la plus petite quantité correspondant à une case où se trouve une quantité
-1. Le tableau (e) nous montre que c’est la case (2,4) où se trouve le nombre 60.On portera
donc 60 dans la case (2,5), quantité que l’on enlèvera de la case (2,4) et, pour rétablir les
90

disponibilités et demandes imposées, on inscrira 90 au lieu de 30 dans la case (3,4) et 30 au


lieu de 90 dans la case (3,5). La Solution devient :
(1) (2) (3) y(4)
5 (5)
(A) 40 50 10 100
(B) 60 60
120
(C) 90 30 120
40 50 70 90 90

Le coût correspondant est


Z = (40)(4) + (50)(1) + (10)(2) + (60)(3) + (60)(7) + (90)(4) + (30)(8) =1430.
C’est un résultat prévisible puisque l’échange d’une unité diminuant le coût global de 2,
l’échange de 60 le diminue de 120 ; d’où le coût total passe de 1550 à 1550 – 120 = 1430.
Nous allons répéter sur cette nouvelle solution les calculs précédents en
examinant le tableau du schéma de transport ci-dessus. On obtient sans présenter les
tableaux pour le calcul des  ij :

 14 = 6 – 4 + 8 – 7 + 3 – 2 = 4;  15 = 9 – 7 + 3 – 2 = 3 ;  21 = 6 – 4 + 2 – 3 = 1;
 22 = 4 – 1 + 2 – 3 = 2;  24 = 5 – 4 + 8 – 7 = 2;  31 = 5 – 4 + 2 – 3 + 7 – 8 = -1;
 32 = 2 – 1 + 2 – 3 + 7 – 8 = -1;  33 = 6 – 3 + 7 – 8 = 2.
On a le choix entre  31  1 et  32  1 .

Choisissons par exemple  31. Prenons un nombre d’unités égal au plus petit nombre
figurant dans les cases où il y a une quantité -1 : ces cases sont (1,1) renfermant le nombre
40, (2,3) renfermant 60 et (3,5) renfermant 30. On échangera donc 30 unités à partir de la
case (3,1). Ceci donne la solution du tableau ci-après :
(1) (2) (3) y(4)
5 (5)
(A) 10 50 40 100

(B) 30 90 120
(C) 90 120
40 50 70 90 90

Z = (10)(4) + (50)(1) + (40)(2) + (30)(3) + (90)(7) + (30)(5) + (90)(4) = 1400.


Calculons une nouvelle fois les  ij correspondant au tableau précédent :

 14 = 6 – 4 + 5 – 4 = 3 ;  24 = 5 – 4 + 5 – 4 + 2 - 3 = 1 ;
91

 15 = 9 – 7 + 3 – 2 = 3 ;  32 = 2 - 1 + 4 – 5 = 0 ;
 21 = 6 – 4 + 2 – 3 = 1 ;  33 = 6 – 5 + 4 – 2 = 3 ;
 22 = 4 – 1 + 2 – 3 = 2 ;  35 = 8 – 7 + 3 – 2 + 4 - 5 = 1.
Aucun échange ne peut plus diminuer le coût puisque tous les  ij sont positifs ou nuls. On

en conclut qu’il est impossible d’obtenir une meilleure solution. Par contre, il y a une
solution équivalente puisque  32  0 . Un échange avec  32 donne la solution du tableau
suivant :
(1) (2) (3) y(4)
5 (5)
(A) 40 20 40 100

(B) 30 90 120
(C) 30 90 120
40 50 70 90 90

Cette solution donne la même valeur de la fonction des coûts :


Z = (40)(4) + (20)(1) + (40)(2) + (30)(3) + (90)(7) + (30)(2) + (90)(4) = 1400.
Exercices
1. Une société dispose dans les centres M1, M2, M3 et M4 de minerais qu’elle désire
écouler vers les concentrateurs C1, C2, C3 et C4. Les stocks disponibles sont les
suivants : 120 T, 100 T, 100 T et 100 T. Les demandes dans chacun des concentrateurs
Ci sont respectivement 100 T, 80 T, 90 T et 150 T. Divers camions se rendent du point
de départ au point de destination. Les tonnages dont ils disposent sont donnés par le
tableau de débit ci-après :
100 T 80 T 90 T 150 T
C1 C2 C3 C4
120 T M1 70 30 20 0
100 T M2 50 40 100 0
100 T M3 0 20 40 80
100 T M4 0 20 40 80

Abstraction faite du coût de transport déterminer les diverses cargaisons de manière à


satisfaire les demandes au maximum.
92

2. Dans une société industrielle, les cotations mensuelles des ouvriers sont présentées
dans le tableau ci-dessous :

y1 y2 y3 y4 y5
x1 9 6 7 3 4
x2 2 1 9 1 8
x3 4 3 2 2 7
x4 9 1 8 8 3
x5 1 7 8 9 5

On demande de trouver la meilleure affectation des ouvriers aux différents travaux de


manière à maximiser le rendement de travail.
93

CHAPITRE 8 : PROBLEME D’ORDONNANCEMENT

8.1 ENONCE DU PROBLEME D’ORDONNANCEMENT


Nous appelons « problème d’ordonnancement », un ensemble d’opérations
concourant à la réalisation d’un objectif (projet de travail, un grand ensemble des travaux
complexes, …) telles qu’on connaisse, pour chacune d’entre elles, sa durée (déterminée ou
aléatoire) et les relations d’ordre la concernant (antériorités obligatoires). Un problème
d’ordonnancement constitue un programme ou planning pouvant être représenté par un
graphe appelé « graphe de programme » ou « graphe d’ordonnancement ».
Nous dirons qu’un problème d’ordonnancement est élémentaire s’il satisfait aux
cinq conditions ci-après :
1°. Le travail total peut être décomposé en un nombre fini de tâches élémentaires. Par
travail total nous entendons un ensemble d’activités de nature diverse. Exemple :
recherche, production, entretien, construction,…
Les tâches, par contre, sont des activités ou des groupes d’activités homogènes que les
techniciens peuvent plus ou moins naturellement isoler du travail total. Ces tâches
peuvent être désignées par les entiers 0, 1, 2, 3, …, n. La définition des tâches doit être
suffisamment précise pour que dans un programme donné on puisse parler :
a. de la date de début ti de la tâche i.
b. de la date de fin fi de la tâche i.
Dans ces conditions, la durée di d’une tâche i (temps opératoire) est alors la différence
de fi et ti : di = fi - ti ;
2°. Il existe une tâche « début du travail » qui doit précéder toutes les autres. Il existe
ensuite une tâche « fin de travail » qui doit suivre toutes les autres. On désignera par 0
la tâche « début de travail » et par n la tâche « fin de travail ». Le début d’un travail
correspond lorsqu’il s’agit de la construction d’un grand ensemble, à la mise en
chantier et la fin du travail à la mise en service ;
3°. La durée d’exécution des tâches est fixe et connue d’une manière certaine : di = cte ;
4°. Les contraintes liant les différentes tâches peuvent toutes être ramenées à la forme :
« pour que la tâche j puisse commencer, il faut que la tâche i soit entièrement
terminée ». Nous dirons qu’un ordonnancement est compatible avec les contraintes si tj
- ti ≥ di pour tout couple des tâches (i, j) entre lesquelles existe une contrainte ;
94

5°. Le critère d’optimalité consiste à rendre la durée totale du travail minimum. Autrement
dit on s’efforce de minimiser la fonction économique tn – t0.

8.2 ETABLISSEMENT DU GRAPHE DE PROGRAMME


8.2.1 Mise en graphe par la méthode française dite de potentiel
Dans cette méthode, chaque tâche (opération) i est représentée par un sommet xi
du graphe. Toute contrainte « i doit être terminée complètement avant que j commence » se
traduit par un arc (xi, xj) auquel on associe la longueur di = tij.
Exemple
Le travail consiste à construire et à équiper un ensemble minier complet comprenant un
port, une cité, une route, un chemin de fer et les mines. Considérons que l’analyse
technologique de ce travail a conduit à un premier découpage de celui-ci en 8 tâches
(auxquelles nous ajouterons la tâche 0, début du travail et la tâche 9, fin du travail).
Conditions de
N° Tâches Durée (en trimestres)
démarrage
0 - - -
1 Construction d’un port provisoire - 3
2 Construction de la route - 6
3 Commande du matériel portuaire - 2 (délais de livraison)
4 Pose de la voie ferrée 1 achevé 4
5 Construction d’un port définitif 1 achevé 2
6 Construction de la cité 1 achevé 7
7 Construction de l’installation minière 2 et 4 achevés 3
8 Mise en place de l’équipement portuaire définitif 3 livré et 5 achevé 4
9 - -
95

La mise en graphe du tableau ci-dessus par la méthode de potentiel nous conduit au graphe
ci-dessous :

0 4
x4 4
3
x1
x0 x9
0 33 x6 7

x5
3 3
0 2

x3 x8

Figure 8.1

8.2.2 Mise en graphe par la méthode américaine dite de P.E.R.T..


N.B: P.E.R.T = Program Evaluation Research Task ou Program Evaluation and Review
Technique.
Dans la méthode PERT, chaque opération i est représentée par un arc. Les durées
des opérations ou temps opératoires étant supposés connus, on attachera aux arcs du graphe
une valeur non négative tij ≥ 0 représentant chacun de ces temps opératoires. Les sommets
du graphe appelés événements peuvent s’interpréter comme marquant la réalisation
d’objectifs partiels (montage d’un sous-ensemble, par exemple). Toute contrainte du type
« Pki doit être complètement terminée avant que Pij ne puisse commencer » se traduit par le
fait que l’extrémité finale Ei de l’opération Pki (qui est une des opérations contribuant à la
réalisation de l’événement Ei) coïncide avec l’extrémité initiale Ej de l’opération Pij (qui est
une des opérations contribuant à la réalisation de l’événement Ej).
L’établissement du graphe nécessite, pour chaque opération, la connaissance
des opérations qui la précèdent immédiatement. Le graphe traduit donc les relations
d’ordre existant dans l’ensemble des opérations. Notons que le graphe d’un programme est
sans circuit sinon une opération pourrait se faire suite à elle-même.
96

Exemple.
Le graphe PERT de l’exemple précédent se présente comme suit :

7 (4)
2 (6) 4 (4)

1 (3) B E

A 6 (7)

3 (2)
5 (2)
8 (3)

D
Figure 8.2
Dans l’exemple du graphe PERT ci-dessus, il n’y a aucune tâche fictive. Si on ajoute une
contrainte supplémentaire « 5 doit être déterminé pour que 6 puisse commencer », alors il
apparaît une tâche ou une opération fictive (arc fictif) dans le graphe PERT. Le graphe
potentiel devient :

x2 x7

x4
x1 x6
x0 x9

x5

x3 x8

Figure 8.3
97

Le graphe PERT devient :

7
2 4

1 B E
6
A
5 F

0 8
3

Figure 8.4.

8.3 DATE DE REALISATION DE L’ENSEMBLE DES TRAVAUX.


CHEMIN CRITIQUE. INTERVALLE DE FLOTTEMENT ET
MARGES DES OPERATIONS.
Le problème consiste à trouver un ordonnancement optimum. La date de
réalisation tn, c’est-à-dire la durée du programme à réaliser ne peut être inférieure à la
somme des temps opératoires pris sur le chemin le plus long de x0 à xn, c’est-à-dire qui
donne entre ces deux points une somme de temps opératoires maximal. Ce chemin (il peut
y en avoir plusieurs) est appelé « chemin critique ». En prenant pour durée de l’ensemble
des travaux, la somme des temps opératoires pris sur le chemin le plus défavorable de x 0 à
xn, on est ainsi assuré que toutes les opérations prévues peuvent être effectivement
réalisées, en tenant compte de leurs durées respectives.
Pour trouver le chemin critique, on applique l’un des algorithmes permettant de
trouver le chemin de valeur maximum dans un graphe (voir chapitre 7). En appliquant
donc un algorithme vu, on peut déterminer pour chaque événement (sommet du graphe) sa
date de réalisation (c’est la valeur maximale des temps opératoires depuis le début des
travaux jusqu’au début de l’événement considéré). Ces dates « de réalisation des
événements » sur le programme sont appelées dates de réalisation des événements ou
dates au plutôt des opérations. Appelons ti ces dates attachées aux événements Ei. Les
opérations constituant le chemin critique ou sur le chemin critique sont appelées
98

« opérations critiques ». Elles doivent débuter aux dates de réalisation des événements
origines des arcs. Si le démarrage d’une opération critique est retardé, alors tout le
programme se trouve retardé. Les opérations critiques sont donc les opérations du
programme sur lesquelles le planificateur doit porter toute son attention au cours de la
réalisation, car de son bon déroulement dépend la date de réalisation de l’ensemble des
travaux.
Les opérations « non critiques », c’est-à-dire celles ne se trouvant pas sur le
chemin critique, tolèrent certains retards dans leur mise à exécution, sans pourtant accroître
la durée totale du travail. Il est intéressant de connaître, pour chaque événement Ei non
critique, sa date limite de réalisation, date au-delà de laquelle tout le programme se trouve
retardé.
Considérons l’événement Ei. Le temps minimal nécessaire pour réaliser les
opérations situées entre Ei et En est obtenu en cherchant sur le graphe le chemin de valeur
maximale de Ei à En. Par une telle procédure, on est assuré que les opérations succédant à
Ei peuvent être effectivement réalisées, en tenant compte de leurs durées respectives. La
date limite cherchée t i* sera obtenue en retranchant ce temps (valeur maximale du chemin
de Ei à En) de la date tn de l’événement final En.
Pratiquement, pour déterminer les dates t i* , appelées dates limites de
réalisation des événement Ei ou encore dates au plus tard du début des opérations
commençant en Ei on procède comme suit :
1°. Considérer un sommet Ei.
2°. Si Ei est sur le chemin critique, alors t i*  t i , sinon aller en 3°.
3°. Considérer tous les arcs partant de Ei, leurs extrémités terminales Ej portent-elles
toutes
des dates limites t *j ? Si oui alors : t i*  min (t *j  t ij ) où tij est le temps opératoire de
j i

l’opération (Ei, Ej), Sinon aller en 1°.


On s’arrête quand on a calculé la date limite t i* de chaque événement Ei. Pour les

événements critiques, la date limite t i* est confondue avec la date attendue ti.

L’intervalle [ t i , t i* ] est appelé « intervalle de flottement ou de battement ».


C’est donc l’intervalle dans lequel pourra se placer l’événement non critique Ei sans
modifier le temps total d’exécution de l’ensemble des travaux.
99

Exemple : déterminer le chemin critique, les dates attendues et les dates limites des
événements sur le graphe PERT ci-dessous.

33 (43)
17 (40) 3 5
9
48
9 5 9 10
8 (9) 4
8
2 6 5
23 (26) 13
8 4 3
10 6
13 8 29 6
0 1 3 12
6 5
13 61
13
9 9 17
7 8
6
4 11
10 7 42
20 4
37 (38)

Figure 8.5

Le chemin critique, représenté sur la figure par les arcs en rouge, est constitué comme suit :
1-3-4-8-11-10-12. Les dates attendues ti sont portées sur chaque sommet à côté des
nombres entre parenthèses. On les obtient lors du marquage servant à la recherche du
chemin critique. Les dates limites, portées sur chaque sommet, sont celles données par les
nombres entre parenthèses. Celles des événements critiques sont confondues aux dates
attendues. Celles des événements non critiques sont déterminées selon la procédure
expliquée ci haut. Considérons par exemple l’événement E7 qui est séparé de E11 par un
temps opératoire de 4, donc l’opération P7, 11 peut commencer 4 semaines avant E11. Donc
l’événement E7 doit avoir lieu au plus tard à la date t 7*  42  4  38 . E9 est séparé de E10
par un temps opératoire de 5, donc l’opération P9,10 peut commencer 5 semaines avant E10
et l’événement E9 doit donc avoir lieu au plus tard à la date t9* = 48 – 5 = 43. E6 est séparé
de E9 par un temps opératoire de 8, de E8 par un temps opératoire de 3 et de E7 par un
100

temps opératoire de 5 ; il faut comparer 43 – 8 = 35, 29 – 3 = 26 et 38 – 5 = 33. Ainsi


l’événement E6 doit avoir lieu au plus tard à la date t 6*  26 .
Finalement, les dates des événements Ei pourront se placer dans les intervalles,
dits intervalles de flottement, donnés ci-après :

E1 :0 E5 : [17, 40] E9 : [33, 43]


E2 : [8, 9] E6 : [23, 26] E10 : 48
E3 : 13 E7 : [37, 38] E11 : 42
E4 : 20 E8 : 29 E12 : 61

Il est également intéressant de connaître pour chaque opération Pij le retard qui
peut être apporté à sa mise en route sans perturber la date de réalisation de l’événement Ej.
On appelle « marge libre » de l’opération Pij, le retard qui peut être apporté à sa mise en
route sans perturber la date de réalisation de l’événement Ej. Si ti et tj sont les dates
attendues des événements Ei et Ej encadrant l’opération Pij de durée tij, sa marge libre est tj
– ti – tij. Les marges libres des opérations critiques sont nulles car aucun délai ne peut être
apporté à leur démarrage.
On définit de même pour chaque opération Pij une « marge totale » comme la
quantité tj* - ti – tij. La marge certaine de l’opération Pij est par définition tj – ti* - tij.
Intervalles de flottement et marges libres mesurent l’élasticité d’un programme : plus elles
sont réduites, plus le programme est rigide. Un programme totalement rigide est un
programme où tous les chemins sont critiques : il n’y a alors ni intervalles de flottement, ni
marge libres. Aucun retard ne peut être toléré sur quelque opération que ce soit.
101

GETION DES STOCKS

CHAPITRE 9 : LES PRINCIPAUX MODELES DE


GESTION DES STOCKS

.9.1 INTRODUCTION
La gestion d’un stock consiste pour l’essentiel, à prévoir les dates et les
volumes des réapprovisionnements. Les principaux éléments qui interviennent dans une
gestion des stocks sont :
- La demande d’articles qui, en général, est aléatoire et une fonction du temps, mais
qui, dans d’autres cas, peut être connue d’avance et déterminée ;
- L’existence d’un stock de ces articles pour satisfaire la demande, ce stock
s’épuisant et devant être réapprovisionné ou renouvelé. M. Ramboz définit un stock
comme essentiellement une quantité variable d’un produit augmenté par les entrées
(achats ou fabrications) et diminuée par les sorties (ventes ou livraisons à l’atelier).
Le réapprovisionnement peut être continu, périodique ou encore être réalisé à des
intervalles de temps quelconques ;
- Le délai de réapprovisionnement ou délai de livraison qui peut être, lui aussi
déterminé ou aléatoire ou dépendre du volume de la commande de
réapprovisionnement ;
- Les différents coûts :
1°. Le coût de stockage ou de magasinage Cs mesuré par pièce et par unité de
temps ;
2°. Le coût de lancement Cl représentant les frais administratifs de l’opération de
réapprovisionnement ;
3°. Le coût de pénurie Cp, qui apparaît dans les modèles admettant des ruptures de
stock ;
4°. Enfin, lorsque les coûts de lancement et de stockage sont négligeables on
considère
une perte C1 sur les articles soldés lorsque la demande r est inférieure au stock, un
coût supplémentaire C2 pour approvisionnement spécial lorsque la demande est
102

supérieure au stock S.
Ces coûts permettent de se donner une fonction économique que l’on se proposera
d’optimiser ;
- Le volume des commandes de réapprovisionnement qui peut être constant ou
variable suivant la règle de gestion adoptée ;
- Les dates de réapprovisionnement t et les périodes de gestion T (intervalle de temps
qui sépare deux réapprovisionnements successifs), elles aussi constantes ou
variables suivant la règle de gestion adoptée ;
- Les contraintes qui peuvent être des interactions entre les divers produits, des
limitations des moyens (volume, poids, temps opératoires, disponibilités financières
…).
L’évolution du niveau d’un stock pendant une période T se présente, pour
chaque article, sous forme d’une fonction en escalier décroissante. Il est commode
de remplacer le tracé en escalier par une droite ou une courbe qui donnera une description
analytique plus commode de la demande.

Niveau du stock

Stock
initial

Stock
final

T temps

Figure 9.1

9.2 LES MODELES DE BASE DE GESTION


Il existe de nombreuses règles de gestion. Les modèles de base les plus courants
sont les suivants :
1. Gestion à période fixe
103

a) La demande est constante et le réapprovisionnement a lieu instantanément et par


quantités constante n ;

Niveau du stock

niveau
maximal
n

niveau
minimal t0 t1 t2 t3 t4
temps
T T T T

Figure 9.2

b) La demande est variable (aléatoire ou déterminée). Le réapprovisionnement se fait


avec ou sans délai  par quantités variable ni de façon à rendre au stock son niveau
maximal à la fin de chaque période. Les quantités ni doivent être estimées aux dates
ti par extrapolation de la courbe de consommation.

T T T T
niveau
maximal


  
niveau
minimal
t0 t1 t2 t3 t4 temps
Figure 9.3

Généralement on tolère une rupture de stock et on se préoccupe de déterminer le


niveau S0 auquel doit être complété le stock à chaque fin de période de façon à
minimiser le coût de gestion.
104

2. Gestion à période variable


a) La demande est variable (aléatoire ou déterminée).
Le réapprovisionnement se fait avec ou sans délai  par quantités fixes de façon à
rendre au stock son niveau maximal à la fin de chaque période. Les dates ti où les
ordres de réapprovisionnement doivent être passés doivent être déterminés par
extrapolation de la droite ou de la courbe de consommation.

T1 T2 T3 T4
niveau
maximal
n

niveau
minimal    

temps
t0 t1 t2 t3 t4

Figure 9.4

b) La demande est variable (aléatoire ou déterminée).


Le réapprovisionnement a lieu par quantités fixes et demande un délai constant  .
Dans ce modèle de gestion, que les Anglo-Saxons appellent « two-bin-system », les
ordres de réapprovisionnement sont passés au moment où le stock tombe à un niveau
convenable choisi, appelé « niveau de réapprovisionnement ».

T1 T2 T3

NM
NI NM = niveau maximal
NI = niveau initial
NR= niveau de réapprovi-
sionnement
NR Nm = niveau minimal
 
Nm 

temps
t0 t1 t2 t3
Figure 9.5
105

Cette méthode offre l’avantage d’une gestion commode. Elle est d’un usage assez
répandu. Le mode de réapprovisionnement correspondant est appelé
« réapprovisionnement sur point de commande ».
9.3 MODELES CLASSIQUES DE GESTION DES STOCKS.
Ces modèles partent d’un ensemble de prémisses et d’hypothèses à partir
desquelles l’analyse algébrique déduit des formules mathématiques. Selon que la demande
r est déterminée ou aléatoire on distingue d’une part les modèles déterministes pour
lesquels la demande est certaine et le taux de la demande constant, et d’autre part les
modèles aléatoires pour lesquels la demande est aléatoire et connue en probabilité.
Dans ce qui suit nous nous contenterons de présenter les principaux résultats
obtenus lors de l’analyse mathématique de ces modèles. Il faut cependant souligner que,
dans la pratique, comme dans tout problème de recherche opérationnelle, il n’est pas
toujours possible de ramener le cas étudié à un modèle classique et qu’il y a lieu de faire
une étude spéciale tenant compte de toutes les contraintes et hypothèses particulières du
problème réel considéré.

9.3.1 LES MODELES DETERMINISTES


1. GESTION A PERIODE FIXE ET DEMANDE CONSTANTE
Ce modèle porte le nom du « modèle déterministe de Wilson ». Les
hypothèses et prémisses du modèle de Wilson sont :
- Le coût de lancement d’une commande ou rafale Cl est indépendant du nombre
d’articles ou de la quantité du produit à commander ;
- La demande totale pour un intervalle de temps (une année très souvent) est N ;
- Aucune pénurie n’est admise ;
- Le coût de stockage d’une pièce ou quantité unitaire pendant l’unité de temps est
Cs ;
On demande quelles sont les quantités n à réapprovisionner périodiquement pour
minimiser le coût global de lancement et de stockage des N pièces.
En appelant T la période de gestion le modèle se ramène à celui de la figure
9.2, et l’on peut montrer que le coût global de gestion pour l’intervalle de temps θ est
une fonction de la rafale n et donné par :
N Cl  Cl
(n)   n
n 2
106

N Cl
Le coût global (n) sera minimum pour n  no  2
 Cs

no est la rafale ou quantité économique à réapprovisionner.


On en déduit :

  Cl
T  To  no  2 : c’est la période de gestion optimale ;
N N CS

(no )  o  2 N  C S Cl : c’est le coût minimum de gestion, c’est-à-dire

correspondant aux réapprovisionnements en quantité économique no .

Exemple.
Le coût de stockage d’un article de forte consommation (200 000 unités par an = 360
jours) dont la demande est constante, est égale à 0,002 F par jour et par pièce. Quelle
est la grandeur de la rafale la plus économique et la période de gestion, sachant que le
coût de lancement d’une rafale est de 720 F.
Solution
Données du problème : N = 200 000 ; θ = 360jours ; Cl = 720 F ; Cs = 0,002 F

N Cl 200000 720
no  2  2  20000articles.
 CS 360 0,002

 360
To  no   20000  36 jours.
N 200000
o  2 N C S Cl  2  200000 360  720  0,002  14400F .

2. GESTION A PERIODE FIXE ET DEMANDE CONSTANTE AVEC


POSSIBILITE DE DEFAILLANCE
Ce modèle est aussi sous-tendu par les hypothèses et prémisses du modèle
précédent, sauf que l’on admet ici une possibilité de pénurie à laquelle on associe un coût
de pénurie Cp par unité de temps et par pièce. En effet pendant une durée T1 dans chaque
période T, le niveau journalier du stock est suffisant pour satisfaire la demande, puis
pendant une durée T2 il y a pénurie et le reliquat est livré dès l’entrée en stock de la rafale
suivante.
107

T T T T

T1 T2 T1 T2 T1 T2 T1 T2


Figure 9.6

On peut établir que le coût global pour l’intervalle de temps θ est une fonction
de n et S, et donné par :
S 2 C S N (n  S ) 2 
(n, S )   Cl  CP .
2n n 2n
N Cl CS  CP
Cette fonction à deux variables sera minimale pour n  no  2 et
 CS CP

CP N Cl CP
S  So  no  2 .
CS  CP  CS CS  CP

no et S o sont respectivement la quantité économique à réapprovisionner et le niveau


optimal du stock au début d’une période de gestion T. A la fin de chaque période T on
lance une rafale no destinée d’une part à satisfaire la demande S   n  S qui n’a pu être
satisfaite pendant T2 et d’autre part à reconstituer le stock S.
CP
La quantité est appelée « taux de pénurie » ou « taux de défaillance ».
CP  CS
On peut également tirer :

 Cl CS  CP CP
To  2 et o  2 N  C S Cl représentant respectivement la
N CS CP CS  CP

période de gestion optimale et le coût global minimal.


Exemple.
108

Reprendre l’exercice précédent en admettant une rupture de stock avec un coût de pénurie
de 0,008 F par jour et par article.
Solution :
0,008
Le taux de défaillance est alors    0,8 ; d’où :
0,002  0,008

1 1
no  20000  22361 ; S o  22361 0,8  17889 ; To  36   40,25 jours
0,8 0,8

o  14400 0,8  12879,75 F .

3. GESTION A PERIODE FIXE ET DEMANDE CONSTANTE AVEC COÛT DE


STOCKAGE PROPORTIONNEL AU PRIX DE REVIENT OU PRIX D’ACHAT
Nous nous placerons dans une situation semblable à celle du modèle de Wilson,
mais en faisant intervenir cette fois le prix de revient ou prix d’achat des pièces, le coût de
stockage étant proportionnel au prix de revient ou prix d’achat d’une rafale. Le niveau du
stock sera comme décrit par la figure 9.2.
Les paramètres de gestion sont :
N = nombre de pièces pour la période θ ;
n = nombre de pièces dans une rafale de durée T ;
Ca = prix d’achat ou de revient d’une pièce (non compris le coût fixe d’une rafale);
Cb = coût fixe d’une rafale ;
 = coefficient de proportionnalité entre le coût de stockage par pièce et par unité de
temps et la valeur d’une pièce Ca + Cb/n ; c’est-à-dire :
CS C
 , d ' où C S   (C a  b )
C a  Cb / n n
La quantité Ca + Cb/n est la valeur d’une pièce donnée par la somme de son prix d’achat
ou de revient et sa quotte part du coût fixe.
r = nombre de rafales dans la période θ.
Le coût global d’une période θ est alors :
(n)  nCa  Cb  12  T (nCa  Cb r  nCa  12 ( T )nCa  Cb  12  T Cb r
 N
Mais r   , alors :
T n
 Ca N Cb
(n)  NC a  12   Cb  n .
2 n
109

Dans cette formule N Ca  12   Cb est une quantité indépendante de n. En annulant la


dérivée de Г(n) on arrive à la relation :
 Ca  N Cb 2 N Cb
 ; d ' où n  no  : C’est la quantité économique qui minimise la
2 n 2
  Ca
dépense globale Г(n). On en déduit :

  Cb
T  To  no  2 ; o  2 N   C a Cb  N C a  12   Cb
N N  Ca

Exemple numérique.
Ca = 1000 F ; Cb = 50 000 F ; N = 75 000 ; θ = 360 jours ;   0,3 103 ; il vient :

2  75000 50000 360


no  3
 8333 ; To   8333  40 jours ;
360  1000 0,3  10 75000

o  2  75000 360  0,3  10 3  1000  50000  75000 1000  12 360  0,3  10 3  50000

= 75 903 000 F.

9.3.2 LES MODELES ALEATOIRES.


A. MODELES ALEATOIRES A VARIABLES DISCRETES.
1. Gestion à période fixe et demande aléatoire avec perte sur les excédents et coût
supplémentaire pour la pénurie (coût de stockage négligé).
Nous allons supposer maintenant que la demande r pour un intervalle de temps
T est aléatoire et que l’on connaît la distribution P(r) de la probabilité d’une demande égale
à r. Si r est inférieur au stock S les pièces restantes sont vendues avec une perte unitaire C1 ;
au contraire si r est supérieur à S il faut une exécution ou un approvisionnement spécial des
pièces manquantes, et le supplément du coût représente une perte unitaire C2. Si le coût de
stockage est négligeable devant C1 ou C2, la durée T n’intervient plus et l’on peut dire que
la gestion est alors indépendante du temps.
Convenons d’appeler S le nombre pièces à placer dans le stock. Deux situations
sont possibles et s’excluent mutuellement :
1°. r ≤ S : le stock couvre la demande et l’on doit solder une quantité égale à S – r pièces
avec une perte unitaire C1 ;
2°. r > S : il y a pénurie et il faut faire exécuter ou approvisionner spécialement r – S
pièces avec une perte unitaire C2.
110

On ne connaît pas r, mais connaissant la distribution P(r), on peut évaluer


l’espérance mathématique des dépenses donnée par l’expression suivante :
S 
( S )  C1  ( S  r ) P(r )  C 2  (r  S ) P(r ) .
r 0 r  S 1

On démontre que le minimum de Г(S) a lieu pour une valeur So telle que :
C2
P(r  S o  1)    P(r  S o ) où   et P(r  S o )  P(0)  P(1)  P(2)  ...  P( S o )
C1  C 2

La comparaison de  et de la distribution cumulée P(r  S ) donne immédiatement So et

de là (S o )  min .

Exemple numérique
1000
C1 = 50 F ; C2 = 20 C1 = 1000 F ;    0,952 .
50  1000
La distribution est donnée par le tableau ci-après :

S r Ρ( r) Ρ(r ≤ S)
0 0 0,900 0,900
1 1 0,050 0,950
2 2 0,020 0,970
3 3 0,010 0,980
4 4 0,010 0,990
5 5 0,010 1
≥6 ≥6 0 1

On voit que : P(r  1)  0,950    0,952  P(r  2)  0,970 .


Ainsi l’optimum a lieu pour S = 2 auquel correspond une valeur du coût de gestion
2 
(2)  C1  (2  r ) P(r )  C 2  (r  2) P(r )  50(2)(0,900)  (1)(0,050)  (0)(0,020) 
r 0 r 3

1000(1)(0,010)  (2)(0,010)  (3)(0,010)  0  152,5 F .


2. Gestion à période fixe et demande aléatoire avec coût de stockage et coût de la
pénurie
La demande pour une période T considérée comme unité de temps est aléatoire,
P(r) étant la probabilité d’une demande r pendant T. La pénurie d’un article entraîne une
perte Cp par unité de temps. Cs est le coût de magasinage d’une pièce par unité de temps T.
111

Le stock est réapprovisionné à chaque fin de période d’une quantité égale à S. On se


propose de déterminer le niveau So rendant minimal le coût moyen de gestion.
Deux situations sont possibles et s’excluent mutuellement :
1°. La demande totale r dans l’intervalle T est inférieure au stock S : r ≤S. La situation est
celle de la figure 9.7a ci-après ;
2°. La demande totale r est supérieure au stock S : r > S. La situation est celle de la figure
9.7b.

r
S S
r
s-r

r-s
T

Figure 9.7a T1 T2
T
Figure 9.7b

- Si r ≤ S, le coût de stockage par unité de temps est


S S r  r
1   C S   S  C S
 2   2
- Si r > S le coût de stockage et de pénurie par unité de temps est :
1
S T1 CS  12 (r  S ) T2 C P 1 T1 T
2  2
 2 S CS  12 (r  S ) 2 C P ;
T T T
T1 S T rS
or  et 2  ;
T r T r
S2 (r  S ) 2
donc 2  1
2 C S  12 CP ;
r r
d’où l’espérance mathématique du coût total de gestion pendant T ou l’unité de
temps
est donnée par l’expression :
S
 r 
S 2 
(r  S )
2
( S )  C S   S   P ( r )  C S  P( r )  C P  P( r )
r 0  2 r  S  a 2r r S a 2r
On démontre que le minimum de Г(S) a lieu pour une valeur So telle que :
112

Cp 
P( r )
L( S o  a)    L( S o ) où  
CS  CP
, L( S o )  P(r  S o )  ( S o  a2 ) 
r  So  a r
et

P(r  S )  P(0)  P(a)  P(2a)  ....  P(S )


La comparaison de  et de la distribution L(S) donne immédiatement So et là

(S o )  min
N.B. : a est la raison de la suite exprimant les valeurs de la demande.
Exemple numérique.
Soient Cs = 100 000 F et Cp = 20Cs = 2 000 000 F. Calculer le stock optimal So et min si la
demande est aléatoire et distribuée comme l’indique le tableau qui suit:

S r Ρ(r) P(r ) 
P(r ) 
P(r ) Ρ (r ≤ S) L(S)
r 
r  S 1 r
( S  12 ) 
r  S 1 r
0 0 0,1 ∞ 0,445 0,2225 0,1 0,3225
1 1 0,2 0,200 0,245 0,3675 0,3 0,6675
2 2 0,2 0,100 0,145 0,3625 0,5 0,8625
3 3 0,3 0,100 0,045 0,1575 0,8 0,9575
4 4 0,1 0,025 0,020 0,0900 0,9 0,9900
5 5 0,1 0,020 0,000 0,0000 1 1
≥6 ≥6 0 0,000 0,000 0,0000 1 1

20
Pour S = 3, on a : L(2)  0,8625     0,9524  L(3)  0,9575 ; Le stock optimum
21
est donc égal à 3. Le coût correspondant est égal à :
(3)  0,1[(3)(0,1)+(2,5)(0,2)+(2)(0,2)+(1,5)(0,3)]+(0,1)[(1,125)(0,1)+(0,9)(0,1)+0]
+ 2[(0,125)(0,1)+(0,4)(0,1)] = 0,29 millions.

Exercice
Le réapprovisionnement d’un article se fait à période fixe de façon à compléter le stock à
un niveau donné S. Tout article non disponible est livré dès l’entrée en stock de la
commande suivante. Le coût de stockage par article et par unité de temps est Cs. Le coût de
pénurie par article et par unité de temps est Cp = 30 Cs. Pour quelle valeur So du stock en
113

début de période l’espérance mathématique du coût de gestion est-elle minimale, sachant


que la demande r pour chaque période est aléatoire et distribuée comme indiqué ci – après :

r 0 1 2 3 4 5 6 7
P(r) 0 0,1 0,1 0,2 0,3 0,2 0,1 0

B. MODELES ALEATOIRES A VARIABLES CONTINUES


Dans ces modèles la distribution P(r) de la demande est remplacée par la densité de
probabilité f(r).
1. Gestion à période fixe et demande aléatoire avec perte sur les excédents et coût
supplémentaire pour la pénurie (coût de stockage négligé)
L’espérance mathématique des dépenses est donnée par :

( S )  C1  ( S  r ) f (r )dr  C 2  (r  S ) f (r )dr
S

0 S

Pour trouver le minimum de Г(S) on annule la dérivée de


d ( S )
 C1  f (r )dr  C 2  f (r )  C1  f (r )dr  C 2 1   f (r )dr 
S  S S

dS 0 S 0 
 0 

 C1 F ( S )  C 2 1  F ( S )  (C1  C 2 ) F ( S )  C 2

où F ( S )   f (r )dr  P(r  S )
S

d C2
 0  F (S )  
dS C1  C 2

C2
Donc une valeur So de S telle que F ( S o )  rend minimum (S )
C1  C 2
Exemple
Supposons que la densité de probabilité f(r) soit de la forme f (r )   e  S

Alors F (r )    e  r dr  1  e  S
S

C2 C2
(S ) est minimum lorsque F ( S )   1  e  S  
C1  C 2 C1  C 2
ln(1   )
 e  S  1      S  ln(1   ) ; d ' où S  S o  

2. Gestion à période fixe et demande aléatoire avec coût de stockage et coût de la
pénurie
La distribution P(r) étant remplacée par la densité de probabilité f(r), on a :
114

 (r  S )
2 2
r  S
( S )  C S  ( S  ) f (r ) dr  C S 
S
f (r ) dr  C P  f (r ) dr
0 2 S 2r S 2r
Pour trouver le minimum de Г(S) il faut annuler sa dérivée :
d S  S2  r S
 C S  f (r ) dr  C S f (r )  C S  r f (r )dr  C S f (r )  C P 
S
S
f (r )dr
dS 0 2 S 2S S r
  
 C S  f (r )dr  C S  f (r )dr  C P  f (r )dr  C P 
S
S S
f (r )dr
0 S r S S r

 
 C S  f (r )dr  C S  f (r )dr  C P  C P  f (r )dr  C P 
S S
S S
f (r )dr
0 S r 0 S r


 (C S  C P )  f (r )dr  (C S  C P ) 
S
S
f (r )dr  C P
0 S r

 (C S  C P )  f (r )dr   Sr f (r )dr   C P


S 

 0 S 
Le minimum de (S ) a lieu pour une valeur S = So telle que :

(C S  C P )  f (r )dr   f (r )dr   C P  0


SO  SO

 0 SO r

So  CP
 
0
f (r )dr  S o  f (r )dr 
SO CS  CP


 f (r )
 F (S o )  S o  dr  
SO r
C. APPLICATION : QUANTITE A REAPPROVISIONNER DANS LE CAS DE
DELAI DE REAPPROVISIONNEMENT PLUS LONG QUE LES PERIODES
DE GESTION
Considérons un intervalle de temps θ divisé en n périodes de temps T, et
supposons que le délai entre l’ordre de réapprovisionnement et la réception soit
égal à θ. Au début de chaque période T, on transmet les ordres de manière que la
livraison soit faite n périodes plus tard. On a déterminé la distribution P(r) ou la
fonction de densité f(r) d’une demande r pour un intervalle de temps θ. Le
problème qui se pose alors est le suivant : quelle quantité qi doit-on commander n
périodes T avant la période n° i de manière que le coût global pour cette période
soit minimum ?
Sur l’axe de temps on a le schéma suivant :
115

Nous supposons que les quantités qi pour les n-1 périodes qui précèdent la période
n sont connues car ayant fait l’objet d’ordres passés en temps voulu. Il est question
de rechercher la quantité optimum qn qu’il faut commander à la période 1 et qui
sera reçue n périodes plus tard de manière que le coût global pour les n T périodes
soit minimum.
Nous nous placerons dans le cas de la demande aléatoire avec perte sur
les excédents et coût supplémentaire pour la pénurie (coût de stockage négligé ).
Soient C1 la perte unitaire concernant les pièces en excédent, C2 celle due
aux pièces en déficit. Posons :
So = stock initial (début de la 1ère période) ;
Si = stock à la fin de la période i ;
ri = demande pour la période i ;
qi = réapprovisionnement pour la période i ;
Alors :
S1 = So+q1 – r1
S2 = S1 + q2 – r2
S3 = S2 +q3 – r3
…………………………………………………………
Si = Si-1 + qi - ri
………………………………………………………….
Sn = Sn-1 +qn -rn
En additionnant membres à membres des égalités ci-dessus, on tire :
Sn = So + q1 + q2 + …. + qn – ( r1 + r2 + …. + rn )
Si S = So + q1 +q2+….+qn
r = r1 + r2 + …. + rn
Alors Sn = S – r : cette quantité peut être positive ou négative suivant que S > r ou S < r.
L’espérance mathématique du coût total pour l’intervalle θ = n T est donnée par :
S 
(n)  C1  ( S  r ) P(r )  C 2  (r  S ) P(r ) le cas d’une demande discrète
r 0 r  S 1


ou ( S )  C1  ( S  r ) f (r )dr  C 2  (r  S ) f (r )dr le cas d’une demande continue.
S

0 S

Le minimum de Г(s) a lieu, comme nous l’avons vu, pour une valeur S* telle que :
P(r ≤ S*-1) < ρ < P(r ≤ S*)
116

C2 C2
où F ( S  )  avec  
C1  C 2 C1  C 2
Le stock optimum S* étant déterminé on a, puisque les quantités q1, q2 …, qn-1 sont
connues : qn  S   S o  (q1  q2  ...  qn1 ).

Exemple numérique
Un dépôt régional d’une manufacture est réapprovisionné tous les mois pour un certain
article. Les nombres d’articles reçus sont des multiples de 100. Pendant les 5 premiers
mois de l’année, les réapprovisionnements ont été q1 = 100, q2 = 200, q3 = 200, q4 = 200,
q5 = 300. Le stock initial So = 100. La distribution de la demande r pour une durée de 6
mois est donnée par le tableau ci – après. Le délai entre l’ordre de réapprovisionnement et
la livraison au dépôt est de 6 mois. Le coût unitaire d’un excédent est 1500 F et celui d’une
pénurie 18000 F. Quelle quantité q6 doit – on réapprovisionner pour le 6ème mois ?
18000 12
   0,923
1500  18000 13
Tableau de calcul
R P( r ) P( r ≤ S )
0 0,000 0,000 Ρ(2 < 1200) = 0,910 < ρ < ρ(r < 1300 ) = 0,947
100 0,002 0,002 Ainsi le stock économique pour une durée de 6 mois
sera S* = 1300
200 0,008 0,010 de là :

300 0,022 0,032 q6 = S* - So – ( q1+q2+q3+q4+q5)


400 0,046 0,078 q6 = 1300 – 100 – ( 100 + 200+200+200+300) = 200
500 0,078 0,156
N. B : La quantité qn ayant été déterminée on
600 0,109 0,265 recherchera la quantité qn+1 telle que
700 0,131 0,396 qn+1= S* - S1 – ( q2 + q3 +….+qn )
800 0,138 0,534 Si la distribution P(r) est invariable quand la tranche θ
900 0,129 0,663 se déplace la quantité optimum S* ne varie pas.
1000 0,108 0,771
1100 0,082 0,853
1200 0,057 0,910
1300 0,037 0,947
1400 0,022 0,969
1500 0,012 0,981
1600 0,007 0,988
1700 0,004 0,992
1800 0,002 0,994
1900 0,001 0,995
2000 0,001 0,996
117

>2000 0,004 1
EXERCICES
NB. Résolvez au brouillon et portez vos réponses finales ici sans rature ni surcharge, remettre le brouillon.
EXERCICES ET QUESTIONS REPONSES
1. La matrice suivante est associée à un graphe valué représentant un réseau 1.1
des routes reliant un ensemble des villes entre elles. La valeur placée dans -) Chemin entre A et G
une case exprime la distance(en km) entre les villes indiquées sur la ligne et
……………………
la colonne de la case. Une case vide signifie l’inexistence de la liaison entre
les villes concernées. -) Distance du chemin
entre A et G :
A B C D E F G
…………….
A 50 60 95 1.2
B 100 70 45 30 -) Chemin entre A et C :
……………………..
C 140
-) Distance du chemin
D 30 130
entre A et C :
E 80 80 …………………….
E 60 100 180
2.1
F
x 1  .......... ........
x 2  .......... ........
Déterminez le chemin de distance maximale et la valeur de ce chemin
entre : 2.2
Min Z  .......... ........
a) Les villes A et G ?

b) Les villes A et C ?

2. Soit le programme linéaire qui consiste à minimiser la fonction d’achat


Z  400x1  320x2 sous contraintes :

x 1  3x 2  6
2x  x  4
 1 2

x 1  5
x  3
 2
x 1 , x 2  0

2.1 Déterminez les valeurs de x 1 et x 2 qui rendent minimale la fonction des


dépenses d’achat ? (Méthode au choix)
118

2.2 Quelle est la valeur de la fonction économique Z ?

Soit le graph PERT ci-après représentant l’ensemble des opérations concourant à la


réalisation d’un chantier de construction industrielle, lesquelles se succèdent selon un
ordre d’antériorité signalé sur le graph et devant se réaliser pendant
des temps opératoires (en mois) indiqués sur les arcs correspondants.

3
13
9
10 5
15 10
4
10
2 3 5

5 18
9 3
16 6
10 8 8
1 3 12
15 4
13
6 9 19
7 5
10
4 11
8 7
6
Déterminer pour ce graphe :
La succession des sommets qui sont sur le chemin critique ainsi que sa valeur ?
L’intervalle de flottement des sommets 5, 7 ,8 et 9 ?
La marge libre des opérations 3-9 ; 6-9 et 4-7 ?
La marge totale des opérations 2-5 ; 6-8 et 9-10 ?
3. Dans trois usines A, B et C on dispose des tonnages d’un produit. Ces tonnages sont
respectivement 90, 90 et 110. Le produit est livré à 4 magasins M1 , M 2 , M3 et M 4 qui
doivent recevoir respectivement 60, 70 ,70 et 90. Le cout de transport unitaire du
produit d’une usine vers un magasin est donné dans le tableau qui suit :

M1 M2 M3 M4
A 3 2 1 4
B 5 1 3 6
C 7 4 2 8
A partir du plan de transport trouvé à partir de la méthode de stepping- stone, dites :
2.1 Quel tonnage faut-il transporter de A à M 2 ,de A à M 3 et de A à M 4 ?
119

2.2 Quelles sont les valeurs des couts marginaux 13 , 14 et  31 ?
2.3 Quelle est la valeur du cout de transport global de ce plan de transport ?
A partir du plan de transport de cout global minimal, dites :
2.4 Quel tonnage faut-il transporter de A à M 2 , de A à M 3 et de A à M 4 ?
2.5 Quelles sont les valeurs des couts marginaux 12 , 13 et  23 ?
2.6 Quelle est la valeur du cout minimal de transport global de ce plan de
transport ?
3 Dans une entreprise industrielle la consommation pour une année(52 semaines) d’une
matière importée est évaluée à 390 000 tonnes et est supposée être constante à chaque
semaine. Le cout fixe par importation s’élève à 720 000 dollars us. Le cout de stockage
d’une tonne par semaine représente 1% du prix d’achat de cette tonne. Celui-ci (prix
d’achat) s’élève à 300 dollars us la tonne.
3.1 Quelle doit être la quantité de la rafale économique à importer qui minimise la
dépense globale du stock de cette matière première ?
3.2 Déterminer cette dépense globale minimum devant englober les couts fixes de la
rafale, de stockage et d’achat ?
3.3 Par rapport à la rafale économique, quelle doit être la période de gestion T 0 ,
séparant deux réapprovisionnements ?
4 a) Comment appelle-t-on en Programmation linéaire tout point qui ne peut être obtenu par
aucune combinaison linéaire deux points quelconques du polyèdre convexe ?
b) Que représente chaque sommet du polyèdre convexe en Programmation linéaire ?
c) Que signifie « fonction objectif » utilisé en Programmation linéaire ?
5 Représenter graphiquement l’ensemble – solution du système d’inéquations linéaires
suivant puis déterminer les coordonnées des points – sommets :
2x1  x 2  8
x  2x  7
 1 2

x 2  3
x  0
 1
x 2  0
6 Un capital de 800 unités monétaires doit être placé selon les modalités M1, M2, M3 et
M4 procurant respectivement les intérêts de 4%, 2%, 3% et 1%. Au plus 60 % du capital
doit être placé selon les modalités M1 ou M2 et 80% au moins du capital doit être
placé selon les modalités M3 ou M4.
a) Ecrire le programme linéaire qui maximise l’intérêt des placements de ce
capital ;
b) Résoudre ce programme linéaire par la méthode de sélection et trouver les
différents montants placés selon les modalités précédentes qui maximisent
l’intérêt global. Quelle est alors la valeur maximale de cet intérêt ?
7 Soit un programme linéaire qui consiste à minimiser la fonction des dépenses d’achats
Z  400x1  320x2 sous les contraintes :
120

x 1  3x 2  6
2x  x  4
 1 2

 1
x  5
x  3
 2
x 1 , x 2  0
a) Résoudre ce programme par la méthode de balayage et trouver les valeurs de
x 1 et x 2 qui rendent minimale la fonction des dépenses d’achats ?
b) Quelles sont les coordonnées des points anguleux du polyèdre trouvé ?
8 Pourquoi les méthodes graphique et de dénombrement n’examinent-elles pas les points
intérieurs au polyèdre des solutions admissibles ?

REFERENCE BIBLIOGRAPHIQUE

1. Brans J.P. : Programmation mathématique, notes de cours, ULB.


2. Desbazeille G. : Exercices et problèmes de recherche opérationnelle, Dunod, Paris,
1976.
3. Gavaut L. ; Lauret A. : Techniques et pratique de la gestion des stocks, 3ème édition,
1985.
4. Kaufmann A. : Méthodes et modèles de la recherche opérationnelle, Tome I, Dunod,
Paris, 1972.
5. Kaufmann A. : Méthodes et modèles de la recherche opérationnelle, Tome II,
Dunod, Paris, 1968.
6. Lee A.M. : Les files d’attente. Théorie et application, Dunod, Paris, 1970.

Vous aimerez peut-être aussi