Programmation lin€aire 1
Programmation linéaire
En math€matiques, les probl•mes de programmation linéaire (PL) sont des probl•mes d'optimisation o‚ la fonction
objectif et les contraintes sont toutes lin€aires. N€anmoins, la plupart des r€sultats pr€sent€s ici sont €galement vrais
si l'objectif est une fonction monotone croissante de chaque variable consid€r€e. La programmation lin€aire d€signe
€galement la mani•re de r€soudre les probl•mes lin€aires.
La programmation lin€aire est un domaine central de l'optimisation, car les probl•mes de PL sont les probl•mes
d'optimisation les plus faciles - toutes les contraintes y €tant lin€aires. Beaucoup de probl•mes r€els de recherche
op€rationnelle peuvent ƒtre exprim€s comme un probl•me de PL. 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.
Le terme programmation lin€aire suppose que les solutions „ trouver doivent ƒtre repr€sent€es en variables r€elles.
S'il est n€cessaire d'utiliser des variables discr•tes dans la mod€lisation du probl•me, on parle alors de
programmation lin€aire en nombres entiers (PLNE). Il est important de savoir que ces derniers sont nettement plus
complexes „ r€soudre que les PL „ variables continues.
Exemple
Consid€rons un agriculteur qui poss•de des terres, de superficie €gale „ H hectares, dans lesquelles il peut planter du
bl€ et du ma…s. L'agriculteur poss•de une quantit€ E d'engrais et I d'insecticide. Le bl€ n€cessite une quantit€ E1
d'engrais par hectare et I1 d'insecticide par hectare. Les quantit€s correspondantes pour le ma…s sont not€es E2 et I2.
Soit P1 le prix de vente du bl€ et P2 celui du ma…s. Si l'on note par x1 et x2 le nombre d'hectares „ planter en bl€ et en
ma…s, alors le nombre optimal d'hectares „ planter en bl€ et en ma…s peut ƒtre exprim€ comme un programme lin€aire:
(maximiser le revenu net)
(borne sur le nombre total d'hectares)
(borne sur la quantit€ d'engrais)
(borne sur la quantit€ d'insecticide)
(on ne peut pas planter un nombre n€gatif d'hectares)
Théorie
Comme l'exemple pr€c€dent le montre, la programmation consiste „ d€terminer disons n variables, afin
de maximiser l'objectif lin€aire
sous diff€rentes contraintes, comme par exemple les m in€galit€s suivantes
pour i allant de 1 „ m. De telles contraintes permettent d'inclure des contraintes de signe, comme par exemple
ou . L'adoption de l'€criture matricielle de la forme standard donne
On peut, lors de la programmation lin€aire, chercher „ minimiser la fonction objectif. On se ram•ne au cas pr€c€dent
(la forme standard) en cherchant „ maximiser .
Programmation lin€aire 2
D'un point de vue g€om€trique, les contraintes lin€aires forment un poly•dre convexe. Si la fonction objectif est elle
aussi lin€aire, tous les optima locaux sont €galement des optima globaux; cela reste vrai si elle est monotone
croissante sur chaque variable consid€r€e, le cas lin€aire ne repr€sentant qu'un cas particulier dont la propri€t€ n'est
d'ailleurs pas utilis€e.
Il y a deux cas o‚ il n'existe pas de solution optimale. Le premier est lorsque les contraintes se contredisent
mutuellement (par exemple ). Dans un tel cas, le polytope est vide et il n'y a pas de solution
optimale puisqu'il n'y a pas de solution du tout. Le PL est alors infaisable.
Le poly•dre peut €galement ƒtre non-born€ dans la direction d€finie par la fonction objectif (par exemple
tel que , , ). Dans ce cas, il n'y a pas de solution optimale puisqu'il est possible de
construire des solutions satisfaisant les contraintes avec des valeurs arbitrairement €lev€es (ou basses) de la fonction
objectif.
En dehors de ces deux cas (qui sont finalement rares dans les probl•mes pratiques), l'optimum est toujours atteint „
un sommet du polytope. Cependant, l'optimum n'est pas n€cessairement unique: il est possible d'avoir un ensemble
de solutions optimales correspondant „ une arƒte ou „ une face du polytope, voire au polytope en entier.
Dualité
Tous les programmes lin€aires peuvent s'€crire[1] sous la forme suivante:
O‚ et sont des vecteurs de taille , un vecteur de taille , et une matrice de taille . Si on
d€signe cette repr€sentation sous le terme de forme primale, on d€signe alors sous le terme de forme duale le
probl•me suivant:
O‚ , et sont les mƒmes et un vecteur de taille . (Note: )
Les deux probl•mes sont tr•s fortement li€s. Si l'un d'entre eux poss•de une solution optimale, alors l'autre aussi. De
plus, les deux solutions ont alors la mƒme valeur (w*=z*). Si l'un d'entre eux est non-born€, l'autre ne poss•de pas de
solution.
Outre son int€rƒt th€orique, le probl•me dual poss•de de tr•s int€ressantes applications €conomiques. † chaque
contrainte primale correspond une variable duale. La valeur de cette variable dans la solution optimale repr€sente le
co‡t marginal associ€ „ la contrainte primale.
Algorithmes de la programmation linéaire
L'algorithme du simplexe permet de r€soudre les probl•mes de PL en construisant tout d'abord une solution
r€alisable qui est un sommet du polytope puis en se d€plaˆant selon les arƒtes du polytope pour atteindre des
sommets pour lesquels la valeur de l'objectif est de plus en plus grande, jusqu'„ atteindre l'optimum. Bien que cet
algorithme soit efficace en pratique et qu'il soit assur€ de trouver l'optimum, son comportement dans le pire cas peut
ƒtre mauvais. Il est ainsi possible de construire un PL pour lequel la m€thode du simplexe requiert un nombre
d'€tapes exponentiel en la taille du probl•me. Ainsi, pendant plusieurs ann€es, savoir si la PL €tait un probl•me
NP-complet ou polynomial est rest€ une question ouverte.
Le premier algorithme polynomial pour la PL a €t€ propos€ par Leonid Khachiyan en 1979. Il est bas€ sur la
m€thode de l'ellipso…de en optimisation non lin€aire pr€c€demment propos€e par Naum Shor. Cette m€thode est
elle-mƒme une g€n€ralisation de la m€thode de l'ellipso…de en optimisation convexe due „ Arkadi Nemirovski (Prix
Programmation lin€aire 3
John von Neumann 2003), et „ D. Yudin.
Cependant, l'efficacit€ pratique de l'algorithme de Khachiyan est d€cevante : l'algorithme du simplexe est
pratiquement toujours plus performant. En revanche, ce r€sultat a encourag€ la recherche dans les m€thodes de point
int€rieur. Par opposition „ l'algorithme du simplexe qui consid•re uniquement la fronti•re du polytope d€finie par les
contraintes, les m€thodes de point int€rieur €voluent „ l'int€rieur du polytope.
En 1984, N. Karmarkar propose la méthode projective. C'est le premier algorithme efficace „ la fois en th€orie et en
pratique. Sa complexit€ dans le pire cas est polynomiale et les exp€rimentations sur les probl•mes pratiques montrent
que la m€thode peut raisonnablement ƒtre compar€e „ l'algorithme du simplexe. Depuis lors, plusieurs m€thodes de
point int€rieur ont €t€ propos€es et €tudi€es. Une des m€thodes les plus c€l•bres est la m€thode pr€dictive/corrective
qui fonctionne tr•s bien en pratique mƒme si son €tude th€orique est encore imparfaite.
Pour la r€solution pratique de probl•mes de PL ordinaires, il est actuellement commun de consid€rer comme
€quivalentes les (bons) codes bas€s sur les m€thodes d€riv€es du simplexe ou du point int€rieur. De plus, pour la
r€solution de probl•mes de grande taille, une technique comme la g€n€ration de colonnes peut se r€v€ler
extrƒmement efficace.
Les solveurs bas€s sur la PL sont de plus en plus utilis€s pour l'optimisation de divers probl•mes industriels tels que
l'optimisation des flux de transports ou la planification de la production. Toutefois, les mod•les de PL se r€v•lent
insuffisants pour repr€senter de nombreux probl•mes, la programmation linéaire en nombres entiers (PLNE)
permet alors de mod€liser un grand nombre de probl•mes suppl€mentaires, notamment les probl•mes NP-complets.
Programmation linéaire en nombres entiers
Un problème de programmation linéaire en nombres entiers (PLNE) n'est pas un programme lin€aire dans le sens o‚
son domaine de r€alisabilit€ n'est pas un poly•dre mais un ensemble discret de points. Pourtant, on peut le d€crire
comme un PL auquel on ajoute la contrainte suppl€mentaire que certaines variables ne peuvent prendre que des
valeurs enti•res. On distingue le programme linéaire mixte avec variables enti•res et continues du programme entier
avec toutes ses variables enti•res.
La PLNE est un probl•me NP-complet car de nombreux probl•mes NP-complets peuvent ƒtre exprim€s comme des
PLNE (par exemple trouver un stable dans un graphe revient „ trouver un vecteur
satisfaisant pour tout arƒte ). Les algorithmes d€crits ci-dessus pour la PL ne r€solvent pas
les probl•mes de PLNE. Algorithmiquement donc, la r€solution d'un PLNE est autrement plus difficile celle d'un PL
qui joue pourtant un r‰le crucial quant „ leur r€solution, principalement pour deux raisons. Premi•rement, la
relaxation continue d'un PLNE (c'est le PLNE sans les contraintes d'int€grit€) est un PL qui peut ƒtre r€solu
efficacement et fournir ainsi une borne duale (dans le sens non-r€alisable). Les algorithmes de r€solution de PLNE,
tels que les algorithmes par s€paration et €valuation se basent sur cette relaxation continue pour diminuer au
maximum l'€num€ration des solutions. Deuxi•mement, le th€or•me Optimisation/S€paration de GrŠtschel, Lovasz et
Schrijver permet de r€soudre en pratique par la PL les probl•mes entiers dont on connait une bonne description
poly•drale (c'est-„-dire dont on peut s€parer les contraintes en temps polynomial). C'est le principe de
fonctionnement des algorithmes de plans s€cants,
Applications
La programmation lin€aire est essentiellement appliqu€e pour r€soudre des probl•mes d'optimisation „ moyen et
long terme (probl•mes strat€giques et tactiques, dans le vocabulaire de la recherche op€rationnelle). Les domaines
d'application de ces probl•mes sont tr•s nombreux aussi bien dans la nature des probl•mes abord€s (planification et
contr‰le de la production, distribution dans des r€seaux) que dans les secteurs d'industrie : industrie manufacturi•re,
€nergie (p€trole, gaz, €lectricit€, nucl€aire), transports (a€riens, routiers et ferroviaires), t€l€communications,
industrie foresti•re, finance.
Programmation lin€aire 4
Applications dans le pétrole
La technique de la programmation lin€aire est couramment appliqu€e dans l'industrie p€troli•re. C'est l'une des
industries, si ce n'est la principale qui utilise quotidiennement la PL (programmation lin€aire). Elle est l'outil qui
permet au raffineur de faire la d€termination optimale de production d'une raffinerie. Pour ce faire, le programme
doit tenir compte d'un certain nombre de contraintes telles que :
bruts disponibles, leurs rendements et les qualit€s des coupes,
sp€cifications des produits „ fabriquer,
limitations de d€bouch€s pour certains produits,
capacit€s des unit€s,
modes de r€glages des installations,
capacit€s de stockage disponibles.
La PL peut €galement ƒtre utilis€e dans d'autres domaines du raffinage, par exemple :
calculs de la composition optimale des m€langes de produits (carburants, gasoils, fuels) en tenant compte des
sp€cifications.
l'optimisation dans l'utilisation des installations,
calculs de l'obtention du meilleur pr€chauffage des bruts et des charges,
d€termination du meilleur €quilibre Œvapeur-€lectricit€• d'une raffinerie.
En dehors des raffineries, on peut utiliser la PL dans la recherche op€rationnelle pour :
bŽtir des plans „ long/moyen et court termes d'une compagnie p€troli•re,
optimiser le fonctionnement d'une flotte de tankers et la mise en place des produits.
Voir aussi
Algorithme du simplexe
Branch and cut
Bibliographie
Christelle Gu€ret, Christian Prins et Marc Sevaux, Programmation Linéaire, Eyrolles, 2000 (ISBN 2-212-09202-4),
365 pages.
Eric Jacquet-Lagr•ze. Programmation Linéaire - Modélisation et mise en œuvre informatique. Collection : P.I.Q.
Poche - •diteur : Economica
Liens externes
(en) Linear Programming: Foundations and Extensions [2].
(en) IBM's article on GLPK [3] A technical article on GPLK•(en) with an introduction to Linear Programming by
IBM
(en) lp_solve [4], un autre logiciel libre pour la programmation lin€aire. Il peut ƒtre appel€ via une interface de
programmation, un fichier texte, ou un environnement de d€veloppement int€gr€.
(en) Guidance on Formulating LP problems [5]
(en) 0-1 Integer Programming Benchmarks with Hidden Optimum Solutions [6]
(en) A Tutorial on Integer Programming [7]
(en) The linear programming FAQ [8]
(en) Linear Programming Survey OR/MS Today [9]
(en) Linear Programming: Guide to Formulation, Simplex Algorithm, Goal Programming and Excel Solver
examples [10]
Programmation lin€aire 5
(en) George Dantzig [11]
(en) Benchmark de diff€rents logiciels sur diff€rentes instances de PLNE [12]
Logiciels
(en) AIMMS Optimization Modeling [13] AIMMS include linear programming in industry solutions (free trial
license available);
(en) CGAL [14] The Computational Geometry Algorithms Library includes a linear solver, which is exact and
optimized for problems with few constraints or few variables
(en) COIN-OR [15] COmputational INfrastructure for Operations Research, open-source library
(en) Cplex [16] Commercial library for linear programming
(en) DecisionPro Linear Programming Optimization Software [17]
(en) GNU Linear Programming Kit [18], Biblioth•que libre GLPK•(en) pour la programmation lin€aire, m€thode
du simplex, du point int€rieur
(en) GIPALS [19] Linear programming environment and dynamic link library (DLL)
(en) HOPDM [20] Higher Order Primal Dual Method
(en) LINDO [21] LP, IP, Global solver/modeling langage
(en) Linear programming and linear goal programming [22] A freeware program for MS-DOS
(en) MOSEK [23] Optimization software for LP, IP, QP, SOCP and MIP. Free trial is available. Free for
students.
(en) Mathematica [24] General technical computing system includes large scale linear programming support
(en) Microarray Data Classification Server (MDCS) [25] based on linear programming
(en) Optimj [26] OptimJ is an extension of the Java programming langage with langage support for writing
optimization models and powerful abstractions for bulk data processing.
(en) Orstat2000 [27] Includes easy-to-use modules for linear and integer programming (free for educational
purposes).
(en) Premium Solver [28] Spreadsheet add-in
(en) QSopt [29] Optimization software for LP (free for research purposes).
(en) R [30] Logiciel libre de calcul statistique contenant des librairies aditionnelles pour la PL: glpk, linprog
(simplex), Rglpk (interface R pour GPLK•(en))
(en) Simplex Method Tool [31] A quick-loading web page
(en) What's Best! [21] Spreadsheet add-in
(en) Xpress-MP [32] Optimization software free to students
(fr) IMSL impl€mentations pour Fortran, C/C++, Java et C#
Références
[1] Les d€tails exacts des deux repr€sentations varient beaucoup d'un ouvrage „ l'autre
[2] http:/ / www. princeton. edu/ ~rvdb/ LPbook
[3] http:/ / www-128. ibm. com/ developerworks/ linux/ library/ l-glpk1/ index. html
[4] http:/ / lpsolve. sourceforge. net/
[5] http:/ / people. brunel. ac. uk/ ~mastjjb/ jeb/ or/ lp. html
[6] http:/ / www. nlsde. buaa. edu. cn/ ~kexu/ benchmarks/ pb-benchmarks. htm
[7] http:/ / mat. gsia. cmu. edu/ orclass/ integer/ integer. html
[8] http:/ / www-unix. mcs. anl. gov/ otc/ Guide/ faq/ linear-programming-faq. html
[9] http:/ / www. lionhrtpub. com/ orms/ surveys/ LP/ LP-survey. html
[10] http:/ / prejudice. tripod. com/ ME30B/ index. htm
[11] http:/ / www. stanford. edu/ group/ SOL/ dantzig. html
[12] http:/ / plato. asu. edu/ ftp/ milpf. html
[13] http:/ / www. aimms. com/ operations-research/ mathematical-programming/ linear-programming
[14] http:/ / www. cgal. org/ Pkg/ QPSolver
[15] http:/ / www. coin-or. org/
[16] http:/ / www. ilog. com/ products/ cplex
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !