Vous êtes sur la page 1sur 11

Optimisation – Programmation linéaire

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.

Si l’on applique ces règles au premier exemple on obtient alors :


Supposons que l’alimentation se compose de 3 produits X1, X2 et X3.
On considère que ces produits comportent 3 éléments nutritifs nécessaires, A, B et C qui
doivent être ingérés avec une quantité minimale SA, SB et SC.
La composition des 3 produits alimentaires dans chaque composant est donné dans le tableau
ci-dessous, ainsi que leur prix (en unités arbitraires)

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

2- Résolution graphique d’un problème de programmation linéaire

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.

Prenons un exemple de maximisation à deux variables afin de simplifier la représentation


graphique :
max . − x1 + x2
x1 + 2 x2 ≤ 6
− 2 x1 + x2 ≤ 2
x1 , x2 ≥ 0
Dans le plan x1, x2, la dernière contrainte nous amène à ne considérer que le quadrant
supérieur droit. Dans ce quadrant on repère les espaces correspondants aux deux autres
contraintes. Pour cela on trace les droites représentatives des équations x1 + 2x2 = 6, et
–2x1 + x2 = 2, chacune séparant l’espace en deux zones. L’intersection des zones
correspondants aux contraintes définies ci-dessus définit la région réalisable (zone hachurée),
regroupant l’ensemble des solutions réalisables.

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

Pour déterminer la solution optimale, on trace le faisceau de droites correspondant à la


fonction objectif, en faisant varier la constante A de : -x1 + x2 = A, et on cherche la droite qui
maximise cette constante.

x2 -x1 + x2 = 12/5

B
-x1 + x2 = 0

x1

En faisant glisser la droite parallèlement à elle même, on détermine la valeur maximale de A


telle que cette droite, représentative de la fonction objectif, coupe la région optimale. Ici cette
limite est obtenue pour A = 12/5, le point de contact entre la courbe et la région optimale étant
le point B (2/5, 14/5). Ce point est donc la solution au problème d’optimisation initial.

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.

31- variables d’écart


L’algorithme du simplexe s’applique à un problème sous sa forme standard, c’est à dire dans
lequel les contraintes sont exprimées sous la forme d’égalités. Or, nous avons vu
précédemment que généralement les contraintes se présentent sous forme d’inégalités ; Il
convient donc de les transformer. Pour cela, on fait intervenir des variables dites d’écart.
Si une contrainte s’écrit : a1x1 + … + anxn ≤ A, pour la mettre sous une forme d’égalité, il
suffit de faire intervenir une nouvelle variable xn+1 ≥ 0, telle que
a1x1 + … + anxn + xn+1 = A
Si la contrainte initiale est supérieure ou égale à A, il suffit de soustraire la nouvelle variable
d’écart pour obtenir une égalité.
Dans un système réel on est ainsi amené à introduire autant de variables d’écart (positives ou
nulles) qu’il y a d’inéquations dans l’expression des contraintes.

32- variables de base et variables hors base


Reprenons l’exemple traité graphiquement dans le paragraphe précédent et mettons le sous sa
forme standard en faisant intervenir les deux variables d’écart x3 et x4. les contraintes
s’écrivent alors :
x1 + 2x2 + x3 = 6
-2x1 + x2 + x4 = 2
x1 , x2 , x3 , x4 ≥ 0

x2

x1

O C

Si nous nous intéressons aux valeurs des variables xi en chacun de points 0, A, B et C, on


obtient :
En O, x1 = x2 = 0. Les deux équations de contraintes complètent les valeurs pour
x3 = 6 et x4 = 2.
En A, x1 = 0. De plus A appartient à la droite –2x1 + x2 = 2, d’où x2 =2. La deuxième
contrainte impose x4 = 0. La première contrainte conduit à x3 = 2.
En B, x1 = 2/5 et x2 = 14/5 comme calculés plus haut. Ceci, associé aux deux
contraintes, mène à x3 = x4 = 0.
En C, x1 = 6, x2 = 0. D’après la première contrainte x3 = 0. Et d’après la seconde
x4 = 14.
En résumé dans la base (x1, x2, x3, x4), les points ont les coordonnées suivantes :
O(0, 0, 6, 2)
A(0, 2, 2, 0)
B(2/5, 14/5, 0, 0)
C(6, 0, 0, 14)
On observe qu’en chaque angle du quadrilatère des solutions possibles, certaines variables
sont nulles et d’autres non nulles. Les variables non nulles sont appelées variables de bas, les
variables nulles sont appelées variables hors base.

