Introduction à la Programmation Linéaire
En mathématiques, les problèmes de programmation linéaire sont des problèmes d'optimisation
où la fonction objectif est une fonction linéaire de chaque variable considérée et
ou les contraintes sont toutes linéaires.
Les problèmes de programmation linéaire sont les problèmes d'optimisation les plus faciles à
rèsoudre car toutes les contraintes sont linéaires. Beaucoup de problèmes réels
de recherche opérationnelle peuvent être exprimés comme un problème de programmation linéaire.
Pour cette raison un grand nombre d'algorithmes pour la résolution d'autres problèmes
d'optimisation sont fondés sur la résolution de problèmes linéaires.
La programmation linéaire est vraiment née dans les années 1950 lors que George Dantzig
conçu l´algorithme du simplexe. Beaucoup utilisée au départ par l'armée pour la logistique,
elle s'est développée au cours des années 1980 sous l'impulsion de la méthode des ellipsoïdes
puis des points intérieurs. Grâce à l'introduction de la mixité, la programmation linéaire est
maintenant un outil incontournable pour l'optimisation, notamment pour les ordonnancement.
Définition de la programmation linéaire
Un programme linéaire est un objet mathématique qui se compose :
- De variables au sens mathématique du terme, c'est-à-dire des inconnues dont on ignore
la valeur, la résolution du programme linéaire étant l'attribution de valeurs correctes à
ces inconnues
- de contraintes sous forme d'équations linéaires, c'est-à-dire des égalités ou inégalités dont
un terme puisse se mettre sous la forme d'un produit scalaire entre un vecteur d'inconnues
et un vecteur de constantes et dont l'autre terme soit constant.
- d'une fonction objectif souvent linéaire mais qui peut prendre d'autre forme. Ici on se
limitera aux fonctions objectifs linéaires.
On peut donc mettre un programme sous la forme normalisée suivante, avec x un vecteur de variable réelles :
Min z = c*x
s.c. Ax <= b
x >= 0
Format de fichier LP
Le format de fichier LP est un format qui privilégie l'écriture d'un programme linéaire en
ligne (comme la forme normalisée).
Ce type de fichier de décompose en plusieurs champs :
- Maximize/Minimize : déclaration de la fonction objectif
- Subject to : déclaration des contraintes
- Bounds : les bornes des variables si elles sont bornées
- Generals-Binaries-integers : les types des variables
Un fichier LP se présente sous la forme d'un fichier éditable avec un éditeur de texte et
ayant les champs définis suivant les problèmes à traiter.
Exemple de fichiers LP :
Maximize \ commentaire
Obj : 9*x1 + 7*x2 + 3*x3 - x4 \ fonction objectif
Subject to \ les contraintes
C1 : x1 - 3*x2 + x5 > 12
C2 : x3 + 9*x4 + x5 < 42
Bounds \ bornes des variables
-3 <= x1 < 45
x2 <= 12
Generals
x3
Binaries \ variables booléennes
x4 , x5
End \ fin du fichier LP