introduction à la programmation...

83
Introduction à la programmation linéaire

Upload: others

Post on 05-Aug-2020

27 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Introduction à la programmation linéaire

Page 2: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Informations pratiques 2

Enseignant Denis Arzelier : directeur de recherche au LAAS-CNRS

Contacts Tel : 05 61 33 64 76 - email : [email protected]

Web-page http ://homepages.laas.fr/∼arzelier

Organisation du cours

➊ 5 cours 1h15 : 06h15

➩ Cours magistral en amphi avec supports de cours

➋ 4 séances TD 1h15 : 05h00

➩ Exercices d’application

➌ 2 séances TP 2h45 : 5h30

➩ Application avec support Python sous Notebook Jupyter

➍ 1 examen final : 1h15

Durée totale = 18h00

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 3: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple I : problème de production 3

✍ Problème 1 Maximiser le profit d’un fabriquant de yaourts à la fraise A et B

✔ Composition des yaourts de types A et B

Yaourt A Yaourt B

Fraise 2 1

Lait 1 2

Sucre 0 1

✔ Disponibilité des matières pre-

mières

- Fraises : 800 kilos

- Lait : 700 kilos

- Sucre : 300 kilos

✔ Profit par type de yaourt

- Yaourt A : 4 euros/kilo

- Yaourt B : 5 euros/kilos

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 4: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple 1 : modélisation 4

✔ Variables de décision ? (Ce que l’on doit décider)

Nombres de yaourts de type A et de type B : xA, xB

✔ Objectif ? (Ce que l’on doit optimiser)

Profit : z = 4xA + 5xB

✔ Contraintes ? (Ce que l’on doit respecter)

- Quantité maximale de fraises : 2xA + xB ≤ 800

- Quantité maximale de lait : xA + 2xB ≤ 700

- Quantité maximale de sucre : xB ≤ 300

Problème de programmation linéaire :

maxxA,xB

4xA + 5xB

sous 2xA + xB ≤ 800

xA + 2xB ≤ 700

xB ≤ 300

xA, xB ≥ 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 5: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple 2 : problème de transport 5

✍ Problème 2 Approvisionner à moindre coût différents clients à partir de différentes usines

✔ Lieux de production et quantités produites

Usines (i ∈ I) Bordeaux Biarritz Toulouse

Productions (pi) 25 15 20

✔ Lieux et quantités de livraison

Clients (j ∈ J ) Pau Bayonne Bordeaux Libourne

Demandes (dj ) 20 12 9 14

✔ Coûts de livraison

Prix/unité (cij ) Pau Bayonne Bordeaux Libourne

Bordeaux 26 19 0 4

Biarritz 12 2 20 24

Toulouse 19 30 24 28

✔ Variables xij : quantité produite en i et livrée en j

Problème de PL :

minxij

i,j

cijxij

sous∑

i

xij = dj , j ∈ J

j

xij = pi, i ∈ I

xij ≥ 0, i ∈ I, j ∈ J

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 6: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple 3 : problème de planification 6

✍ Problème 3 Planifier la production d’articles à moindres coûts pour les 4 prochains mois

✔ Production maximale normale :

1200 articles / mois

✔ Production maximale en heure sup :

400 articles / mois

✔ Sur-coût heures sup :

7 euros / article

✔ Stockage :

3 euros / article / mois

✔ Demande sur les 4 prochains mois :

mois 1 mois 2 mois 3 mois 4

Demandes 900 1100 1700 1300

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 7: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple 3 : modélisation 7

✔ Variables :

- xt : production normale en période t = 1, . . . , 4

- yt : production en heure sup en période t = 1, . . . , 4

- st : stock en fin de période t = 1, . . . , 3

✔ Objectif :

Minimiser 7t=4∑

t=1

yt + 3t=3∑

t=1

st

✔ Contraintes

x1+y1 = 900+s1

s1+x2+y2 =1100+s2

s2+x3+y3 =1700+s3

s3+x4+y4 =1300

0 ≤xt ≤1200 t = 1, . . . , 4

0 ≤yt ≤ 400 t = 1, . . . , 4

st ≥ 0 t = 1, . . . , 3

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 8: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Quelques remarques historiques (I) 8

✔ Etude des systèmes d’inégalités linéaires par J. Fourier en 1827

- Méthode d’élimination de Fourier-Motzkin

- Généralise l’élimination de Gauss-Jordan

J. Fourier (1768-1830)

✔ Formulation d’une classe restreinte de PL + Algorithme en URSS par L.V. Kantorovich en 1939

L.V. Kantorovich (1912-1986)

- Réorganisation de l’industrie du bois dans une économie centralisée

- Optimisation de la production industrielle de contreplaqué

- Théorie de l’utilité marginale

- Co-prix Nobel d’économie en 1975 (travaux en allocation optimale de ressources)

✔ Minimisation du coût total de transport de biens par T.C. Koopmans en 1944 pour la British Merchant Shipping

Mission

- Exchange ratios between cargos on various routes

- Co-prix Nobel d’économie en 1975 (travaux en allocation optimale de ressources)

- Fondation de la recherche opérationnelleT.C. Koopmans (191O-1985)

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 9: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Quelques remarques historiques (II) 9

✔ Algorithme du simplexe par G. Dantzig en 1947 pour l’U.S. Air Force

- Problèmes militaires de planification d’opérations et d’allocation de ressources

- Algorithme dans le top 10 en 2000

G. Dantzig (1914-2005)

✔ Algorithme de l’ellipsoïde par L.G. Kachiyan en 1979

..

xk −→g kxk+1

Ek

Ek+1

- Algorithme en temps polynomial

- Peu efficace en pratique (degré élevé du polynôme(t))

✔ Algorithme polynomial de point intérieur par N. Karmakar en 1984

- Brevet U.S. Patent 4,744,028 "Methods and apparatus for efficient

resource allocation" (mai 1988), débattu au sénat U.S.

- Méthodes de point intérieur pour la programmation convexe (SDP)

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 10: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Hypothèses fondamentales et terminologie 10

minx∈Rn

(maxx∈Rn

) f(x) = c1x1+ c2x2+. . .+ cnxn

sous a1,1x1+ a1,2x2+. . .+ a1,nxn = b1

...

am,1x1+ am,2x2+. . .+ am,nxn = bm

am+1,1x1+am+1,2x2+. . .+am+1,nxn ≤ bm+1

...

am+p,1x1+am+p,2x2+. . .+am+p,nxn ≤ bm+p

✔ Linéarité :

- Fonction objectif : f(x) = cTx

- Contraintes : X = {x ∈ Rn : h(x) = A1x− B1 = 0, g(x) = A2x−B2 � 0}

✔ Continuité : x ∈ Rn 6= PLNE = x ∈ N

n

- Solution réalisable : x est une solution réalisable ssi x ∈ X

- Région réalisable : ensemble des solutions réalisables X

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 11: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Géométrie et PL (I) 11

✔ Un ensemble C est convexe ssi le segment de droite entre deux points quelconques x, y ∈ C appartient à C

∀ λ ∈ [0, 1], x, y ∈ C ⇒ (1− λ)x+ λy ∈ C

z = (1− λ)x+ λy, λ ∈ [0, 1] est la combinaison convexe de x et y xx

x

y

yy

✔ L’enveloppe convexe co C d’un ensemble C est l’ensemble de toutes les combinaisons convexes des points

de C

co C =

