43
Rappels de programmation linéaire CERMICS, ENPC Diapositives : F. Meunier, Intervenant : A. Parmentier 18 octobre 2017

Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

  • Upload
    buiminh

  • View
    233

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Rappels de programmation linéaire

CERMICS,ENPC

Diapositives : F. Meunier, Intervenant : A. Parmentier

18 octobre 2017

Page 2: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Partie

1. La programmation linéaire : définition et exemples

2. Quelques propriétés théoriques

3. Algorithmes

4. Dualité

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 2 / 43

Page 3: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

La programmation linéaire : définition etexemples.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 3 / 43

Page 4: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Définition

Un programme linéaire est un programme qui peut s’écrire sous laforme (forme inéquationnelle)

Min cT xs.c. Ax ≤ b,

où x, c ∈ Rn, b ∈ Rm et où A est une m × n matrice réelle.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 4 / 43

Page 5: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Définition

cT x est la fonction objectif.

Ax ≤ b sont les contraintes.

x sont les variables (de décision).

Tout x satisfaisant les contraintes est une solution réalisable.

Tout x solution du programme est une solution optimale.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 5 / 43

Page 6: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Représentation graphique

x

y

y = 3

2x+ y = 8

x+ 2y = 7

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 6 / 43

Page 7: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Représentation graphique

x

y

y = 3

2x+ y = 8

x+ 2y = 7

P

P = {(x, y) : 2x+ y ≤ 8, x+ 2y ≤ 7, y ≤ 3, x ≥ 0, y ≥ 0}

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 7 / 43

Page 8: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Représentation graphique

x

y

4x+ 5y = 3

4x+ 5y = 84x+ 5y = 16

4x+ 5y = 20

4x+ 5y = 23

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 8 / 43

Page 9: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Représentation graphique

x

y

l’optimum est atteint en (x∗, y∗) = (3, 2)

4x+ 5y = 22

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 9 / 43

Page 10: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Programme linéaire : on sait faire !

Dans les problèmes réels : nombre de contraintes très souvent > 1000.

Ni l’intuition, ni le dessin peuvent alors nous tirer d’affaire.

Heureusement, depuis la fin des années 40, de nombreux chercheursont travaillé sur la programmation linéaire, et sont parvenus à laconclusion suivante :

Un programme linéaire peut être résolu efficacement, tantsur le plan pratique que théorique.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 10 / 43

Page 11: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Les trois familles d’algorithme

• l’algorithme du simplexe, trouvé par Dantzig en 1947• les ellipsoïdes, trouvé par Khachyan en 1979• l’algorithme des points intérieurs, trouvé par Karmarkar en 1984

les ellispoïdes = premier algorithme polynomial pour la programmationlinéaire.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 11 / 43

Page 12: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Plan théorique, plan pratique

Plan pratique De nombreux logiciels (libres et commerciaux) résolventdes programmes linéaires de grande taille. Il y aprincipalement deux algorithmes qui sont utilisés dans cescodes : l’algorithme du simplexe et l’algorithme des pointsintérieurs.

Plan théorique La programmation linéaire est dans P : l’algorithme despoints intérieurs résout la programmation linéaire entemps polynomial, mais pas l’algorithme du simplexe.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 12 / 43

Page 13: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Partie

1. La programmation linéaire : définition et exemples

2. Quelques propriétés théoriques

3. Algorithmes

4. Dualité

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 13 / 43

Page 14: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Quelques propriétés théoriques

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 14 / 43

Page 15: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Forme standard, forme canonique, forme inéquationnelle

Forme inéquationnelleMin cT xs.c. Ax ≤ b,

Forme standardMin cT xs.c. Ax = b,

x ≥ 0

Forme canoniqueMin cT xs.c. Ax ≤ b,

x ≥ 0

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 15 / 43

Page 16: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Nettoyage préliminaire

Hypothèse : Nos programmes linéaires sous forme standard se-ront tels que les lignes de A sont linéairement indépendantes.

On peut en effet toujours se ramener à une telle situation.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 16 / 43

Page 17: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Une notation

Pour B ⊆ {1, 2, . . . , n} :AB = sous-matrice de A réduite aux colonnes indicées par B.xB = sous-vecteur de x réduit aux composantes indicées par B.

Exemple.B = {1, 4, 5}Si

A =

1 2 0 3 3 10 8 9 3 4 45 6 0 7 1 1

,alors

AB =

1 3 30 3 45 7 1

.Si x = (5, 4, 5, 1, 1, 2), alors xB = (5, 1, 1).

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 17 / 43

Page 18: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Une notation, suite