33- tableau du simplexe


L’algorithme du simplexe est basé sur l’utilisation d’un tableau qui va évoluer au fur et à
mesure de l’avancement du traitement. Ce tableau est défini au départ pour le premier angle
possible du quadrilatère, à savoir dans notre cas le point O.

x1 x2 x3 x4
Variables de base fonction -1 1 0 0
x3 6 1 2 1 0
x4 2 -2 1 0 1

La première colonne correspond aux variables de base au point considéré (ici O)


La deuxième colonne correspond à la matrice b, c’est à dire aux valeurs auxquelles sont
égales les contraintes.
Les 4 dernières valeurs de la seconde ligne correspondent aux coefficients de la fonction
objectif dans la base indiquée à la première ligne (x1, x2, x3, x4), on remarque que les
coefficients de la fonction d’objectif est nulle pour les variables d’écart (x3 et x4)
Enfin les 8 dernières valeurs correspondent aux coefficients des fonctions de contraintes.

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.

Le tableau final est alors pour le sommet A:

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

Le tableau final pour le point B est alors :

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

41- Modèle multicritère en formulation alimentaire 1


Le but est de trouver la formulation alimentaire la moins onéreuse satisfaisant un niveau
nutritionnel correct. Parallèlement à ces objectifs, le modèle doit prendre en compte d’autres
considérations comme la minimisation de tout élément pouvant avoir des conséquences
néfastes sur l’environnement, le respect de certains équilibres nutritionnels, la limitation de
certains apports.
La programmation linéaire classique, bien que souvent utilisée dans cette situation a été
volontairement laissée de côté pour diverses raisons, notamment l’impossibilité de prendre en
compte des ratios (les équations perdent alors leur linéarité), par exemple le rapport
lysine/energie dans le cas de l’alimentation du porc. Le modèle choisi est alors la
programmation mathématique à critères multiples (MCMP) qui permet en particulier de traiter
simultanément plusieurs fonctions objectifs. En outre, dans le but de dépasser la rigidité des
contraintes, la MCMP est modifiée afin de permettre une programmation par objectifs. Dès
lors les contraintes deviennent flexibles ainsi que les objectifs.
Les auteurs justifient leurs choix à partir de 5 critères :
- le lien clair entre le modèle et le monde réel
- l’interactivité de la méthode
- la qualité du résultat, visible notamment par la prise en compte des éventuelles
impossibilités et la proposition d’amélioration des contraintes
- la généralisation aisée du modèle
- la compréhension aisée de la méthode mathématique employée par l’utilisateur

42- Optimisation des apports en énergie en agriculture 2


L’utilisation de variétés de blé à haut rendement a entraîné l’accroissement de l’utilisation
d’engrais et d’intrants divers. De nombreuses études ont montré que les producteurs utilisent
un excès important des intrants, surtout lorsqu’ils sont à bas coûts, ou disponibles en quantité.
Le travail présenté consiste à évaluer la quantité d’énergie optimale nécessaire pour obtenir la
production actuelle.
De nombreuses sources d’énergie sont prises en compte : humaine, animale, diesel, électrique,
mécanique, engrais, chimique, hydraulique. La productivité de chacune d’entre elle est
analysée en rapport avec la production de blé. De même l’efficacité technique de chaque
producteur participant à l’étude est évaluée.
Le calcul de l’optimisation est réalisé par la méthode de programmation linéaire, où la
fonction objectif est donnée par la production de blé, les contraintes dépendant des énergies
mises en jeu.

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.

43- Gestion de production animale 3


La réforme de la Politique Agricole Commune entraîne des changements importants dans les
critères d’attribution des primes, qui représentent un élément important de la marge
bénéficiaire des éleveurs. Le modèle mis en place (Grange Beef Model) est un modèle de
programmation linéaire qui fait intervenir plusieurs scenarii comme les variations potentielles
des prix du bœuf ou de l’alimentation bovine, les développements techniques éventuels ou la
limitation d’utilisation de l’azote.
Le modèle est un modèle annuel comportant 1013 activités et 432 contraintes. La fonction
objectif tend à maximiser la marge bénéficiaire de l’exploitation.
Les auteurs montrent que leur modèle est utilisable pour évaluer l’état actuel des exploitations
par rapport à une production optimale, ainsi que pour prévoir leur sensibilité à des variations
de prix ou de montant de subventions.

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

Vous aimerez peut-être aussi