{

i

λixi : xi ∈ C, λi ≥ 0,∑

i

λi = 1

}

✔ x ∈ C est un point extrême d’un ensemble convexe C si

x = λx1 + (1− λ)x2, x1, x2 ∈ C, λ ∈ (0, 1)⇒ x = x1 = x2

♥ Propriétés 1 L’intersection finie de plusieurs ensembles convexes

n⋂

i=1

Ci est un ensemble convexe

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 12: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Géométrie et PL (II) 12

✔ Un hyperplan de Rn est un sous-espace affine de dimension n− 1

H ={

x ∈ Rn | aT (x− x0) = 0

}

où a 6= 0 ∈ Rn est le vecteur normal à l’hyperplan

Un hyperplan divise Rn en 2 demi-espaces :

H− ={

x ∈ Rn | aT (x− x0) ≤ 0

}

, a 6= 0 ∈ Rn

H+ ={

x ∈ Rn | aT (x− x0) ≥ 0

}

, a 6= 0 ∈ Rn

+

+

+

+

a

x0

x

x1

x2

H+

H−

Hyperplan et demi-espaces

x ∈ H, x1 ∈ H+, x2 ∈ H−

✔ Un polyèdre convexe est un ensemble défini par un nombre fini d’inégalités linéaires

a3

a1

a2

a4

a5

a6

Polytope intersection de demi-espaces

P ={

x ∈ Rn : aT

j x ≤ bj , j = 1, · · · ,m}

= {x ∈ Rn : Ax � b}

Ex : l’orthant positif R+ est un ensemble polyèdral conique

✔ xE est un point extrême du polyèdre P si ∀y 6= z ∈ P, xE 6∈ (y, z)

✔ Un polyèdre convexe borné est un polytope convexe

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 13: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Géométrie et PL (III) 13

✔ Un point v d’un polyèdre convexe P est un sommet de P si

v ∈ P et ∃ c 6= 0 ∈ Rn : cT v > cT y, ∀ y ∈ P \ {v}

c

v

cTx = cT v

✔ Les sommets d’un polyèdre convexe sont exactement ses points extrêmes

✔ L’ensemble des solutions admissibles d’un PL est un polyèdre convexe P

x1

x2

P

a11x1 + a12x2 = b1

a21x1 + a22x2 = b2

a31x1 + a32x2 = b3

x2 = 0

x1 = 0

✔ Tout point de l’ensemble P des solutions admissibles peut donc être défini par une combinaison

convexe des points extrêmes xEi du polyèdre

∀ x ∈ P , x =N∑

i=1

λixEi , 0 ≤ λi ≤ 1,

N∑

i=1

λi = 1, xEi point extreme de P

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 14: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Solution optimale, optimum et résolution graphique 14

✔ Solution optimale x∗ et optimum z∗ = f(x∗) = cTx∗ :

∀ x ∈ P : cTx∗ ≤ (≥)cTx

- aucune solution optimale (P = ◦/ ou non bornée)

- une seule solution optimale

- une infinité de solutions optimales

- S’il existe une solution optimale, il en existe tou-

jours au moins une sur un sommet (point ex-

trême) de P

- Combinatoire d’énumération des points ex-

trêmes de P

x1

x2

Pas de solutionx1

x2

Infinité de solutions

x1

x2

Pas de solution

x1

x2

Sommet dégénéré

Dégénerescence

✔ Méthode graphique :

x1

x2

z=z ∗

Solution optimale

- Tracer le polyèdreP des solutions admissibles

- Tracer les droites isocritères z = cTx = c1x1 + · · ·+

cnxn = k

- Identifier et calculer le point extrême x∗ et l’optimum z∗

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 15: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Résolution graphique : exemple des yaourts 15

Max 4xA+5xB

2xA+ xB ≤800

xA+2xB ≤700

xB ≤300

xA, xB ≥ 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 16: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Un algorithme géométrique 16

Algorithme du simplexe

➊ Démarrer en un point extrême xEk de la région réalisable P

➋ Déterminer une arête le long de laquelle l’objectif diminue (ou augmente)

➌ S’il n’en existe pas, xEk est optimal, STOP

➍ Sinon se déplacer le long de l’arête jusqu’au point extrême xEk+1 suivant

➎ S’il n’en existe pas, le problème est non borné, STOP

➏ Sinon, xEk ← xE

k+1 et revenir en 2

❡ Théorème 1

L’optimum local ainsi obtenu x∗ est un optimum global

✔ Préliminaires :

- Programme linéaire générique

- Notation matricielle

- Formes canonique et standard

- Règles de transformation

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 17: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Programme linéaire générique 17

Min. ou Max. c1x1+ c2x2+. . .+ cnxn

ou c1x1+ c2x2+. . .+ cnxn = z[min] ou z[max]

ai,1x1+ ai,ix2+. . .+ai,nxn =ai (1 ≤ i ≤ p)

aj,1x1+aj,2x2+. . .+aj,nxn ≤bj (1 ≤ j ≤ q)

ak,1x1+ak,2x2+. . .+ak,nxn ≥ck (1 ≤ k ≤ r)

x1, . . ., xs ≥ 0

xs+1, . . ., xt ≤ 0

xt+1, . . ., xn de signe quelconque

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 18: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Ecriture matricielle 18

cTx = z[min] ou z[max]

Ax = a

Bx � b

Cx � c

x1, . . . , xs ≥ 0

xs+1, . . . , xt ≤ 0

Exercice : donner l’écriture matricielle de l’exemple du problème de production

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 19: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Formes canoniques et standard et règles de transformation 19

✔ Formes canoniques :

cTx = z[max]

Bx � b

x � 0

cTx = z[min]

Bx � b

x � 0

✔ Forme standard :

cTx = z[max]

Ax = a

x � 0

- min cTx⇔ max−cTx

- ax ≥ b⇔ −ax ≤ −b et ax = b⇔ ax ≤ b et ax ≥ b

- ax ≤ (≥)b⇒ ax+ (−)xe = b, xe ≥ 0 variable d’écart

- min (max) c|x|, c > 0 (c < 0),⇔min (max) cz, t.q. z ≥ x, z ≥ −x

- xi ≤ 0, on pose xi = −x′i, x

′i ≥ 0

- xi de signe quelconque, on pose xi = x+i − x−

i , x+i , x

−i ≥ 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 20: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple 20

Min 2x1−3x2

2x1 −x3 ≥−5

x1+2x2 = 8

x2 ≤ 0

x1 ≥ 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 21: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Focus sur les variables d’écart 21

bi

n∑

j=1

a′ijx′j

n∑

j=1

a′ijx′j ≤ bi i = 1, . . . ,m

x′j ≥ 0 j = 1, . . . , n

bi

n∑

j=1

a′ijx′j

xn+i

n∑

j=1

a′ijx′j+xn+i = bi i = 1, . . . ,m

xj ≥ 0 j = 1, . . . , n+m

✔ m variables d’écart sont ajoutées : A′ (m× n) devient sous forme standard A = [A′|Im×m]

(m× (n+m))

✔ Une contrainte k saturée (ou active)⇔ la variable d’écart xn+k = 0

✔ En un sommet du polyèdre, n variables d’écart s’annulent ou n contraintes sont actives et

linéairement indépendantes

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 22: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Solutions de base et solutions de base admissibles 22

▼ Définition 1

Soit le polyèdre P ={

x ∈ Rn : aTj x ≤ bj , j = 1, · · · ,m, cTi x = di, i = 1, · · · , p

}

