Académique Documents
Professionnel Documents
Culture Documents
Les problèmes d’optimisation font partie des problèmes rencontrés très souvent dans la
pratique, et méritent donc d’être analysés dans le cadre de ce cours. On peut, par exemple,
avoir à maximiser le profit d’une entreprise, minimiser le coût de transport, optimiser la
composition d’un produit alimentaire, etc. Tous ces problèmes se retrouvent sous le même
aspect théorique d’optimisation. On y trouve deux éléments principaux : la fonction dite
objectif, qui est la fonction que l’on veut maximiser ou minimiser (par exemple le coût d’un
transport), et les conditions dans lesquelles cette optimisation doit se réaliser, également
appelées contraintes. La programmation linéaire est une manière de résoudre ce type de
problème lorsque ces éléments sont représentés sous la forme de fonctions linéaires des
variables choisies. Bien que ceci paraisse être une limitation importante, nous n’étudierons
que ce cas, et nous verrons qu’il permet déjà de traiter de nombreuses situations.
1- Quelques exemples
En nutrition animale, on cherche à minimiser le coût des aliments tout en optimisant les
caractéristiques nutritionnelles. Ceci passe par la mise en place d’une formulation adéquate de
l’aliment, permettant l’équilibre nutritionnel, au moindre coût. La fonction à minimiser sera
donc le coût des aliments, les contraintes seront par exemple les taux de vitamines, de
protéines, etc. minimum pour une croissance optimale.
En production végétale, on recherche une maximisation des profits. Ceci implique une
production élevée, mais un coût d’intrants minimum. En outre, les conditions
environnementales doivent être respectées avec une déperdition minimale des apports, qui se
retrouvent ensuite dans les eaux de surface ou phréatiques. La fonction à maximiser sera alors
la quantité produite, avec les contraintes de pollution maximale et de coût d’intrant à ne pas
dépasser.
Une usine peut produire alternativement plusieurs produits de prix de vente différents. Chaque
produit nécessite des durées de travail différentes et des quantités de produits de base
différents. La durée de travail mensuelle étant limitée ainsi que les capacités de stockage, quel
doit être le pourcentage de chaque produit dans la production mensuelle pour optimiser le
bénéfice. La fonction à maximiser est le bénéfice, les contraintes étant la durée de travail et le
volume de stockage global.
On peut ainsi remarquer que de très nombreux cas réels se ramènent à des problèmes de
programmation linéaire. La question qui revient alors le plus souvent est la méthode de mise
en équation de ces situations. En effet, on est très rapidement submergé par la quantité de
données fournies et il n’est pas toujours aisé de s’y retrouver et d’extraire les fonctions à
optimiser et les contraintes adéquates. Cette modélisation mathématique du problème repose
tout d’abord sur l’identification des variables, ce qui est souvent le plus difficile, puis sur la
formulation des contraintes, souvent présentées sous forme d’inéquations (le temps de travail
ne peut être supérieur à …, la quantité de nutriments ne doit pas être inférieure à …, etc.)
enfin il est nécessaire de bien évaluer l’objectif du modèle qui doit logiquement conduire à la
mise en équation de la fonction objectif.
A B C coût
X1 5 10 10 8
X2 20 0 5 6
X3 10 10 2 5
La fonction à minimiser est donc le coût total qui correspond à la somme des coûts des
différents composants soit : f = 8.X1 + 6.X2 + 5.X3
Les contraintes du problème correspondent aux quantités minimales de chaque ingrédient (A,
B ou C) que l’animal doit manger, soit :
5.X1 + 20.X2 + 10.X3 ≥ SA
10.X1 + 10.X3 ≥ SB
10.X1 + 5.X2 + 2.X3 ≥ SC
X1, X2, X3 ≥ 0
Le modèle est alors posé. On remarque qu’il y a donc une fonction objectif et plusieurs
contraintes apparaissant sous la forme d’inégalités. Lorsque ces contraintes apparaissent sous
la forme d’égalité on dit que le programme linéaire est sous sa forme standard. L’ensemble
des fonctions se trouvent sous la forme de combinaisons linéaires des variables, ce qui justifie
le terme de programmation linéaire appliquée à la résolution de ce genre de problème. (le
terme de programmation est à prendre au sens qu’il avait au moment de la création de cette
méthode en 1947, à savoir optimisation, et non dans le sens moderne de programmation
informatique).
D’un point de vue théorique, un problème de programmation linéaire peut s’écrire, par
analogie à l’exemple ci-dessus, de la manière suivante :
n
min . f ( x ) = ∑ ci xi
i =1
A.x = b
x≥0
Il s’agit de minimiser (ou maximiser) une fonction qui est une combinaison linéaire de
variables représentées par le vecteur x = ( x1 ,..., xn ) . La matrice A représente le poids des
variables dans les contraintes. On peut remarquer que contrairement à l’exemple ci-dessus, les
contraintes sont mises sous une forme standard (avec une égalité, plutôt qu’une inégalité). On
verra plus loin, que toute inégalité peut être mise sous cette forme, moyennant la création de
variables supplémentaires.
x2
-2x1 + x2 = 2
x1 + 2x2 > 6
B
-2x1 + x2 < 2
x1 + 2x2 < 6
-2x1 + x2 > 2 A
x1 + 2x2 = 6
x1 + 2x2 < 6
-2x1 + x2 < 2 x1
O C
x2 -x1 + x2 = 12/5
B
-x1 + x2 = 0
x1
La résolution graphique d’un tel problème se ramène donc à un tracé des courbes
représentants les contraintes, puis au repérage du sommet du quadrilatère maximisant (ou
minimisant) la fonction objectif. L’exemple ci-dessus est présenté avec deux variables, mais
le principe pour plusieurs variables est le même. On peut cependant imaginer aisément que la
difficulté d’utilisation de cette méthode graphique croît singulièrement avec le nombre de
variables. C’est pourquoi on utilise plus fréquemment la méthode dite du simplexe.
3- Méthode du simplexe
La méthode du simplexe date de 1947 et a été mise au point par G.B Dantzig (1914 – 2005).
On peut noter, pour la petite histoire, que, bien que conseiller en Mathématiques auprès du
Ministère de la Défense des USA, la première application de l’algorithme du simplexe par
Dantzig a été pour déterminer la meilleure alimentation au moindre coût. Ceci l’a conduit à
évaluer un système comportant 77 inconnues.
x2
x1
O C
x1 x2 x3 x4
Variables de base fonction -1 1 0 0
x3 6 1 2 1 0
x4 2 -2 1 0 1
Pour faire avancer l’algorithme il faut déterminer quelles sont les variables entrantes et
sortantes permettant de passer du sommet O au sommet suivant. Pour déterminer la variable
entrante on regarde la seconde ligne du tableau donnant les coefficients de la fonction
objectif. La variable correspondant au coefficient le plus élevé est la variable entrante (ici x2).
(cf. cellules encadrées en noir du tableau)
Pour déterminer l’élément sortant on considère la deuxième colonne que l’on divise par la
colonne de la variable entrante (on obtient donc 6/2 = 3 et 2/1 = 2), la variable sortante est
celle qui obtient le plus faible poids (ici x4). (cf. cellules doublement encadrées)
Cette méthode nous conduit donc au point de variables de base (x2, x3) et de variables hors
base (x1, x4). On peut remarquer qu’il s’agit du point A.
Le tableau du simplexe doit être désormais transformé pour tenir compte de ce déplacement
du sommet optimal.
On considère comme colonne de référence la colonne de la variable entrante, et on s’arrange,
à partir de manipulations sur les lignes et colonnes, pour obtenir cette colonne toute nulle sauf
la case correspondant à la ligne de la variable sortante, qui doit être égale à 1. (case grisée).
x1 x2 x3 x4
Variables de base Fonction -1 1 0 0
x3 6 1 2 1 0
x4 2 -2 1 0 1
Dans notre cas cette case est déjà égale à 1, si sa valeur avait été ‘a’ par exemple, on aurait
divisé toute la ligne par ‘a’. Pour que les deux cases situées au-dessus de la case grisée
prennent la valeur 0, on va successivement soustraire la dernière ligne à la première, puis
deux fois la dernière ligne à la deuxième. Enfin on remplace l’ancienne variable de base x4,
par la nouvelle x2 dans la case en bas à gauche.
x1 x2 x3 x4
Variables de base Fonction-2 1 0 0 -1
x3 2 5 0 1 -2
x2 2 -2 1 0 1
Pour poursuivre on cherche la nouvelle variable entrante, c’est à dire celle dont la valeur dans
la première ligne est maximale : x1 est donc la nouvelle variable entrante.
La variable sortante est déterminée en divisant la deuxième colonne par la troisième (cellules
encadrées) : on obtient donc les valeurs 2/5 et 2/-2=-1. Cette deuxième valeur n’est pas
acceptable car ne sont pris en compte que les diviseurs positifs. La valeur minimale (la seule
ici) est celle obtenue pour x3. Cette variable est donc sortante.
Le sommet optimal suivant est donc le sommet ayant comme variable de base (x1, x2) et
variables hors base (x3, x4). Selon les calculs ci-dessus il s’agit donc du sommet B.
Le tableau du simplexe correspondant à ce sommet est alors obtenu de la même manière que
précédemment :
On cherche à remplacer la valeur grisée (correspondant aux valeurs entrantes et sortantes) par
la valeur 1, en divisant cette ligne par 5. Les autres valeurs de la colonne de la valeur entrante
sont ensuite mises à 0.
x1 x2 x3 x4
Variables de base Fonction-2 1 0 0 -1
x3 2 5 0 1 -2
x2 2 -2 1 0 1
x1 x2 x3 x4
Variables de base Fonction-12/5 0 0 -1/5 -3/5
x1 2/5 1 0 1/5 -2/5
x2 14/5 0 1 2/5 1/5
On remarque alors que les éléments de la première ligne sont tous inférieurs ou égaux à 0, le
processus évolutif est donc terminé. On est arrivé au point maximisant la fonction objectif. Ce
point est donc bien le point B(2/5, 14/5, 0, 0). La valeur de la fonction en ce point est 12/5.
Le résultat est bien le même que celui obtenu par la solution graphique. La méthode peut
sembler plus complexe et plus lourde, mais elle est aisément programmable, et dès lors que le
nombre de variables augmente, elle est la seule utilisable.
4- Applications
1
Castrodeza C, Lara P, Peña T. 2005. Multicriteria fractional model for feed formulation : economic, nutritional
and environmental criteria. Agricultural Systems, 86 : 76-96
2
Singh G, Singh S, Singh J. 2004. Optimisation of energy inputs for wheat crop in Punjab. Energy Conversion
and Management, 45 : 453-465
Le résultat montre que suivant la localisation de la zone de test (les conditions agro-
climatiques étant différentes) les types d’énergies les plus productives sont différents. Mais
surtout, dans tous les cas, il est démontré une sur-consommation énergétique allant de 7 à
22%. C’est à dire qu’en baissant la consommation énergétique de cette valeur, la quantité
produite ne varierait pas.
3
Crosson P, O’Kiely P, O’Mara FP, Wallace M. 2006.The development of a mathematical model to investigate
Irish beef production systems. Agricultural Systems, 89 : 349-370