Voici les composants de
La programmation linéaire trouve des applications dans divers domaines d'études. Elle est largement utilisée en mathématiques et, dans une moindre mesure, en gestion, en économie et dans certains domaines de l'ingénierie. Il existe un lien étroit entre les programmes linéaires, les équations aux valeurs propres, le modèle d'équilibre général de John von Neumann et les modèles d'équilibre structurel (voir la programmation linéaire dual pour plus de détails). Parmi les secteurs qui utilisent des modèles de programmation linéaire, on peut citer les transports, l'énergie, les télécommunications et l'industrie manufacturière. Elle s'est avérée utile pour modéliser différents types de problèmes de planification , d'acheminement , d'ordonnancement , d'affectation et de conception.
Histoire


Le problème de la résolution d'un système d'inégalités linéaires remonte au moins à Fourier , qui publia en 1827 une méthode pour les résoudre, et dont la méthode d' élimination de Fourier-Motzkin tire son nom.
À la fin des années 1930, le mathématicien soviétique Leonid Kantorovich et l'économiste américain Wassily Leontief ont exploré indépendamment les applications pratiques de la programmation linéaire. Kantorovich s'est concentré sur les plannings de production, tandis que Leontief a étudié ses applications économiques. Leurs travaux novateurs sont restés largement méconnus pendant des décennies.
Le tournant décisif s'est produit pendant la Seconde Guerre mondiale, lorsque la programmation linéaire s'est imposée comme un outil essentiel. Elle a été largement utilisée pour relever les défis complexes du temps de guerre, notamment en matière de logistique des transports, de planification et d'allocation des ressources. La programmation linéaire s'est révélée inestimable pour optimiser ces processus tout en tenant compte de contraintes critiques telles que les coûts et la disponibilité des ressources.
Malgré son caractère initialement confidentiel, les succès obtenus pendant la guerre ont propulsé la programmation linéaire sur le devant de la scène. Après la Seconde Guerre mondiale, la méthode a acquis une large reconnaissance et est devenue une pierre angulaire dans divers domaines, de la recherche opérationnelle à l'économie. Les contributions méconnues de Kantorovich et Leontief à la fin des années 1930 ont finalement joué un rôle fondamental dans l'acceptation et l'utilisation plus larges de la programmation linéaire pour l'optimisation des processus de décision.
Les travaux de Kantorovich furent initialement négligés en URSS . À peu près à la même époque, l'économiste néerlando-américain T.C. Koopmans formula les problèmes économiques classiques sous forme de programmes linéaires. Kantorovich et Koopmans partagèrent plus tard le prix Nobel d'économie en 1975. En 1941, Frank Lauren Hitchcock formula également les problèmes de transport sous forme de programmes linéaires et proposa une solution très proche de la méthode du simplexe ultérieure . Hitchcock étant décédé en 1957, le prix Nobel d'économie n'est pas décerné à titre posthume.
De 1946 à 1947, George B. Dantzig développa indépendamment une formulation générale de programmation linéaire destinée à la résolution de problèmes de planification au sein de l'US Air Force. En 1947, il inventa également la méthode du simplexe qui, pour la première fois, permettait de résoudre efficacement le problème de la programmation linéaire dans la plupart des cas. Lors d'une rencontre entre Dantzig et John von Neumann pour discuter de sa méthode du simplexe, von Neumann conjectura immédiatement la théorie de la dualité en réalisant l' équivalence du problème sur lequel il travaillait en théorie des jeux . Dantzig en apporta la preuve formelle dans un rapport inédit intitulé « Un théorème sur les inégalités linéaires », daté du 5 janvier 1948. Ses travaux furent rendus publics en 1951. Après la guerre, de nombreuses industries les appliquèrent à leur planification quotidienne.
L'exemple initial de Dantzig consistait à trouver la meilleure affectation de 70 personnes à 70 postes. La puissance de calcul nécessaire pour tester toutes les permutations et sélectionner la meilleure affectation est immense ; le nombre de configurations possibles dépasse le nombre de particules dans l' univers observable . Cependant, il suffit d'un instant pour trouver la solution optimale en formulant le problème comme un programme linéaire et en appliquant l' algorithme du simplexe . La théorie sous-jacente à la programmation linéaire réduit considérablement le nombre de solutions possibles à vérifier.
Le problème de programmation linéaire a été démontré pour la première fois comme étant résoluble en temps polynomial par Leonid Khachiyan en 1979, mais une percée théorique et pratique plus importante dans le domaine est survenue en 1984 lorsque Narendra Karmarkar a introduit une nouvelle méthode de points intérieurs pour résoudre les problèmes de programmation linéaire.
Utilisations
La programmation linéaire est un domaine d'optimisation largement utilisé pour plusieurs raisons. De nombreux problèmes pratiques en recherche opérationnelle peuvent être formulés comme des problèmes de programmation linéaire. Certains cas particuliers de programmation linéaire, tels que les problèmes de flot de réseaux et les problèmes de flot de produits multiples , sont considérés comme suffisamment importants pour justifier de nombreuses recherches sur des algorithmes spécialisés. Un certain nombre d'algorithmes pour d'autres types de problèmes d'optimisation fonctionnent en résolvant des problèmes de programmation linéaire comme sous-problèmes. Historiquement, les idées issues de la programmation linéaire ont inspiré de nombreux concepts centraux de la théorie de l'optimisation, tels que la dualité, la décomposition et l'importance de la convexité et de ses généralisations. De même, la programmation linéaire a été largement utilisée lors des débuts de la microéconomie et elle est actuellement employée dans la gestion d'entreprise, notamment pour la planification, la production, le transport et la technologie. Bien que les problématiques de gestion modernes soient en constante évolution, la plupart des entreprises cherchent à maximiser leurs profits et à minimiser leurs coûts avec des ressources limitées. Google utilise également la programmation linéaire pour stabiliser les vidéos YouTube.
Forme standard
La forme standard est la forme habituelle et la plus intuitive pour décrire un problème de programmation linéaire. Elle se compose des trois parties suivantes :
- Une fonction linéaire (ou affine) à maximiser
- par exemple
- Les contraintes du problème sont de la forme suivante
- par exemple
- Variables non négatives
- par exemple
Le problème est généralement exprimé sous forme matricielle , et devient alors :
D'autres formes, telles que les problèmes de minimisation, les problèmes avec contraintes sur des formes alternatives et les problèmes impliquant des variables négatives , peuvent toujours être réécrites sous la forme d'un problème équivalent sous forme standard.
Exemple