, p, m ≤ n

alors

- x∗ ∈ Rn est une solution de base si

Toutes les contraintes égalité sont actives

Parmi les contraintes actives en x∗, n sont linéaire-

ment indépendantes

- x∗ ∈ Rn est une solution de base dégénérée si plus

de n contraintes sont actives en x∗

- Si x∗ ∈ P est une solution de base alors x∗ est une

solution de base admissible

A

Bx1

C

D

Ex2

x3

P = {(x1, x2, x3)|x1 + x2 + x3 = 1, x1, x2, x3 ≥ 0, x2 ≤ 1}

❡ Théorème 2

Soit P un polyèdre non vide et x∗ ∈ P alors x∗ est un sommet de P ssi x∗ est un point extrême de P

ssi x∗ est une solution de base admissible de P

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 23: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Solutions de base admissibles et polyèdres standards 23

❡ Théorème 3

Soit P = {x ∈ Rn|Ax = b, x � 0, b ∈ R

m} 6= ◦/ tel que m ≤ n et rang(A) = m

x∗ ∈ P est une solution de base admissible de P ssi il existe m indices B(1), · · · , B(m) t.q.

- Les colonnes AB(1), · · · , AB(m) sont linéairement indépendantes (forment une base de Rm)

- Si i 6= B(1), · · · , B(m) alors x∗i = 0

Si plus de n−m composantes de x∗ sont nulles alors x∗ ∈ P est une solution de base admissible dégénérée deP

✇ Procédure 1

➊ Choisir m colonnes indépendantes AB(1), · · · , AB(m)

➋ Mettre xi = 0 pour i 6= B(1), · · · , B(m) (variables hors-base)

➌ Résoudre le système Ax = b en xB(1), · · · , xB(m) (variables de base)

➍ Vérifier que x∗ ≥ 0 sinon retourner en ➊

Exemple :

1 1 2 1 0 0 0

0 1 6 0 1 0 0

1 0 0 0 0 1 0

0 1 0 0 0 0 1

x =

8

12

4

6

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 24: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Algorithme du simplexe et yaourts à la fraise 24

✔ Forme normale :

Max z = 4xA+5xB

2xA+ xB ≤800

xA+2xB ≤700

xB ≤300

xA, xB ≥ 0

✔ Forme standard :

Max z = 4xA+5xB+0x1+0x2+0x3

2xA+ xB+ x1 =800

xA+2xB + x2 =700

xB + x3 =300

xA, xB , x1, x2, x3 ≥ 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 25: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Une première solution de base réalisable 25

✔ Soient xA = xB = 0

✔ On obtient x1 = 800, x2 = 700, x3 = 300

✔ La solution (0, 0, 800, 700, 300) est une solution de base réalisable

✔ La fonction objectif vaut z = 0

xA × 10−2

xB × 10−2

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

0

z=0

Solution de base réalisable initiale

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 26: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Choix de l’arête de déplacement 26

max z = 0+4xA+5xB

x1 =800−2xA− xB

x2 =700− xA−2xB

x3 =300 − xB

xA × 10−2

xB × 10−2

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

0

z =0

✔ Il faut améliorer l’objectif z ր

✔ Il faut donc augmenter une variable fixée à 0⇒ xA ou xB

✔ Quelle variable choisir ?

- Parmi les variables ayant un impact positif sur l’objectif⇒ dont le coût ci est positif

- Choix heuristique :→ xB : cB = 5 > cA = 4

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 27: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Déplacement le long de l’arête 27

✔ Jusqu’où augmenter xB ?

x1 = 800−xB ≥ 0⇔ xB ≤ 800

x2 = 700−2xB ≥ 0⇔ xB ≤ 350

x3 = 300−xB ≥ 0⇔ xB ≤ 300

✔ xB augmente de 300

✔ x3 = 0 et xA = x3 = 0

✔ Solution de base réalisable :

{xA = 0}⋂

{xB = 300} xA × 10−2

xB × 10−2

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

0

z =0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 28: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Etape de pivotage 28

✔ Réécrire le système avec les variables non nulles en fonction des variables fixées à 0

z = 0+4xA+5xB

x1 =800−2xA− xB

x2 =700− xA−2xB

x3 =300 − xB

z = 0+4xA+5xB

x1 =800−2xA− xB

x2 =700− xA−2xB

xB= 300 − x3

✔ Solution associée ?

z =1500+4xA−5x3

x1 = 500−2xA+ x3

x2 = 100− xA+2x3

xB = 300 − x3

xA × 10−2

xB × 10−2

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

0

z=1500

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 29: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Faut-il continuer ? 29

✔ Peut-on encore améliorer l’objectif z = 1500 + 4 xA − 5x3 ?

Oui car xA a un impact (un coût) positif sur l’objectif

✔ Ici, il n’y a pas d’autre choix (x3 a un impact négatif)

✔ Jusqu’où augmenter xA ?

x1 = 500− 2xA ≥ 0⇔ xA ≤ 250

x2 = 100− xA ≥ 0⇔ xA ≤ 100

xB = 300− x3

xA × 10−2

xB × 10−2

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

0xA n’a aucun impact sur xB

✔ xA augmente de 100 afin que toutes les variables restent≥ 0

✔ On a x2 = x3 = 0

✔ Solution de base réalisable : {xA + 2xB = 700}⋂

{xB = 300}

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 30: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Etape de pivotage 30

✔ Réécrire le système avec les variables non nulles en fonction des variables fixées à 0

z =1500+4xA−5x3

x1 = 500−2xA+ x3

x2 = 100− xA+2x3

xB = 300 − x3

z =1500+4xA−5x3

x1 = 500−2xA+ x3

xA= 100− x2+2x3

xB = 300 − x3

✔ Solution associée ?

z =1900−4x2+3x3

x1 = 300+2x2−3x3

xA = 100− x2+2x3

xB = 300 − x3

xA × 10−2

xB × 10−2

1 2 3 4 5 6 7 8

12345678

0

z =1900

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 31: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Faut-il continuer ? 31

✔ Peut-on encore améliorer l’objectif z = 1900− 4x2 + 3 x3 ?

Oui car x3 a un impact (un coût) positif sur l’objectif

✔ Ici, il n’y a pas d’autre choix (x2 a un impact négatif)

✔ Jusqu’où augmenter x3 ?

x1 = 300 + 2x2 − 3x3 ≥ 0⇔ x3 ≤ 100

xA = 100− x2 + 2x3 ≥ 0⇔ x3 non contraint

xB = 300− x3 ⇔ x3 ≤ 300

xA × 10−2

xB × 10−2

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

0✔ x3 augmente de 100 afin que toutes les variables restent≥ 0

✔ On a x1 = x2 = 0

✔ Solution de base réalisable : {2xA + xB = 800}⋂

{xA + 2xB = 700}

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 32: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Etape de pivotage 32

✔ Réécrire le système avec les variables non nulles en fonction des variables fixées à 0

z =1900−4x2+3x3

x1 = 300+2x2−3x3

xA = 100− x2+2x3

xB = 300 − x3

z =1900− 4x2+ 3x3

x3 = 100+2

3x2−

1

3x1

xA = 100− x2+ 2x3

xB = 300 − x3

✔ Solution associée ?

z =2200− 2x2− x1

x3 = 100+2

3x2−

1

3x1

xA = 300+1

3x2−

2

3x1

xB = 200−2

3x2+

1

3x1

xA × 10−2

