Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Optimisation linéaire en nombres entiers — Wikipédia
Optimisation linéaire en nombres entiers — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.
Page d’aide sur l’homonymie

Pour les articles homonymes, voir ILP.

L'optimisation linéaire en nombres entiers (OLNE) (ou programmation linéaire en nombres entiers (PLNE) ou integer programming (IP) ou Integer Linear Programming (ILP)) est un domaine des mathématiques et de l'informatique théorique dans lequel on considère des problèmes d'optimisation d'une forme particulière. Ces problèmes sont décrits par une fonction de coût et des contraintes linéaires, et par des variables entières.

La contrainte d'intégralité sur les variables, qui différencie l'OLNE de l'optimisation linéaire classique est nécessaire pour modéliser certains problèmes, en particulier des problèmes algorithmiques. Mais cette contrainte supplémentaire rend le problème plus complexe et demande des techniques particulières.

Définitions

[modifier | modifier le code]

Définitions générales

[modifier | modifier le code]

Un problème d'optimisation est un problème mathématique où, étant donné un ensemble de variables et des contraintes sur ces variables, on doit trouver une assignation qui maximise (ou minimise) une certaine fonction de coût. On parle de problème linéaire lorsque les contraintes et la fonction de coût sont combinaisons linéaires des variables et le problème est à nombres entiers si ces variables ne sont autorisées qu'à prendre des valeurs dans l'ensemble des entiers.

La contrainte qui force les variables à prendre des valeurs entières est appelée contrainte d'intégralité. Lorsque l'on gomme cette contrainte, on parle d'un problème relaxé ou de relaxation continue, et l'on a alors affaire à un problème d'optimisation linéaire. Le rapport entre l'optimal dans la version relaxée et dans la version entière est souvent appelé integrality gap.

Formes canonique et standard

[modifier | modifier le code]

Un problème d'OLNE peut être mis sous deux formes classiques : la forme canonique et la forme standard. La forme canonique pour une maximisation est :

maximiser c T x tel que A x ≤ b , x ≥ 0 , et x ∈ Z , {\displaystyle {\begin{aligned}&{\text{maximiser}}&&\mathbf {c} ^{\mathrm {T} }\mathbf {x} \\&{\text{tel que}}&&A\mathbf {x} \leq \mathbf {b} ,\\&&&\mathbf {x} \geq \mathbf {0} ,\\&{\text{et}}&&\mathbf {x} \in \mathbb {Z} ,\end{aligned}}} {\displaystyle {\begin{aligned}&{\text{maximiser}}&&\mathbf {c} ^{\mathrm {T} }\mathbf {x} \\&{\text{tel que}}&&A\mathbf {x} \leq \mathbf {b} ,\\&&&\mathbf {x} \geq \mathbf {0} ,\\&{\text{et}}&&\mathbf {x} \in \mathbb {Z} ,\end{aligned}}},

et la forme standard est :

maximiser c T x tel que A x + s = b , s ≥ 0 , x ≥ 0 , et x ∈ Z , {\displaystyle {\begin{aligned}&{\text{maximiser}}&&\mathbf {c} ^{\mathrm {T} }\mathbf {x} \\&{\text{tel que}}&&A\mathbf {x} +\mathbf {s} =\mathbf {b} ,\\&&&\mathbf {s} \geq \mathbf {0} ,\\&&&\mathbf {x} \geq \mathbf {0} ,\\&{\text{et}}&&\mathbf {x} \in \mathbb {Z} ,\end{aligned}}} {\displaystyle {\begin{aligned}&{\text{maximiser}}&&\mathbf {c} ^{\mathrm {T} }\mathbf {x} \\&{\text{tel que}}&&A\mathbf {x} +\mathbf {s} =\mathbf {b} ,\\&&&\mathbf {s} \geq \mathbf {0} ,\\&&&\mathbf {x} \geq \mathbf {0} ,\\&{\text{et}}&&\mathbf {x} \in \mathbb {Z} ,\end{aligned}}}

où c , b {\displaystyle \mathbf {c} ,\mathbf {b} } {\displaystyle \mathbf {c} ,\mathbf {b} } sont des vecteurs et A {\displaystyle A} {\displaystyle A} est une matrice ayant des valeurs entières.