Supposons qu'un agriculteur possède une parcelle de terre, disons L hectares , qu'il doit cultiver en blé, en orge ou en une combinaison des deux. Il dispose de F kilogrammes d'engrais et de P kilogrammes de pesticide. Chaque hectare de blé nécessite F₁ kilogrammes d'engrais et P₁ kilogrammes de pesticide, tandis que chaque hectare d'orge nécessite F₂ kilogrammes d'engrais et P₂ kilogrammes de pesticide. Soient S₁ et S₂ les prix de vente du blé et de l'orge par hectare. Si l'on note x₁ et x₂ respectivement les surfaces cultivées en blé et en orge , le profit peut être maximisé en choisissant les valeurs optimales de x₁ et x₂ . Ce problème peut être formulé comme le problème de programmation linéaire suivant, sous sa forme standard :
Sous forme matricielle, cela devient :
- maximiser
- sous réserve de
Forme augmentée (forme relâchée)
Les problèmes de programmation linéaire peuvent être convertis en une forme augmentée afin d'appliquer la forme classique de l' algorithme du simplexe . Cette forme introduit des variables d'écart non négatives pour remplacer les inégalités par des égalités dans les contraintes. Les problèmes peuvent alors s'écrire sous la forme matricielle par blocs suivante :
- Maximiser
où
Exemple
L'exemple ci-dessus est converti en la forme augmentée suivante :
où
Sous forme matricielle, cela devient :
- Maximiser
Dualité
Ellipsoid algorithm, following Khachiyan
The problem natively solved by the ellipsoid method is not a linear program ‘maximize
L'idée de la méthode des ellipsoïdes est d'encadrer la région admissible par une séquence d' ellipsoïdes de volume décroissant. À chaque itération, on vérifie si le milieu de chaque ellipsoïde est admissible ; si c'est le cas, la réponse est « oui ». Sinon, on constate que la région admissible est contenue dans une moitié spécifique de l'ellipsoïde, on trouve alors un ellipsoïde plus petit qui ne contient que cette moitié, et on répète l'opération. Dans l'algorithme de Khachiyan, on connaît une borne inférieure du volume d'une région admissible non vide , ce qui se traduit par une borne supérieure polynomiale du nombre d'itérations nécessaires avant de conclure à une incapacité. Les ellipsoïdes ne sont pas inclus les uns dans les autres ; seul leur volume diminue.
Point intérieur
L'algorithme de Khachiyan a joué un rôle déterminant dans l'établissement de la résolution en temps polynomial des programmes linéaires. Bien qu'il ne constitue pas une avancée majeure en termes de calcul, la méthode du simplexe étant plus efficace pour tous les programmes linéaires, à l'exception de familles spécialement conçues, l'algorithme de Khachiyan a néanmoins ouvert de nouvelles perspectives de recherche en programmation linéaire.
Contrairement à l'algorithme du simplexe, qui trouve une solution optimale en parcourant les arêtes entre les sommets d'un ensemble polyédrique, les méthodes de points intérieurs se déplacent à l'intérieur de la région admissible.
Algorithme projectif de Karmarkar
L'algorithme 87 de Vaidya
En 1987, Vaidya a proposé un algorithme qui s'exécute dans
L'algorithme 89 de Vaidya
En 1989, Vaidya a développé un algorithme qui fonctionne en
algorithmes de temps de parcimonie des entrées
En 2015, Lee et Sidford ont montré que la programmation linéaire peut être résolue dans
Algorithme actuel de multiplication matricielle
En 2019, Cohen, Lee et Song ont amélioré le temps d'exécution à
Comparaison des méthodes de points intérieurs et des algorithmes du simplexe
L'opinion actuelle est que l'efficacité des bonnes implémentations des méthodes basées sur le simplexe et des méthodes de points intérieurs est similaire pour les applications courantes de la programmation linéaire. Cependant, pour certains types de problèmes de PL, il se peut qu'un type de solveur soit meilleur qu'un autre (parfois beaucoup meilleur), et que la structure des solutions générées par les méthodes de points intérieurs diffère significativement de celle des méthodes basées sur le simplexe, l'ensemble de support des variables actives étant généralement plus petit pour ces dernières.