### 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