xB × 10−2

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

0

z=2200

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 33: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Faut-il continuer ? 33

✔ Peut-on encore améliorer l’objectif z = 2200− 2x2 − x1 ?

Non car toutes les variables ont un impact (un coût) négatif sur l’objectif

z =2200− 2x2− x1

x3 = 100+2

3x2−

1

3x1

xA = 300+1

3x2−

2

3x1

xB = 200−2

3x2+

1

3x1

xA × 10−2

xB × 10−2

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

0

z=2200

✔ Solution optimale :

xA = 300, xB = 200 (x3 = 100, x1 = x2 = 0), z∗ = 2200

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 34: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Simplexe par la méthode des dictionnaires (I) 34

✔ Programme linéaire sous la forme :

maxxj

j

cjxj

j

ai,jxj ≤ bi, (i = 1, . . . ,m)

xj ≥ 0, (j = 1, . . . , n)

✔ Ajout des variables d’écart xn+i et d’une variable objectif z

z =n∑

j=1

cjxj

xn+i = bi −n∑

j=1

ai,jxj (i = 1, . . . ,m)

A chaque itération, la solution courante est associée à un système d’équations appelé dictionnaire :

z = z +∑

j∈N

cjxj (variables hors-base xN ∈ Rn+)

(variables de base xB ∈ Rm+ ) xi = bi −

j∈N

ai,jxj , (i ∈ B = (B(1), · · · , B(m)))

- L’ensemble des variables de base xB =[

xB(1), · · · , xB(m)

]T

- B ensemble des indices des variables en base,N ensemble des indices des variables hors-base

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 35: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Simplexe par la méthode des dictionnaires (II) 35

z = z +∑

j∈N

cjxj

xi = bi −∑

j∈N

ai,jxj (i ∈ B)

✔ B ∪ N = {1, . . . ,m,m+ 1, . . . , n+m}, B ∩ N = ◦/

✔ Réécriture matricielle en fonction d’une base

- Soit B(m×m) une base de A = [B|N ], le système d’équations s’écrit :

Ax = BxB +NxN = b

- Dictionnaire sous forme simpliciale :

xB = B−1b− B−1NxN

✔ Une solution de base associée à B, (xB, xN ) = (B−1b, 0) est obtenue en posant xN = 0

✔ Le dictionnaire et la solution de base associées sont dits réalisables si xB ≥ 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 36: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Simplexe par la méthode des dictionnaires (III) 36

✔ Expression du critère sous la forme simpliciale :

z = cTx = cTBxB + cTNxN

En remplaçant xB par sa valeur en fonction des variables hors-base :

z = cTBB−1b+ (cTN − cTBB

−1N)xN

= z + cTNxN

Les cN sont appelés coûts réduits relatifs aux variables hors-base

✔ Dictionnaire final en fonction de la base optimale :

xN

xB b = B−1b −B−1N

z z∗ = cTBB−1b cN = cTN − cTBB

−1N ≤ 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 37: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Simplexe par la méthode des dictionnaires (IV) 37

✔ Dictionnaire initial :

z =n∑

j=1

cjxj

xn+i = bi −n∑

j=1

ai,jxj (i = 1, . . . ,m)

- La base initiale est formée à l’aide des variables d’écart B = {n+ 1, . . . , n+m}

- Les variables hors-base sont les variables initiales du problèmeN = {1, . . . , n}

- B base initiale réalisable ?

✔ Propriétés des solutions de base

- Toutes les solutions réalisables ne sont pas associées à une base (ou un dictionnaire)

- Chaque point extrême réalisable est représenté par au moins un dictionnaire

- L’algorithme du simplexe considère exclusivement les solutions de base réalisables

❡ Théorème 4 Si un PL admet une solution optimale, alors il en existe une en un point extrême

✍ Remarques 1 Pour chaque itération du simplexe : choix d’une variable à faire entrer dans la base et

d’une variable à faire sortir de la base

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 38: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Choix de la variable entrante 38

z = z +∑

j∈N

cjxj

xi = bi −∑

j∈N

ai,jxj (i ∈ B)

Les coûts réduits cj , j ∈ N représentent l’impact de l’augmentation d’une variable sur l’objectif z

❡ Théorème 5 Condition d’optimalité

La solution de base est optimale si et seulement si tous les coûts réduits sont négatifs ou nuls

z = z∗ ⇔ bi = B

−1i b ≥ 0, ∀ i ∈ B, cj ≤ 0,∀j ∈ N

✇ Procédure 2

➊ On choisit une variable dont le coût réduit est positif : xk , k ∈ N telle que ck > 0

➋ Cas des choix multiples (plusieurs variables candidates pour entrer en base) : ➤ choix heuristiques

Choisir la variable de plus grand coût réduit : maxj∈N

cj

Choisir la variable d’indice le plus petit (règle de Bland)

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 39: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Choix de la variable sortante 39

z = z +∑

j∈N

cjxj

xi = bi −∑

j∈N

ai,jxj (i ∈ B)

Le choix dépend de la variable xk qui va entrer en base

Impact sur les variables en base en fonction du coefficient ai,k, i ∈ B

- Si ai,k ≤ 0, l’augmentation de xk entraine une augmentation de xi

- Si ai,k > 0, l’augmentation de xk entraine une diminution de xi et xi ≥ 0

xi = bi − ai,kxk ≥ 0⇒ xk ≤biai,k

✇ Procédure 3

➊ Choisir s ∈ B tel que s = argmini∈B

{

biai,k

: ai,k > 0

}

, xs est la variable sortante

➋ Si ∃ i ∈ B : bi = 0, le dictionnaire est dégénéré

➌ Si ai,k ≤ 0 ∀ i ∈ B, pas de candidat pour sortir de la base et le problème est non-borné

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 40: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Etape de pivotage 40

z = z +∑

j∈N\{k}

cjxj + ckxk

xi = bi −∑

j∈N\{k}

ai,jxj − ai,kxk (i ∈ B)

Pivotage : réécrire le dictionnaire par rapport à la nouvelle base

xk =bsas,k

−∑

j∈N\{k}

as,jas,k

xj −1

as,kxs

z = z + ckbsas,k

+∑

j∈N\{k}

(cj − ckas,jas,k

)xj − ck1

as,kxs

xi = bi − ai,kbsas,k

−∑

j∈N\{k}

(ai,j − ai,kas,jas,k

)xj + ai,k1

as,kxs,∀ i ∈ B \ {s}

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 41: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Le problème des pivots dégénérés et des cycles (I) 41

▼ Définition 2

Un pivot est dégénéré si, dans le calcul de la variable sortante, le rapportas,k

bs→ +∞

✍ Remarques 2 Un dictionnaire dégénéré ne conduit pas nécessairement à un pivot dégénéré

Exemple :

max z = 5 + x3 − x1

x2 = 5 + 2x3 − 3x1

x4 = 7 − 4x1

x5 = x1

En cas de pivot dégénéré, l’algorithme peut entrer dans un cycle (revenir sur une solution de base déjà

visitée) et tous les pivots dans un cycle sont dégénérés. Le nombre de dictionnaires possibles étant

Cmn+m, si la méthode du simplexe ne se termine pas, elle entre nécessairement dans un cycle entre

bases dégénérées

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 42: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Le problème des pivots dégénérés et des cycles (II) 42

Exemple de cycle :

z = 0 + 10x1 − 57x2 − 9x3 − 24x4