Exemple

[modifier | modifier le code]
Problème d'OLNE et relaxation linéaire

On donne un exemple de problème d'OLNE, illustré par l'image ci-contre.

max   y − x + y ≤ 1 3 x + 2 y ≤ 12 2 x + 3 y ≤ 12 x , y ≥ 0 x , y ∈ Z {\displaystyle {\begin{aligned}\max &{\text{ }}y\\-x+y&\leq 1\\3x+2y&\leq 12\\2x+3y&\leq 12\\x,y&\geq 0\\x,y&\in \mathbb {Z} \end{aligned}}} {\displaystyle {\begin{aligned}\max &{\text{ }}y\\-x+y&\leq 1\\3x+2y&\leq 12\\2x+3y&\leq 12\\x,y&\geq 0\\x,y&\in \mathbb {Z} \end{aligned}}}

Il y a deux variables, les solutions sont donc des couples d'entiers. Les points rouges sont les couples qui vérifient les contraintes et les pointillés rouges montrent l'enveloppe convexe de ces points. Les solutions optimales de ce problème sont (1,2) et (2,2).

Les lignes bleues et les axes des abscisses et des ordonnées délimitent les couples de réels qui satisfont toutes les contraintes sauf la contrainte d'intégralité. L'optimum est meilleur dans cette version relaxée.

Modélisation par OLNE

[modifier | modifier le code]

De nombreux problèmes de recherche opérationnelle et d'algorithmique peuvent être traduits en problème d'OLNE. Par exemple le problème de couverture par ensembles est le suivant. Étant donné un ensemble A, on dit qu'un élément e est couvert par A si e appartient à A ; pour un ensemble U et une famille S de sous-ensembles de U, le problème consiste à couvrir tous les éléments U avec une sous-famille de S la plus petite possible. Ce problème se traduit naturellement sous la forme suivante[1] :

minimiser : ∑ S ∈ S x S {\displaystyle \sum _{S\in {\mathcal {S}}}x_{S}} {\displaystyle \sum _{S\in {\mathcal {S}}}x_{S}} (Minimiser le nombre de sous-ensembles)
tel que : ∑ S : e ∈ S x S ⩾ 1 {\displaystyle \sum _{S\colon e\in S}x_{S}\geqslant 1} {\displaystyle \sum _{S\colon e\in S}x_{S}\geqslant 1} ∀ e ∈ U {\displaystyle \forall e\in {\mathcal {U}}} {\displaystyle \forall e\in {\mathcal {U}}} (Tous les éléments sont couverts)
x S ∈ { 0 , 1 } {\displaystyle x_{S}\in \{0,1\}} {\displaystyle x_{S}\in \{0,1\}} ∀ S ∈ S {\displaystyle \forall S\in {\mathcal {S}}} {\displaystyle \forall S\in {\mathcal {S}}}. (Chaque sous-ensemble est, ou bien dans la couverture, ou bien pas)

Résolution

[modifier | modifier le code]

Complexité

[modifier | modifier le code]

Au sens de la théorie de la complexité, l'optimisation linéaire en nombres entiers est considérée comme difficile car c'est un problème NP-difficile[2]. Cette complexité est facilement déduite de la NP-difficulté du problème de couverture par ensembles. Une des conséquences pratiques est que, pour des problèmes de grande taille, le temps de calcul peut être très grand.

Cependant, la complexité est polynomiale quand le nombre de variables est fixé, comme montré par Lenstra en 1983 [3].

Cas particuliers

[modifier | modifier le code]

Lorsque les contraintes prennent la forme d'une matrice totalement unimodulaire et entière, une résolution en temps polynomial est possible car les solutions du problème relaxé sont entières.

Si le nombre de variables est fixé, alors le problème est aussi polynomial[4].

Méthodes de résolution exacte

[modifier | modifier le code]