Pour B ⊆ {1, . . . , n} et N = {1, . . . , n} \ BAx = b peut se voir sous la forme

ABxB + ANxN = b

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 18 / 43

Page 19: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Réécriture dans une base

B ⊆ {1, 2, . . . , n} avec m éléments = base si la matrice AB estinversible.

Réécrire le système Ax = b dans la base B :

xB + A−1B ANxN = A−1

B b.

La solution x̃ du système Ax = b obtenue en posant x̃B := A−1B b et

x̃N := 0 est une solution basique.

Si elle est réalisable, i.e. si A−1B b ≥ 0, alors x̃ est une solution basique

réalisable, et B est une base réalisable.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 19 / 43

Page 20: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Optimalité et solution basique

TheoremConsidérons un programme linéaire sous forme standardAlorsI s’il y a une solution réalisable et si la fonction objectif est bornée

inférieurement, alors il existe une solution optimale.I s’il existe une solution optimale, alors il existe une solution

optimale qui soit basique réalisable.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 20 / 43

Page 21: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Un algorithme naïf

On peut donc trouver l’optimum en un nombre fini d’opérations – auplus le nombre de bases

(nm

).

L’algorithme du simplexe exploite cette idée de façon plus astucieuse.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 21 / 43

Page 22: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Polyèdre

Un polyèdre est l’intersection d’un nombre fini de demi-espacesdélimités par des hyperplans.Les contraintes

Ax ≤ b,

délimitent donc un polyèdre. De même pour

Ax = b,x ≥ 0

ouAx ≤ b,x ≥ 0

En conséquence, les solutions réalisables d’un programme linéaireforment toujours un polyèdre.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 22 / 43

Page 23: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Convexité et polytope

Un polyèdre P est un ensemble convexe : si x et y sont dans P, lesegment [x, y] est inclus dans P. Un polyèdre borné est un polytope.

FIGURE – Un polytope FIGURE – Un polyèdre non borné

La programmation linéaire est un cas particulier de la programmationconvexe.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 23 / 43

Page 24: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Points extrêmes

Un polyèdre possède en général des points extrêmes ou sommets, quisont les “pointes”, ou les “piques” du polyèdre. Mathématiquement,v ∈ P est un point extrême de P si pour tout x, y ∈ P, on a l’implication

(le segment [x, y] contient v)⇒ (v = x ou v = y).

On ne peut avoir de segment inclus dans P et non réduit à un point quicontienne strictement v .

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 24 / 43

Page 25: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Solutions basiques réalisables = points extrêmes

TheoremSoit P l’ensemble des solutions réalisables d’un programme linéairesous forme standard. Soit v ∈ P. Les deux assertions sont équiva-lentes :I v est une solution basique réalisable.I v est un point extrême de P.

En particulier, on voit qu’un polyèdre n’a qu’un nombre fini de pointsextrêmes.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 25 / 43

Page 26: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Optimum – vision géométrique

Si un programme linéaire sous forme standard admet une solutionoptimale, il admet en particulier une solution optimale qui est un point

extrême de l’ensemble des points réalisables.

Si un programme linéaire (de minimisation) est réalisable mais nonborné, il admet un rayon infini dans son ensemble de points réalisables

le long duquel le critère peut être rendu arbitrairement petit.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 26 / 43

Page 27: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Partie

1. La programmation linéaire : définition et exemples

2. Quelques propriétés théoriques

3. Algorithmes

4. Dualité

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 27 / 43

Page 28: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Algorithmes

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 28 / 43

Page 29: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Algorithme du simplexe

x

y

l’optimum est atteint en (x∗, y∗) = (3, 2)

4x+ 5y = 22

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 29 / 43

Page 30: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

L’algorithme du simplexe

On considère un programme sous forme standard

Min cT xs.c. Ax = b,

x ≥ 0

Après manipulation, ce programme se réécrit de manière équivalente

Min cTBA−1

B b + (cTN − cT

BA−1B AN)xN

s.c. xB + A−1B ANxN = A−1

B b,x ≥ 0.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 30 / 43

Page 31: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Programme dans la base B

Min cTBA−1

B b + (cTN − cT

BA−1B AN)xN

s.c. xB + A−1B ANxN = A−1

B b,x ≥ 0.

Avantages : on peut lire directement la solution basique réalisableassociée à la base B.

En effet : la solution basique réalisable est telle que x̃N = 0. Valeur ducritère en x̃N = 0, précisément cT

BA−1B b.

On peut voir l’optimalité immédiatement.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 31 / 43

Page 32: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Bases voisines