x5 = − 0.5x1 + 5.5x2 + 2.5x3 − 9x4

x6 = − 0.5x1 + 1.5x2 + 0.5x3 − x4

x7 = 1 − x1

Il existe des règles de picotage limitant les risques de cycle :

✔ Règle de Bland : l’algorithme termine si, à chaque itération, les variables entrante et sortante sont

choisies selon la règle du plus petit indice

✔ Méthode lexicographique : ajouter aux membres de droite des contraintes des variables

0 < ǫm << · · · << ǫ2 << ǫ1

❡ Théorème 6 [fondamental de la PL]

Pour un problème de PL sous forme standard :

✔ Si le PL n’ pas de solution optimale alors il est soit irréalisable soit non borné

✔ Si le PL a une solution réalisable alors une solution réalisable de base existe

✔ Si le PL a une solution optimale alors une solution de base optimale existe

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 43: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Phase I du simplexe et solution de base initiale réalisable (I) 43

✔ Problème :

maxx

z = cTx

aTi x ≤ bi, (i = 1, . . . ,m)

xj ≥ 0, (j = 1, . . . , n)

avec

aTk x ≤ bk < 0 → xn+k = bk − a

Tk x non realisable

✔ Solution :

Pour chaque contrainte t.q. bk < 0, décomposer la variable d’écart en xn+k − x′n+k

aTk xk + xn+k − x

′n+k = bk

Résoudre le PL auxiliaire

maxx∈Rn+m,x′∈Rl

w =

l∑

k=1:bk<0

−x′n+k

aTk x+ xn+r − x′

n+k = bk, (k = 1, . . . , l), (r = 1, · · · ,m)

x′n+k ≥ 0, xn+r ≥ 0, xj ≥ 0, (j = 1, . . . , n)

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 44: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Phase I du simplexe et solution de base initiale réalisable (II) 44

❡ Théorème 7

- Si l’optimum du PL auxiliaire w∗ = 0 avec x′n+k = 0, ∀ k = 1, · · · , l alors la solution optimale du PL

auxiliaire est une solution de base réalisable pour le PL initial

- Si l’optimum du PL auxiliaire w∗ 6= 0 avec ∃ k, x′n+k > 0 alors le PL initial est irréalisable

✇ Procédure 4

➊ Pour chaque contrainte inégalité t.q. bk < 0, décomposer la variable d’écart en xn+k − x′n+k

aTk xk + xn+k − x

′n+k = bk

➋ Poser le PL auxiliaire avec les variables artificielles x′n+i et le critère w =

l∑

k=1:bk<0

−x′n+k

➌ Obtenir une base réalisable Baux initiale pour le PL auxiliaire et le dictionnaire associé

➍ Appliquer l’algorithme du simplexe sur le PL auxiliaire pour obtenir w∗

➎ Si w∗ = 0, supprimer les variables artificielles x′n+k = 0 du dictionnaire optimal du PL auxiliaire

➏ Reprendre l’objectif initial z = cTx avec ce dictionnaire

➐ Substituer les variables hors-base dans l’objectif aux variables en base en les remplaçant par leur expression

donnée par le dictionnaire

➑ Appliquer l’algorithme normal du simplexe

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 45: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple 45

✔ PL initial :

−x1 − x2 = z[max]

−3x1 − 4x2 ≤ −12

2x1 + x2 ≤ 4

x1, x2 ≥ 0x1

x2

1 2 3 4 5 6

1

2

3

4

5

6

0 z=

3

✔ PL Auxiliaire :

− x′3 = w[max]

−3x1 − 4x2 +x3 − x′3 = −12

2x1 + x2 +x4 = 4

x1, x2, x3, x′3, x4 ≥ 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 46: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Complexité du simplexe et de la programmation linéaire 46

✔ Analyse dans le pire des cas du simplexe :

- L’algorithme du simplexe se termine après un nombre fini d’itérations (niter. ≤ Cmn+m)

maxm

Cmn+m = Cn

2n,1

2n22n ≤ Cn

2n ≤ 22n (250 = 1.1259× 1015 !)

- Exemples "pathologiques" : niter. ∼ Cmn+m itérations (exponentiel)

Klee−Minty 1972 maxx

n∑

j=1

10n−jxj

(niter. = 2n − 1) sous 2i−1∑

j=1

10i−jxj ≤ 100i−1, i = 1, · · · , n

xj ≥ 0, j = 1, 2, · · · , n

✔ Analyse empirique : Nombre d’opérations de l’ordre de Θ(m+ logn)

✔ Analyse dans le pire des cas de la programmation linéaire

- Résoudre un programme linéaire est un problème polynomial

- Utilisation des méthodes du point intérieur (N. Karmakar 1984)

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 47: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Introduction à la dualité en PL : motivation 47

Soit le problème de PL sous forme canonique :

maxxj

z =∑

j

cjxj

j

ai,jxj ≤ bi, (i = 1, . . . ,m)

xj ≥ 0, (j = 1, . . . , n)

✔ Caractérisation de la solution optimale z∗ par [zinf , zsup]

- Borne inférieure : cTx ≤ z∗ pour tout x admissible

- Borne supérieure : zsup =? telle que z∗ ≤ zsup

Solutions admissibles

z

z∗zinf zsup

✔ Recherche de [zinf , zsup] le plus petit possible pour situer l’optimum z∗

❡ Théorème 8

Toute combinaison linéaire de contraintes du PL donne une contrainte valide (satisfaite par toutes les

solutions réalisables)

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 48: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Combinaisons linéaires et bornes supérieures 48

Pour des multiplicateurs y1 ≥ 0, . . . , ym ≥ 0

a11x1 + . . . + a1nxn ≤ b1 ×y1

. . . + . . . + . . . . . . . . .

am1x1 + . . . + amnxn ≤ bm ×ymm∑

i=1

(yiai1)x1 + . . . +

m∑

i=1

(yiain)xn ≤m∑

i=1

yibi

Si c1 ≤m∑

i=1

yiai1, · · · , cn ≤m∑

i=1

yiain et pour x1 ≥ 0, . . . , xn ≥ 0, on aura

z =n∑

j=1

cjxj ≤m∑

i=1

(yiai1)x1 + . . .+m∑

i=1

(yiain)xn ≤m∑

i=1

yibi

zsup(yi)

La meilleure borne supérieure (la plus petite),→ infyi

zsup(yi) =m∑

i=1

yibi

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 49: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Meilleure borne supérieure : problème dual 49

Résoudre le programme linéaire suivant :

miny

t =m∑

i=1

yibi

sousm∑

i=1

yiaij ≥ cj , j = 1, · · · , n

y1, . . . , ym ≥ 0

Ce problème est appelé problème dual du problème canonique de départ appelé problème primal

Primal maxx

z = cTx

sous Ax ≤ b

x ≥ 0

Dual miny

t = bT y

sous AT y ≥ c

y ≥ 0

où c et x ∈ Rn×1, A ∈ R

m×n, b et y ∈ Rm×1

✍ Remarques 3

Le problème dual du dual est le problème primal

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 50: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Règles générales pour le calcul du problème dual 50

Maximisation ←→ Minimisation

ie contrainte de type≤ bi ←→ Variable yi ≥ 0

ie contrainte de type = bi ←→ Variable yi ∈ R

ie contrainte de type≥ bi ←→ Variable yi ≤ 0

Variable xj ≥ 0 ←→ je contrainte de type≥ cj

Variable xj ∈ R ←→ je contrainte de type = cj

