1. Introduction
La modélisation est une étape primordiale dans une démarche de formalisation et de résolution
d’un problème de Recherche Opérationnelle, en abrégé RO. Il y a beaucoup de types différents
de modèles mathématiques (modèles linéaires, graphes, flots, etc), mais nous nous focaliserons
dans ce chapitre sur les modèles linéaires.
Afin de familiariser les étudiants avec les modèles de la programmation linéaire, nous allons
détailler les différentes étapes de modélisation sur quelques exemples classiques de problèmes
de RO rencontrés dans l’entreprise ou ailleurs.
Avant de résoudre un problème de RO, il faut bien commencer par sa traduction en langage
mathématique. Un modèle mathématique, telle que considéré dans ce chapitre, est une
construction mathématique utilisée pour représenter certains aspects significatifs de problèmes
du monde réel. Notons que nous ne nous intéressons qu’aux modèles d’optimisation, et plus
particulièrement aux modèles linéaires.
— Variables : elles représentent les composantes du modèle qui peuvent être modifiées pour
créer des configurations différentes.
— Fonction objectif : cette fonction assigne une valeur à chaque configuration différente. Le
terme "objectif" vient du fait que l’objectif est d’optimiser cette fonction.
— Contraintes : elles décrivent les relations entre les variables représentant les restrictions
auxquelles est sujette le problème à modéliser.
Ecriture du modèle :
Tout d’abord on va résumer les données de l’énoncé du problème dans un tableau puis on
passera à la modélisation.
A B Disponible
M 1h 2h 8h
P 2 kg 2 kg 10 kg
Q 9 kg 4 kg 36 kg
Profit unitaire 50 DH 60 DH
A) Variables
Quelles sont les informations dont doit disposer le directeur de l’entreprise XYZ pour
considérer que son problème est résolu ? Il suffit de connaître la quantité du produit A et
la quantité du produit B à fabriquer quotidiennement, n’est-ce pas ? Agissons comme si ces
quantités nous étaient connues et dénotons-les par :
B) Fonction objectif
Quel profit l’entreprise XYZ retirera-t-elle de la vente de ces deux produits ? Il s’agit
d’additionner les bénéfices à tirer de chacun des deux produits :
— pour le produit A, elle retire 50 DH par unité et en fabrique x1 unités ; cette production lui
rapporte donc un profit de (50 x1 ) DH ;
— de même, la quantité x2 du produit B lui permet de faire un profit de (60 x2 ) DH.
Le profit total à tirer des deux produits s’élève donc à :
(50 x1 + 60 x2 ) DH
z = 50 x1 + 60 x2
Nous cherchons évidemment à rendre z aussi grand que possible en donnant à x1 et x2 des
valeurs appropriées.
La grandeur z est une fonction qui, à chaque plan de production (Quantité de A, Quantité
de B), associe le nombre de dirhams que l’entreprise retirerait comme profit si elle adoptait ce
plan. Cette fonction z, qui traduit l’objectif de notre problème, s’appelle fonction objectif ou
fonction économique. Et, comme nous cherchons à rendre z aussi grand que possible, nous
écrivons :
Maximiser z où z = 50 x1 + 60 x2
ce que généralement l’on convient d’abréger comme suit :
Max z = 50 x1 + 60 x2
C) Contraintes
S’il ne s’agissait pour l’entreprise XYZ que de maximizer z, il suffirait de laisser augmenter
x1 ou x2 pour que z prenne une valeur aussi grande qu’elle le souhaite. Il y a bien sûr
des empêchements naturels liés à la rareté à la rareté des facteurs de production, appelés
contraintes, qui freinent le rêve d’un profit infini. Prenons en considération tour à tour chacune
des contraintes.
— Contrainte relative à la machine M : Il faut 1 h de machine par unité de A, et 2 h par unité
de B ; il faudra donc en tout (1x1 + 2x2 ) heures de machine, ceci devant rester inférieur ou égal
aux 8 h disponibles, d’où :
x1 + 2x2 6 8 (M)
On emploie le signe « 6 », et non « = », car il n’est pas obligatoire que toutes les heures
disponibles soient utilisées pour la fabrication des produits et , bien qu’il ne soit pas interdit
qu’il en soit ainsi.
— Contraintes relatives aux matières premières P et Q : En s’inspirant de la contrainte relative
à la machine, ces contraintes s’écrivent tout naturellement :
x1 + x2 6 5 (P)
x1 > 0, x2 > 0,
L’entreprise UVW voulait qu’on l’aide à déterminer le nombre à produire de chaque type de
chassis (nombre de lots par semaine) de façon à maximiser le profit total.
Ecriture du modèle :
Aider l’entreprise UVW à résoudre son problème, c’est d’abord modéliser ce problème sous
forme d’un modèle d’optimisation.
A) Variables
Quelles sont les quantités de chassis que l’entreprise devrait produire par semaine, si elle veut
maximiser son profit ? Les variables de décision seront :
B) Fonction objectif
Le fonction objectif est le profit total, qui vaut 300 x1 + 500 x2 , en l’exprimant en dirhams. Nous
voulons maximiser ce profit :
Max z = 300 x1 + 500 x2
C) Contraintes
Les contraintes concernent tout d’abord les capacités de production :
x1 6 4 (A1)
2x2 6 12 (A2)
3x1 + 2x2 6 18 (A3)
x1 > 0, x2 > 0,
Ecriture du modèle :
Tout d’abord on va résumer les données de l’énoncé du problème dans un tableau puis on
passera à la modélisation. Le tableau suivant résume les données afférentes à ce problème :
P Q Besoins minimaux
A 2 1 16
B 1 1 12
C 1 3 18
Coût unitaire 20 DH 40 DH
A) Variables
Quelles sont les quantités d’aliments que l’agriculteur devrait acheter, s’il veut minimiser son
le coût ? Les variables de décision seront :
x1 = quantité d’aliment P qu’il faut acheter
x2 = quantité d’aliment Q qu’il faut acheter
B) Fonction objectif
Le fonction objectif est le coût total, qui vaut 300 x1 + 500 x2 , en l’exprimant en dirhams. Nous
voulons minimiser ce coût :
Min z = 20 x1 + 40 x2
C) Contraintes
Chacun des trois éléments nutritifs à considérer donne lieu à une contrainte, qui vise à exiger
que les aliments, dans leur ensemble, satisfassent les besoins quotidiens du troupeau. On
obtient :
Les contraintes ci-dessus emploie le signe « > » parce qu’il faut respecter les exigences de
consommation minimales, mais que celles-ci peuvent être dépassées.
Enfin, il faut pas oublier qu’on peut pas acheter des quantités négatives de P ou Q :
x1 > 0, x2 > 0
Par exemple, le coût c12 de transport de l’usine 1 vers le client 2 est égal à 17, soit c12 = 17.
L’objectif de l’entreprise est de minimiser le coût de transport des produits acheminés des
usines vers les clients.
Ecriture du modèle :
Afin de mieux comprendre le problème, nous pouvons le représenter sous forme d’un
diagramme comme suit. Les lignes qui relient les usines aux clients peuvent être considérées
comme des routes. On y indique leur coût de transport unitaire respectif.
Pour écrire le modèle de ce problème, l’opération la plus importante et la plus délicate consiste
à trouver la bonne indexation des variables.
A) Variables
Le choix des variables est imposé par les notations de l’énoncé du problème. Aux données cij ,
on associe les variables xij :
B) Fonction objectif
Le fonction objectif n’est autre que la somme des coûts de transport :
C) Contraintes
Comme il est impossible d’expédier plus d’unités d’une usine donnée qu’il n’y en a de
disponibles, nous sommes confrontés aux deux contraintes (contraintes d’offre) :
De plus, il faut approvisionner chacun des trois clients avec la quantité requise, ce qui nous
donne trois nouvelles contraintes :
Comme il n’est pas possible d’expédier des quantités négatives, nous avons encore les six
contraintes de non-négativité suivantes :
xij > 0, i = 1, 2 et j = 1, 2, 3
(maximiser ou minimiser) une fonction linéaire de n variables, ces variables étant assujetties à
respecter un ensemble de m contraintes également linéaires.
La forme la plus générale d’un problème de la programmation linéaire (on dit aussi programme
linéaire) est la suivante :
optimiser z = c1 x1 + c2 x2 + · · · + cn xn
6
ai1 x1 + ai2 x2 + · · · + ain xn = bi i = 1, . . . , m
>
xj > 0, i = 1, . . . , n
Cette forme générale peut être simplifiée : il est en effet possible de ramener le modèle ci-dessus
à des formes plus compactes, mais équivalentes, en particulier aux formes dites "canonique" et
"standard". Il faut tout d’abord noter qu’il est toujours possible de ramener :
— un problème de minimisation à un problème de maximisation et inversement. En fait,
on a :
Min z = − Max − z
— toute inégalité de type supérieur ou égal (>) à une inégalité de type inférieur ou égal (6)
et inversement ; il suffit de la multiplier par −1. En fait, soit a et b deux réels, on a :
a6b ←→ −a > −b
— toute égalité à deux inégalités de type que l’on veut (6 ou >). En fait, soit a et b deux réels,
on a :
a>b a>b −a 6 −b
a = b ←→ ←→ ←→
a6b −a > −b a6b
— toute inégalité à une égalité et ceci par l’introduction de variables d’écart non négatives.
En fait, soit a et b deux réels, on a :
a6b ←→ a + c = b où c > 0
a>b ←→ a − c = b où c > 0
— une variable de signe quelconque à être non négative en l’écrivant comme différence de
deux variables positives. En fait, soit a réel, on a :
Forme canonique
En programmation linéaire, un problème de maximisation est mis sous forme canonique s’il
s’écrit comme :
maximiser z = c1 x1 + c2 x2 + · · · + cn xn
ai1 x1 + ai2 x2 + · · · + ain xn 6 bi i = 1, . . . , m
xj > 0, i = 1, . . . , n
De même, un problème de minimisation est mis sous forme canonique s’il s’écrit comme :
minimiser z = c1 x1 + c2 x2 + · · · + cn xn
ai1 x1 + ai2 x2 + · · · + ain xn > bi i = 1, . . . , m
xj > 0, i = 1, . . . , n
Forme standard
Pour obtenir la forme standard d’un programme linéaire, il faut transformer toutes les
contraintes d’inégalités en des égalités. Un problème de programmation linéaire est mis sous
forme standard s’il s’écrit comme :
Max z = cx Min z = cx
A=b ou A=b
x> 0 x> 0
La forme standard sera celle généralement utilisée pour la description des algorithmes ; en
particulier l’algorithme du simplexe.
Si on a un programme linéaire sous une forme quelconque, on peut en effet toujours le réécrire
sous une autre forme moyennant des éventuelles transformations. Certaines transformations
présentent malheureusement l’inconvénient d’augmenter le nombre des contraintes et des
variables.
3.2. Terminologie
Pour un programme, mis sous forme canonique ou standard, on appellera :
— Solution réalisable tout vecteur x satisfaisant toutes les contraintes (y compris celles de
non-négativité)
— Solution optimale toute solution réalisable optimisant la fonction objectif.
— Région réalisable l’ensemble des solutions réalisables.