Parmi les méthodes classiques de résolution, on peut citer la méthode des plans sécants (notamment à l'aide de coupes de Gomory) et le principe de séparation et évaluation (branch and bound). Depuis les années 1990, l'inclusion de coupes de Gomory a permis de grandement accélérer l'algorithme séparation et évaluation. Cela a donné naissance à une nouvelle classe d'algorithmes nommés branch and cut [5].

Approximation

[modifier | modifier le code]

La théorie des algorithmes d'approximation fait souvent appel à une formulation OLNE des problèmes et essaie de borner l'integrality gap pour obtenir une solution approchée en temps polynomial[réf. nécessaire].

Applications

[modifier | modifier le code]

Ce type d'optimisation est très utilisée en recherche opérationnelle. C'est aussi devenu une approche classique en bio-informatique[6],[7].

Notes et références

[modifier | modifier le code]
  • (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Integer programming » (voir la liste des auteurs).
  1. ↑ Voir par exemple (en) Michael A. Trick, « A Tutorial on Integer Programming : Set Covering », 1997
  2. ↑ Il fait d'ailleurs partie de la liste des 21 problèmes NP-complets de Karp sous le nom de 0-1 INTEGER PROGRAMMING. Voir : (en) Richard M. Karp, « Reducibility Among Combinatorial Problems », dans Raymond E. Miller et James W. Thatcher, Complexity of Computer Computations, Plenum, 1972 (ISBN 978-1-4684-2003-6, DOI 10.1007/978-1-4684-2001-2_9, lire en ligne), p. 85-103.
  3. ↑ (en) H. W. Lenstra, « Integer programming with a fixed number of variables », Mathematics of operations research,‎ 1983 (lire en ligne)
  4. ↑ Hendrik Lenstra, « Integer programming with a fixed number of variables », Mathematics of operations research, vol. 8, no 8,‎ novembre 1983.
  5. ↑ (en) Gérard Cornuéjols, « The Ongoing Story of Gomory Cuts », Documenta Math,‎ 2012 (lire en ligne)
  6. ↑ « Integer Linear Programming in Computational Biology (symposium) », sur Simons Institute for the Theory of Computing (en).
  7. ↑ Dan Gusfield, « Integer Linear Programming in Computational Biology tutorial », juin 2017.

Bibliographie

[modifier | modifier le code]
  • (en) Bradley, Hax, and Magnanti, « Integer programming », dans Applied Mathematical Programming, Addison-Wesley, 1977

Lien externe

[modifier | modifier le code]
  • Leo Liberti et Ruslan Sadykov, « Présentation : Introduction à la Programmation Linéaire en Nombres Entiers », sur École polytechnique, 2006
v · m
Optimisation: théorie et algorithmes
Non linéaire
  • Méthode du nombre d'or
  • Recherche linéaire
  • Méthode de Nelder-Mead
  • Critères de Wolfe
  • Méthode de Broyden-Fletcher-Goldfarb-Shanno
  • Algorithme à régions de confiance
  • Pénalisation
  • Algorithme du gradient
  • Algorithme du gradient stochastique
  • Méthode de Newton
  • Algorithme de Gauss-Newton
  • Algorithme de Levenberg-Marquardt
  • Algorithme du lagrangien augmenté
Convexe
  • Optimisation complètement positive
  • Optimisation copositive
  • Optimisation SDP
  • Méthode des plans sécants
  • Algorithme de Frank-Wolfe
  • Méthode de l'ellipsoïde
Linéaire
  • Optimisation conique
  • Algorithme du simplexe
  • Méthodes de points intérieurs
  • Décomposition de Benders
  • Génération de colonnes
Quadratique
  • Optimisation quadratique successive
Combinatoire
  • Algorithme d'approximation
  • Programmation dynamique
  • Algorithme glouton
  • Optimisation linéaire en nombres entiers
Métaheuristique
  • Stratégie d'évolution
    • Algorithme génétique
  • Essaims
  • Forêts aléatoires
  • Boosting
  • icône décorative Portail des mathématiques
  • icône décorative Portail de l'informatique théorique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Optimisation_linéaire_en_nombres_entiers&oldid=216302596 ».
Catégories :
  • Informatique théorique
  • Optimisation combinatoire
  • Problème NP-complet
Catégories cachées :
  • Article contenant un appel à traduction en anglais
  • Article à référence nécessaire
  • Portail:Mathématiques/Articles liés
  • Portail:Sciences/Articles liés
  • Portail:Informatique théorique/Articles liés
  • Portail:Informatique/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id