Variable xj ≤ 0 ←→ je contrainte de type≤ cj

Exemple : PL primal sous forme standard (dualité lagrangienne)

z∗ = maxx�0

cTx t∗ = miny

bT y

sous Ax = b sous AT y � c

maxx�0

L(x, y) = cTx+ yT (b−Ax) =

bT y si c−AT y � 0

+∞ sinon

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 51: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Dualité du yaourt 51

max z = 4x1 + 5x2

2x1 + x2 ≤ 800 (y1)

x1 + 2x2 ≤ 700 (y2)

x2 ≤ 300 (y3)

x1 , x2 ≥ 0

Solution optimale primale : x∗1 = 300, x∗

2 = 200, z∗ = 2200

min t = 800y1 + 700y2 + 300y3

2y1 + y2 ≥ 4 (x1)

y1 + 2y2 + y3 ≥ 5 (x2)

y1 , y2 , y3 ≥ 0

Solution optimale duale : y∗1 = 1, y∗2 = 2, y∗3 = 0, w∗ = 2200

✍ Remarques 4

La variable duale est une variable de prix associée à chaque contrainte du primal

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 52: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Interprétation économique de la dualité 52

✔ Primal : problème de production

- xj : quantité de produit j réalisée

- aij : quantité de ressource i nécessaire à la réalisation d’un produit j,

- bi : quantité totale de ressource i disponible

- cj : profit réalisé lors de la vente d’un produit j

−→ Maximiser le profit en respectant les contraintes de ressource

max cTx sous Ax ≤ b, x ≥ 0

✔ Dual : Comment fixer le prix yi afin de racheter les ressources i?

- Point de vue du vendeur : pour tout produit j qu’on ne fabrique pas, on souhaite récupérer au

moins autant que le profit qu’on aurait réalisé∑

i

aijyi ≥ cj , ∀j

- Point de vue de l’acheteur : on souhaite payer le moins cher possible les ressources min bT y

▼ Définition 3 (Valeur marginale d’une contrainte)

La valeur marginale d’une contrainte i correspond à la valeur de sa variable duale à l’optimum y∗i

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 53: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Théorèmes de dualité : dualité faible 53

❡ Théorème 9

∀ x et ∀ y solutions resp. primal et dual admissibles, on a

Ax ≤ b, x ≥ 0

AT y ≥ c, y ≥ 0⇒ z = cTx ≤ bT y = t et z∗ ≤ t∗

Primal Dual

z∗ t∗

❍ Corollaire 1

✔ S’il existe x et y resp. primal et dual admissibles t.q. cTx = bT y alors ces solutions sont optimales

✔ Si le coût optimal du primal z∗ = +∞ alors le dual est irréalisable

✔ Si le coût optimal du dual t∗ = −∞ alors le primal est irréalisable

Exemple :

+∞ = z∗ = maxµ�0

[

1 −1]

µ t∗ = minx

x

sous[

0 1]

µ = 1 sous[

0 1]

x �[

−1 1]

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 54: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Théorèmes de dualité : dualité forte 54

❡ Théorème 10 (Théorème de la dualité (Gale, Kuhn, Tucker 1951 ))

Exactement une des trois alternatives est vraie :

✔ Le problème primal et le problème dual sont réalisables et ont une solution optimale identique

z∗ = cTx∗ = bT y∗ = t∗

Primal Dual

z∗

t∗

✔ Exactement un des problèmes est irréalisable et l’autre est non borné

✔ Primal et dual sont irréalisables

Exemple : Primal et dual irréalisables

z∗ = maxx

[

1 3]

x t∗ = miny

y1 + 2y2

sous

1 2

1 2

x =

1

2

sous

1 1

2 2

y =

1

3

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 55: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Théorème des écarts complémentaires (I) 55

❡ Théorème 11 (Théorème des écarts complémentaires)

Soit x∗ solution admissible du problème primal et y∗ solution admissible du problème dual alors x∗ et y∗ sont

respectivement des solutions optimales du primal et du dual ssi

y∗i (a

Ti x

∗ − bi) = 0, ∀ i = 1, · · · ,m

(ATj y

∗ − cj)x∗j = 0, ∀ j = 1, · · · , n

où A =[

A1 · · ·An

]

=

aT1

...

aTm

✍ Remarques 5

- Les deux conditions du théorème sont appelées conditions des écarts complémentaires ou conditions de

complémentarité

- La variable duale correspondant à une contrainte non saturée est nécessairement nulle

- A une variable duale strictement positive correspond nécessairement une contrainte saturée (variable d’écart

nulle)

- Si exactement une des alternatives dans chaque paire d’égalités est vérifiée, les solutions x∗ et y∗ sont dites

satisfaire des conditions strictes de complémentarité

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 56: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Théorème des écarts complémentaires (II) 56

Primal maxx

z = cTx

sous Ax ≤ b

x ≥ 0

Dual miny

t = bT y

sous AT y ≥ c

y ≥ 0

- x ∈ Rn, A ∈ R

m×n, x =[

xn+1 · · · xn+m

]T

∈ Rm

- y ∈ Rm, y =

[

ym+1 · · · ym+n

]T

∈ Rn

- xi ←→ yi- yj ←→ xj

❡ Théorème 12

Soient x∗ et y∗ des solutions réalisables du primal et du dual respectivement alors x∗ et y∗ sont

optimales si et seulement si

x∗i y

∗m+i = 0, 1 ≤ i ≤ n

y∗jx∗n+j = 0, 1 ≤ j ≤ m

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 57: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Application aux yaourts des théorèmes de dualité (I) 57

max z = 4x1 + 5x2

2x1 + x2 + x3 = 800

x1 + 2x2 + x4 = 700

x2 + x5 = 300

x1 , x2 , x3 , x4 , x5 ≥ 0

Solution optimale : x∗ = (300, 200, 0, 0, 100), z∗ = 2200

min w = 800y1 + 700y2 + 300y3

2y1 + y2 − y4 = 4

y1 + 2y2 + y3 − y5 = 5

y1 , y2 , y3 , y4 , y5 ≥ 0

Correspondance variables primales (duales)←→ variables complémentaires primales (duales)

x1 ←→ y4,

x2 ←→ y5,

x3 ←→ y1,

x4 ←→ y2,

x5 ←→ y3

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 58: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Application aux yaourts des théorèmes de dualité (II) 58

Théorème des écarts complémentaires :

x∗1y

∗4 = 300× y∗4 = 0

x∗2y

∗5 = 200× y∗5 = 0

x∗3y

∗1 = 0× y∗1 = 0

x∗4y

∗2 = 0× y∗2 = 0

x∗5y

∗3 = 100× y∗3 = 0

On en déduit : y∗4 = y∗5 = y∗3 = 0

y1 et y2 doivent vérifier

2y∗1 + y∗2 = 4

y∗1 + 2y∗2 = 5

On trouve alors y∗ = (1, 2, 0, 0, 0), w∗ = 2200

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 59: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Dictionnaire optimal et variables duales 59

Primal : n = 2 variables, m = 3 contraintes

Dual : m = 3 variables, n = 2 contraintes

x1

x2

2 4 6 8

2

4

6

8

0

x3=

0

x4 = 0

x5=0

x1=

0

x2 = 0

Dictionnaire final :

x4 x5

x1 7 13 − 2

3

x3 1 − 13

23

x2 4 − 23

13

z 40 − 23 − 5

3