Soient B et B′ deux bases réalisables. Elles sont voisines si|B \ B′| = 1.

On a alors aussi nécessairement |B′ \ B| = 1.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 32 / 43

Page 33: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Itération générale

On suppose donné une base réalisable B.

Construire une base réalisable voisine B′ qui améliore le critère(=pivot) : se fait simplement à la lecture des entrées de cT

N − cTBA−1

B AN

et de A−1B AN .

Programme sous forme équivalente

Min cTB′A−1

B′ b +(

cTN′ − cT

B′A−1B′ AN′

)xN′

s.c. xB′ + A−1B′ AN′xN′ = A−1

B′ b,x ≥ 0.

(1)

Recommencer.

De deux choses l’une :soit on termine sur une base optimale, soit à la lecture des coef-ficients, on voit que le programme est non borné (i.e −∞ est lavaleur optimale).

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 33 / 43

Page 34: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

L’algorithme des points intérieurs

L’algorithme des points intérieurs cherche à éviter le bord du polyèdreet reste le plus possible à l’intérieur 6= simplexe). C’est seulement à ladernière étape que l’algorithme atteint le bord, précisément sur unesolution optimale.

Consiste à considérer le coût pénalisé

fµ(x) := cT x − µn∑

i=1

log xi

et à considérer le programme suivant

Min fµ(x)s.c. Ax = b,

x > 0,(2)

où x > 0 signifie que xi > 0 pour i = 1, . . . , n.Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 34 / 43

Page 35: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Idée de l’algorithme : faire tendre progressivement µ vers 0 et chercherla solution optimale x∗(µ) du programme précédent pour chaquevaleur de µ successive.

La suite des x∗(µ) tend vers l’optimum.

La recherche de la solution optimale x∗(µ) se fait en faitapproximativement et utilise la solution optimale approximative duprogramme pour la valeur de µ précédente – cette étape revient alors àune simple résolution d’un système linéaire.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 35 / 43

Page 36: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Efficacité de l’algorithme des points intérieurs

Complexité : O(n3L) où L est le nombre maximum de bits nécessairespour coder un coefficient du programme = algorithme polynomial.

nombre d’itérations (nombre de µ distincts pour lequel x∗(µ) estapproximativement calculé) = O(

√nL) mais en pratique cela semble

plutôt être un O(log n), ce qui en fait un algorithme réellement efficace.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 36 / 43

Page 37: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Partie

1. La programmation linéaire : définition et exemples

2. Quelques propriétés théoriques

3. Algorithmes

4. Dualité

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 37 / 43

Page 38: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Dualité

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 38 / 43

Page 39: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Le dual

Soit un programme sous forme standard :

Min cT xs.c. Ax = b,

x ≥ 0

On peut définir le programme dual :

Max bT ys.c. AT y ≤ c

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 39 / 43

Page 40: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Théorème faible de la dualité

Si x est solution du primal et y solution du dual, alors on a le théorèmefaible de la dualité :

cT x ≥ bT y .

Rappel : grâce à cette propriété, on peut prouver l’optimalité – ou laqualité – d’une solution du primal.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 40 / 43

Page 41: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Théorème fort de la dualité

Theorem (Dualité forte)

Min cT xs.c. Ax = b, (P)

x ≥ 0Max bT ys.c. AT y ≤ c, (D)

exclusivement :1. Ni (P), ni (D) n’ont de solution réalisable.2. (P) est non borné et (D) n’a pas de solution réalisable.3. (D) est non borné et (P) n’a pas de solution réalisable.4. (P) et (D) sont tous deux réalisables. Ils ont alors tous deux des

solutions optimales, respectivement x∗ et y∗, et l’on a

cT x∗ = bT y∗.

Autrement dit, le minimum de (P) est égal au maximum de (D).Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 41 / 43

Page 42: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Recette de dualisation

Programme linéaire primal Programme linéaire dualVariables x1, x2, . . . , xn y1, y2, . . . , ymMatrice A AT

Membre de droite b cFonction objectif Min cT x Max bT y

Contraintesième contrainte a ≤

≥=

yi ≤ 0yi ≥ 0yi ∈ R

xj ≥ 0xj ≤ 0xj ∈ R

jème contrainte a ≤≥=

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 42 / 43

Page 43: Rappels de programmation linéaire - educnet.enpc.fr · ont travaillé sur la programmation linéaire, et sont parvenus à la conclusion suivante : Un programme linéaire peut être

Dual du dual = primal

Le dual du dual est équivalent au primal.

Diapositives : F. Meunier, Intervenant : A. Parmentier, ENPC 18 octobre 2017 43 / 43