Variables duales : y∗1 = 0, y∗2 = 2/3, y∗3 = 5/3

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 60: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Lemme de Farkas (1902) pour les inégalités linéaires 60

❡ Théorème 13

Une seule des deux assertions de l’alternative suivante est vraie A ∈ Rm×n, b ∈ R

m

- ∃ x ∈ Rn | Ax � b

- ∃ y ∈ Rm | AT y = 0, y � 0, bT y < 0

On associe le primal à Ax � b

max z = 0 · x

sous Ax � bz∗ =

0 si Ax � b realisable

−∞ si Ax � b irrealisable

✔ Lagrangien :

L(x, y) = 0 · x+ yT (b− Ax) pour y � 0

✔ Fonction duale de Lagrange : (homogène positive)

g(y) = supx

L(x, y) =

bT y si AT y = 0, y � 0

+∞ sinon

✔ Problème dual :

z∗ ≤ t

∗ = infy�0, AT y=0

g(y) =

−∞ si bT y < 0,

0 si bT y ≥ 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 61: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Variations sur le lemme de Farkas 61

Pour A ∈ Rm×n et b ∈ R

m, les alternatives suivantes sont des alternatives fortes

➊ - ∃ x ∈ Rn Ax � b et x � 0

- ∃ y ∈ Rm AT y � 0 et bT y < 0 et y � 0

➋ - ∃ x ∈ Rn Ax ≺ b et x ≻ 0

- ∃ y ∈ Rm AT y � 0 et bT y ≤ 0 et x ≻ 0

➌ - ∃ x ∈ Rn Ax ≺ b

- ∃ y ∈ Rm AT y = 0 et bT y ≤ 0 et y � 0

➍ - ∃ x ∈ Rn Ax = b et x � 0

- ∃ y ∈ Rm AT y � 0 et bT y < 0

➎ - ∃ x ∈ Rn Ax = b et x ≻ 0

- ∃ y ∈ Rm AT y � 0 et bT y ≤ 0

✍ Remarques 6

- Théorème de Gordan (1873) : ➌ avec b = 0

- Théorème de Stiemke (1915) : ➎ avec b = 0

- Théorème de Ville (1938) : ➋ avec A→ −A et b = 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 62: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Lemme de Farkas généralisé 62

❒ Lemme 1

Une seule des deux assertions de l’alternative suivante est vraie A ∈ Rm×n, b ∈ R

m

- ∃ x ∈ Rn | Ax � b et cTx < 0

- ∃ y ∈ Rm | AT y + c = 0, y � 0, bT y < 0

Exemple : Pour l’ensemble des inégalités linéaires

−1 0

0 1

−1 −1

x �

2

0

−1

,[

1 0]

x < 0

Un certificat d’irréalisabilité est donné par y =[

0 1 1]T

solution de l’alternative

−1 0 −1

0 1 −1

y +

1

0

= 0,[

2 0 −1]

y < 0, y � 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 63: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Bibliographie 63

[1] A. Ben-Tal and A. Nemirovskii. Lectures on Modern Convex Optimization. SIAM Series on Optimization. SIAM,

Philadelphia, PA, USA, 2001.

[2] D. Bertsimas and J. N. Tsitsiklis. Introduction to linear optimization. Optimization and Computation Series.

Athena Scientific, Belmont, Massachussetts, USA, 1997.

[3] S. Boyd and L. Vandenberghe. Convex Optimization. Cambridge University Press, New York, NY, USA, 2004.

[4] G. B. Dantzig. Applications et prolongements de la programmation linéaire. Dunod, Dunod, Paris, 1966.

[5] G. B. Dantzig and M. N. Thapa. Linear programming. Springer, New York, New York USA, 1997.

[6] M. C. Ferris, O. L. Mangasarian, and S. J. Wright. Linear programming with MATLAB. MPS-SIAM Series on

Optimization. SIAM, Philadelphie, Pennsylvanie, USA, 2007.

[7] D. G. Luenberger. Linear and nonlinear programming. Addison Wesley Publishing Company, Reading,

Massachussets, USA, 1989.

[8] J. Matousek and B. Gärtner. Understanding and using linear programming. Springer, Heiderlberg, Germany,

2007.

[9] J. F. Maurras. Programmation linéaire, complexité. Springer, Heiderlberg, Germany, 2002.

[10] R. J. Vanderbei. Linear Programming : Foundations and extensions. International Series on Operations

Research and Management Science. Springer, New York, New York, USA, 2008.

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 64: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Analyse post-optimale 64

Que devient la solution optimale si les paramètres du problème sont modifiés ?

— Modification de la borne bi d’une

contrainte

x1

x2 ±δb1

±δb

2

±δb3

— Modification des coefficients cj de la

fonction objectif

x1

x2

±δc

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 65: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Modification de l’objectif 65

xN

xB b = B−1b −B−1N

z z∗ = cTBB−1b cN = cTN − cTBB

−1N ≤ 0

c→ c′ = c+∆

1. Est-ce que la base reste réalisable ?

Oui : b = B−1b ≥ 0 est indépendant de c

2. Est-ce que la base reste optimale ?

Vérifier que c′ = c′TN − c′TB B−1N ≤ 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 66: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple 66

Max z = 3x1−2x2

2x1− x2 ≤30

x1− x2 ≤10

x1, x2 ≥ 0

Base optimale = {2, 1}

Dictionnaire final :

z =40− x3− x4

x2 =10− (x3−2x4)

x1 =20− (x3− x4)

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 67: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Modification du coût c1 de x1 67

z = c1x1 − 2x2

On réécrit la fonction objectif en fonction des variables hors-base (ici x3 et x4)

On peut appliquer les formules, ici on peut le faire en lisant x1 et x2 dans le dictionnaire final car on

dispose de ce dernier

z = c1x1 − 2x2

=c1(20− x3 + x4)− 2(10− x3 + 2x4)

=20(c1 − 1) + (2− c1)x3 + (c1 − 4)x4

Il faut que le critère d’optimalité reste respecté (que les coûts réduits restent négatifs ou nuls)

2− c1 ≤ 0

c1 − 4 ≤ 0⇔ c1 ∈ [2, 4]

Exercice : faire l’étude pour c2 le coût de x2

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 68: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Modification de la borne d’une contrainte (capacité) 68

xN

xB b = B−1b −B−1N

z z∗ = cTBB−1b cN = cTN − cTBB

−1N ≤ 0

b→ b′ = b+ δ

1. Est-ce que la base reste optimale ?

Oui : cN = cTN − cTBB−1N ≤ 0 est indépendant de b

2. Est-ce que la base reste réalisable ?

Vérifier que b′ = B−1b′ ≥ 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 69: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Un premier exemple 69

Max z = 3x1−2x2

2x1− x2 ≤b1

x1− x2 ≤10

x1, x2 ≥ 0

Base optimale = {2, 1}

On a donc ici B =

2 −1

1 −1

et b =

b1

10

la solution de base reste réalisable si xB = B−1b ≥ 0

soit ici :

xB =

1 −1

1 −2

b1

10

≥ 0⇔

b1 − 10 ≥ 0

b1 − 20 ≥ 0⇔ b1 ∈]20,+∞[

Exercice : calculer l’interval de valeurs de b2 pour lequel la base reste réalisable

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 70: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Second exemple 70

max z = 4x1 + 3x2

Sousx1 + x3 = 8

x1 + 2x2 + x4 = 15

2x1+ x2 + x5 = 18

x ≥ 0

x4 x5

x1 7 13 − 2

3

x3 1 − 13

23

x2 4 − 23

13

z 40 − 23 − 5

3

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 71: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Second exemple 71

Variation de bi :

— Contrainte i non saturée : seule la va-

leur de xn+i est affectée

— Contrainte i saturée : toutes les valeurs

de xB et z∗ sont affectées.

x1

x2

2 4 6 8

2

4

6

8

0

x3=

0

x4 = 0

x5=0

x1=

0x2 = 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 72: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple : contrainte non saturée 72

Contrainte 1 : x1 + x3 = 8 + δb1

— Non saturée

— x∗3 = 1

Le sommet reste optimal tant que

x3 = 8 + δb1 − x∗1 ≥ 0

d’où δb1 ∈ [−1,+∞]

et δz∗ = 0

x4 x5

x1 7 13 − 2

3

x3 1 − 13

23

x2 4 − 23

13

z 40 − 23 − 5

3

x1

x2

2 4 6 8

2

4

6

8

0

x4 = 0

x5=0

x1=

0x2 = 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 73: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple : contrainte saturée 73

Contrainte 3 : 2x1 + x2 + x5 = 18 + δb3

— Saturée

— x∗5 = 0 (hors base)

Lorsque b3 varie de δb3, le sommet optimal

se déplace sur la droite x4 = 0.

Le sommet reste optimal tant que :

x1 = 7− 23 (−δb3) ≥ 0

x3 = 1 + 23 (−δb3) ≥ 0

x2 = 4 + 13 (−δb3) ≥ 0

D’où −21/2 ≤ δb3 ≤ 3/2

x4 x5

x1 7 13 − 2

3

x3 1 − 13

23

x2 4 − 23

13

z 40 − 23 − 5

3

x1

x2

2 4 6 8

2

4

6

8

0

x3=

0

x4 = 0

x5=0

x1=

0

x2 = 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 74: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple : contrainte saturée 74

Contrainte 3 : 2x1 + x2 + x5 = 18 + δb3

— Saturée

— x∗5 = 0 (hors base)

Lorsque b3 varie de δb3, le sommet optimal

se déplace sur la droite x4 = 0.

Le sommet reste optimal tant que :

x1 = 7− 23 (−δb3) ≥ 0

x3 = 1 + 23 (−δb3) ≥ 0

x2 = 4 + 13 (−δb3) ≥ 0

D’où −21/2 ≤ δb3 ≤ 3/2

x4 x5

x1 7 13 − 2

3

x3 1 − 13

23

x2 4 − 23

13

z 40 − 23 − 5

3

x1

x2

2 4 6 8

2

4

6

8

0

x3=

0

x4 = 0

x1=

0

x2 = 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 75: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple : contrainte saturée 75

Contrainte 3 : 2x1 + x2 + x5 = 18 + δb3

— Saturée

— x∗5 = 0 (hors base)

Lorsque b3 varie de δb3, le sommet optimal

se déplace sur la droite x4 = 0.

Le sommet reste optimal tant que :

x1 = 7− 23 (−δb3) ≥ 0

x3 = 1 + 23 (−δb3) ≥ 0

x2 = 4 + 13 (−δb3) ≥ 0

D’où −21/2 ≤ δb3 ≤ 3/2

x4 x5

x1 7 13 − 2

3

x3 1 − 13

23

x2 4 − 23

13

z 40 − 23 − 5

3

x1

x2

2 4 6 8

2

4

6

8

0

x3=

0

x4 = 0

x1=

0

x2 = 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 76: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple : contrainte saturée 76

Variations admissibles :

−21/2 ≤ δb3 ≤ 3/2

Fonction objectif :

δz∗ = 53δb3

d’où

−35/2 ≤ δz∗ ≤ 5/2

x4 x5

x1 7 13 − 2

3

x3 1 − 13

23

x2 4 − 23

13

z 40 − 23 − 5

3

x1

x2

2 4 6 8

2

4

6

8

0

x3=

0

x4 = 0

x5=0

x1=

0

x2 = 0

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 77: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Récapitulatif 77

Au sommet optimal, si la contrainte i n’est pas saturée :

— La variable d’écart xi est dans la base (xi ≥ 0)

— y∗i = 0 d’où ∆z∗ = 0

— l’intervalle de variation admissible est δ ∈ [−xi; +∞].

Au sommet optimal, si la contrainte est saturée :

— La variable d’écart xi est hors base (xi = 0)

— ∆z∗ = δ.y∗i— δ doit respecter les relations suivantes :−δ(B−1)i ≤ B−1b

où (B−1)i est la ie colonne de B−1. Ces valeurs se lisent directement dans le tableau final du

simplexe.

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 78: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Ajout d’une contrainte 78

— L’ajout d’une contrainte non redondante augmente la dimension de la base.

— La variable d’écart xn+m+1 de la nouvelle contrainte m+ 1 est dans la nouvelle base puisqu’elle

n’apparaît dans aucune autre contrainte et son coefficient est 1.

— Pour l’ajouter dans le tableau optimal du simplexe, on exprime cette variable xn+m+1 en fonction

des variables hors de la base optimale. Deux possibilités :

— la valeur de xn+m+1 est positive ou nulle : la solution actuelle est admissible, l’optimum est

inchangé (la contrainte m+ 1 est saturée ou non)

— la valeur de xn+m+1 est négative : la solution actuelle n’est plus admissible (la contrainte

m+ 1 est violée).

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 79: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple 79

Nouvelle contrainte : x1 ≤ 6. Forme standard : x1 + x6 = 6.

x1

x2

2 4 6 8

2

4

6

8

0

x3=

0

x4 = 0

x5=0

x6=

0

x1=

0

x2 = 0

x4 x5

x1 7 13 − 2

3

x3 1 − 13

23

x2 4 − 23

13

x6 −1 − 13

23

z 40 − 23 − 5

3

Solution non admissible.

La solution duale

reste admissible (y∗i ≥ 0) mais non optimale. Un pivot dans le problème dual nous ramène à la solution

optimale.

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 80: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Exemple 80

x1

x2

2 4 6 8

2

4

6

8

0

x3=

0

x4 = 0

x5=0

x6=

0

x1=

0

x2 = 0

x4 x6

x1 6 0 −1

x3 2 0 1

x292 − 1

212

x532

12

32

z 37, 5 − 32 − 5

2

Solution admissible optimale.

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 81: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Forme canonique par rapport à une base 81

Un programme linéaire est dit sous forme canonique par rapport à une base si et seulement si

1. Forme standard

2. Les coefficients associés aux variables en base sont égaux à 0

3. La sous-matrice formée par les colonnes associées aux variables de base forme la matrice identité

(à une permutation près)

Il s’agit en fait d’un système sous forme canonique dont les variables d’écart associées forment la base

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 82: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution

Invariants de boucle 82

1. Le programme linéaire est sous forme canonique par rapport à la base

2. La base est réalisable (les éléments de la dernière colonne sont positifs ou nuls)

3. Les variables de base sont listées sur la première colonne

4. La case en bas à droite vaut−z où z est la valeur de la fonction objectif pour la solution de base

courante

Cours - Introduction à la programmation linéaireLAAS

CNRS

Page 83: Introduction à la programmation linéairehomepages.laas.fr/arzelier/drupal/sites/homepages.laas.fr.arzelier/... · Cours - Introduction à la programmation linéaire LAAS CNRS. Résolution