programmation linéaire - ensiie

90
Programmation Linéaire Optimisation Alain Faye Programmation linéaire Résolution 1

Upload: others

Post on 27-Apr-2022

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programmation Linéaire - ENSIIE

Programmation Linéaire

OptimisationAlain Faye

Programmation linéaireRésolution

1

Page 2: Programmation Linéaire - ENSIIE

Contenu

• Définition d’un programme linéaire

• Résolution graphique

• Algorithme du simplexe

• Méthode des tableaux

• Méthode des 2 phases

• Utilisation du « solveur » Excel

• Conclusion

• Annexes

2

Page 3: Programmation Linéaire - ENSIIE

Forme générale d’un PL

3

min / max 𝑧 = 𝑓 𝑥 = 𝑗=1

𝑛

𝑐𝑗𝑥𝑗

s.c.

𝑗=1

𝑛

𝑎𝑖𝑗𝑥𝑗 ≤ 𝑏𝑖 𝑖 ∈ 𝑀≤

𝑗=1

𝑛

𝑎𝑖𝑗𝑥𝑗 ≥ 𝑏𝑖 𝑖 ∈ 𝑀≥

𝑗=1

𝑛

𝑎𝑖𝑗𝑥𝑗 = 𝑏𝑖 𝑖 ∈ 𝑀=

𝑥𝑗 ≥ 0 𝑗 = 1, … , 𝑛

On peut soit minimiser soit maximiser l’objectif zM≤ indices des contraintes d’inégalités de type ≤M≥ indices des contraintes d’inégalités de type ≥M= indices des contraintes d’égalitéChacun de ces ensembles peut être videOn peut toujours se ramener si besoin à des variables sans signeen posant xj = xj

+ - xj- avec xj

+ ≥ et xj- ≥0

Page 4: Programmation Linéaire - ENSIIE

Résolution d’un PL

• 2 variables : résolution graphique

• n2 variables : algorithme du simplexe

4

Page 5: Programmation Linéaire - ENSIIE

Un peu d’analyse

développement d’une fonction f autour d’un point x(0)

𝑓 𝑥 = 𝑓 𝑥(0) + 𝛻𝑓 𝑥(0) 𝑥 − 𝑥(0) + ⋯

𝛻𝑓 𝑥 =

𝑓

𝑥1

⋮𝑓

𝑥𝑛

gradient de f

Cas f linéaire: 𝑓 𝑥 = 𝑐𝑥 = 𝑐1𝑥1 + ⋯ + 𝑐𝑛𝑥𝑛

𝛻𝑓 𝑥 =

𝑐1

⋮𝑐𝑛

𝑐𝑥 = 𝑐𝑥(0) + 𝑐 𝑥 − 𝑥(0)

5

Page 6: Programmation Linéaire - ENSIIE

Direction de déplacement

On considère f linéaire : 𝑓 𝑥 = 𝑐𝑥

A partir de x(0) on se déplace dans une direction d : x=x(0)+d

𝑐 𝑥(0) + 𝛼𝑑 = 𝑐𝑥(0) + 𝛼𝑐𝑑

• Si d = c= gradient de f

𝑐 𝑥(0) + 𝛼𝑐 = 𝑐𝑥(0) + 𝛼𝑐𝑐 = 𝑐𝑥(0) + 𝛼 𝑐 2

La valeur de la fonction augmente quand on s’éloigne de x(0)

• Si d = c = opposé du gradient de f

𝑐 𝑥(0) − 𝛼𝑐 = 𝑐𝑥(0) − 𝛼𝑐𝑐 = 𝑐𝑥 0 − 𝛼 𝑐 2

La valeur de la fonction diminue quand on s’éloigne de x(0)

6

Page 7: Programmation Linéaire - ENSIIE

Exemple

Soit 𝑓 𝑥 = 𝑥1 + 2𝑥2

Le point 𝑥(0) =00

• Déplacement dans le sens du gradient 𝑑 = 𝛻𝑓 =12

𝑥(0) + 𝛼𝑑 = 𝛼12

𝑓 𝑥(0) + 𝛼𝑑 = 𝛼 + 2 2𝛼 = 5α

• Déplacement dans le sens opposé au gradient 𝑑 = −𝛻𝑓 = −12

𝑥(0) + 𝛼𝑑 = −𝛼12

𝑓 𝑥(0) + 𝛼𝑑 = −𝛼 + 2 −2𝛼 = −5α

7

Page 8: Programmation Linéaire - ENSIIE

Résolution graphique d’un PL

min 𝑧 = −𝑥1 − 2𝑥2

s.c.

𝑥1 + 𝑥2 ≤ 3𝑥1 ≤ 2−𝑥1 + 𝑥2 ≤ 1𝑥10 , 𝑥2 ≥ 0

8

Page 9: Programmation Linéaire - ENSIIE

On trace l’ensemble des solutions réalisables

32

3

2

x1

x2

0

9

1

1

min 𝑧 = −𝑥1 − 2𝑥2

s.c.

𝑥1 + 𝑥2 ≤ 3𝑥1 ≤ 2−𝑥1 + 𝑥2 ≤ 1𝑥10 , 𝑥2 ≥ 0

Page 10: Programmation Linéaire - ENSIIE

On minimise l’objectif z sur le domaine tracé

z = 0L’opposé du gradient de z est une direction de descente Pour minimiser pousser la droite z=0dans la direction opposée au gradient de z

10

32

3

2

x1

x2

0

1

1

min 𝑧 = −𝑥1 − 2𝑥2

s.c.

𝑥1 + 𝑥2 ≤ 3𝑥1 ≤ 2−𝑥1 + 𝑥2 ≤ 1𝑥10 , 𝑥2 ≥ 0

−𝛻𝑧 =12

Page 11: Programmation Linéaire - ENSIIE

Déplacement maximum en restant dans le domaine

z = -5

pousser au maximum en restant dans le domaineLe dernier point = (1 , 2) D’où z = -5

11

32

3

2

x1

x2

0

1

1

min 𝑧 = −𝑥1 − 2𝑥2

s.c.

𝑥1 + 𝑥2 ≤ 3𝑥1 ≤ 2−𝑥1 + 𝑥2 ≤ 1𝑥10 , 𝑥2 ≥ 0

Page 12: Programmation Linéaire - ENSIIE

Bilan de la résolution graphique

• On se déplace selon une direction de descente

(si on minimise)

• Direction de montée si on maximise

• L’optimum est atteint en un point extrême du domaine (l’ensemble des solutions réalisables)

• Pratique pour n=2 variables

• Pour n=3 faire des dessins en 3 dimensions

• et n4 ?

12

Page 13: Programmation Linéaire - ENSIIE

Résultats généraux

• Représentation paramétrique des polyèdres

• Résultats sur la minimisation d’une forme linéaire

13

Page 14: Programmation Linéaire - ENSIIE

14

Représentation paramétrique des polyèdres

Polyèdre : ensemble des solutions d’un système d’inégalités linéaires

P = {x : Ax≤b}

Point extrême de P = point de P qui ne peut pas s’exprimer commecombinaison convexe de 2 points distincts de P

Polyèdre borné (i.e. ne contient pas de points infiniment « grands »)

xP xConv(Ext P) (l’enveloppe convexe des points extrêmes de P)

x = σ𝑥𝑖∈𝐸𝑥𝑡 𝑃 𝑖𝑥𝑖 avec 𝑖 ≥ 0 𝑖 , σ𝑖 𝑖 = 1

Page 15: Programmation Linéaire - ENSIIE

15

Polyèdre non borné

Rayons de P = Q = {d: Ad ≤0}Q un cône convexe c’est-à-dire si d1 , d2 Q alors α1d1+ α2d2 Q α1, α2 ≥ 0

Rayon extrême est un rayon qui ne peut pas s’exprimer comme combinaison positive de 2 rayons distincts de P

Représentation paramétrique de P

xP xConv(Ext P) + Cône(Ray P) l’enveloppe convexe des points extrêmes de P + l’enveloppe conique des rayons extrêmes de P

x = σ𝑥𝑖∈𝐸𝑥𝑡 𝑃 𝑖𝑥𝑖 + σ

𝑑𝑗∈𝑅𝑎𝑦 𝑃 𝛼𝑗𝑑𝑗 avec 𝑖 ≥ 0 𝑖 , σ𝑖 𝑖 = 1 , α𝑗 ≥ 0 𝑗

Représentation paramétrique des polyèdres

Page 16: Programmation Linéaire - ENSIIE

Représentation paramétrique: un exemple

16

32

3

2

x1

x2

0

1

1

𝑃 =

2𝑥1 ≥ 𝑥2

𝑥1 − 𝑥2 ≤ 1𝑥1 + 𝑥2 ≥ 1

𝑥1 ≥ 12

𝑄 =

2𝑥1 ≥ 𝑥2

𝑥1 − 𝑥2 ≤ 0𝑥1 + 𝑥2 ≥ 0

𝑥1 ≥ 0

Points extrêmes de P=1

2

1,

1

21

2

,10

Rayons extrêmes de Q=12

,11

. Ce sont des vecteurs

P

Page 17: Programmation Linéaire - ENSIIE

17

Soit le problème min z=cx sous contrainte xP={x : Ax≤b}

Cas P borné L’optimum est atteint en un point extrêmeDémonstration:

Soit 𝑥∗ = 𝑎𝑟𝑔𝑚𝑖𝑛 𝑐𝑥𝑖 ∶ 𝑥𝑖 ∈ 𝐸𝑥𝑡 𝑃

xP x = σ𝑥𝑖∈𝐸𝑥𝑡 𝑃 𝑖𝑥𝑖 avec 𝑖 ≥ 0 𝑖 , σ𝑖 𝑖 = 1

cx = σ𝑥𝑖∈𝐸𝑥𝑡 𝑃 𝑖𝑐𝑥𝑖 ≥ σ

𝑥𝑖∈𝐸𝑥𝑡 𝑃 𝑖𝑐𝑥∗ = 𝑐𝑥∗

x* est bien un minimiseur de la forme linéaire cx

Cas P non borné• Soit l’optimum est non borné (-)• Soit l’optimum est atteint en 1 point extrêmeDémonstration:Si dQ tel que cd<0 alors soit xP alors x+αdP α>0 et c(x+αd)=cx +αcd - quand α + Sinon (d Q cd≥0) on peut ne considérer que les points de P dans Conv(Ext P) et on est ramené au cas précédent (P borné).

Minimisation d’une forme linéaire sur un polyèdre

Page 18: Programmation Linéaire - ENSIIE

Algorithme du simplexe

• Mise sous forme standard

• Base , solution de base

• Critère d’optimalité d’une solution de base

• Déplacement d’une solution de base à une autre

• Validité de l’algorithme

• Méthode des tableaux : disposition pratique des calculs

• Recherche d’une base initiale: méthode des 2 phases

18

Page 19: Programmation Linéaire - ENSIIE

Forme standard

19

min 𝑧 = 𝑐𝑥 s.c. 𝐴𝑥 = 𝑏 , 𝑥 ≥ 0

On se ramène à la forme standard en rajoutant des variables d’écart

min 𝑧 = −𝑥1 − 2𝑥2

s.c.

𝑥1 + 𝑥2 + 𝑥3 = 3𝑥1 + 𝑥4 = 2−𝑥1 + 𝑥2 + 𝑥5 = 1

𝑥1, 𝑥2, 𝑥3, 𝑥4, 𝑥5 ≥ 0

min 𝑧 = −𝑥1 − 2𝑥2

s.c.

𝑥1 + 𝑥2 ≤ 3𝑥1 ≤ 2−𝑥1 + 𝑥2 ≤ 1𝑥10 , 𝑥2 ≥ 0

Page 20: Programmation Linéaire - ENSIIE

20

P = {x≥0 : Ax=b }

A matrice m lignes et n colonnes (n>m) de rang m On peut toujours partitionner les colonnes de A de sorte que A=(B N) où B matrice carrée (m×m) inversible

Théorème

xExt P x=𝑥𝐵

𝑥𝑁avec xB=B-1b≥0 et xN=0 et B matrice carrée (m×m) inversible

extraite de A

Il y a donc au plus autant de points extrêmes que de façons de partitionner A en (B N) avec B inversible

Caractérisation des points extrêmes du polyèdre sous forme standard

Page 21: Programmation Linéaire - ENSIIE

21

Base, solution de base

m contraintes , n variables m<nB matrice carrée (m lignes m colonnes) formée de colonnes de AB inversibleQuitte à permuter des colonnes, A se décompose en 2 matrice B et N A=[B N]xB variables de base , xN variable hors-base Ax = b BxB + NxN = b

𝐴 =1 1 1 0 01 0 0 1 0

−1 1 0 0 1

Variables de base x3 , x4 , x5 , hors-base x1 , x2

𝐵 =1 0 00 1 00 0 1

, 𝑁 =1 11 0

−1 1

Il y a de nombreuses bases possibles

𝑥1 + 𝑥2 + 𝑥3 = 3𝑥1 + 𝑥4 = 2−𝑥1 + 𝑥2 + 𝑥5 = 1

𝑥1, 𝑥2, 𝑥3, 𝑥4, 𝑥5 ≥ 0x3 x4 x5 x1 x2

Page 22: Programmation Linéaire - ENSIIE

Solution de base

22

xB variables de base , xN variable hors_baseAx = b BxB + NxN = b xB + B-1NxN = B-1 b

Solution de base:on fixe xN= 0 , alors xB = B-1 b

x1 = x2 = 0 alors solution unique x3 = 3, x4 = 2, x5 = 1

𝑥1 + 𝑥2 + 𝑥3 = 3𝑥1 + 𝑥4 = 2−𝑥1 + 𝑥2 + 𝑥5 = 1

𝑥1, 𝑥2, 𝑥3, 𝑥4, 𝑥5 ≥ 0

Page 23: Programmation Linéaire - ENSIIE

Coûts réduits

23

xB variables de base , xN variable hors_baseAx = b BxB + NxN = b xB + B-1NxN = B-1 b

fonction z s’écrit : z = cx z = cBxB + cNxN

On exprime z en fonction de xN uniquement en éliminant xB :

z = cB (B-1 b - B-1 NxN) +cN xN = cB (B-1 b) + (cN - cB B-1 N) xN

Coûts réduits = coefficients des variables hors-base = cN - cB B-1 N

𝑧 = −𝑥1 − 2𝑥2

Variables de base x3 , x4 , x5 , hors-base x1 , x2

c3 = 0 c4 = 0 c5 = 0, hors-base c1 = -1 c2 = -2coûts réduits = cN - cB B-1 N = [-1 -2]

Page 24: Programmation Linéaire - ENSIIE

Sol. de base n°1 : var. en base x3, x4, x5

Optimum atteint ?

24

On est sur la solution de base x1 = x2 = 0 x3 = 3, x4 = 2, x5 = 1et z = – x1 – 2x2 = 0On voit que si on augmente x2 (de coefficient -2) la valeur de z va diminuer.De combien peut-on l’augmenter ? Il faut que les variables restent 0

On voit sur le système que la valeur max est 1(par la 3è contrainte)Et quand x2=1 nécessairement x5=0, x3=2 x4=2

Ce point est une autre solution de base:variables de base x2=1, x3=2, x4 =2, hors base x1 =0, x5=0Et z = -2

𝑥1 + 𝑥2 + 𝑥3 = 3𝑥1 + 𝑥4 = 2−𝑥1 + 𝑥2 + 𝑥5 = 1

𝑥1, 𝑥2, 𝑥3, 𝑥4, 𝑥5 ≥ 0

Page 25: Programmation Linéaire - ENSIIE

Sol. de base n°2 : var. en base x2, x3, x4

Optimum atteint ?

25

Calculons les coûts réduits pour la nouvelle base: variables en base x2, x3, x4

c’est-à-dire exprimons z en fonction des variables hors-base x1 , x5

Pour cela exprimons d’abord les variables de base en fonction des hors-base

𝐵 =1 0 10 1 00 0 1

, 𝑁 =1 01 0

−1 1, 𝐵−1 =

1 0 −10 1 00 0 1

, 𝐵−1𝑁 =2 −11 0

−1 1,𝐵−1𝑏 =

221

Ce qui donne le système: ൞

2𝑥1 + 𝑥3 −𝑥5 = 2

𝑥1 + 𝑥4 = 2

−𝑥1 𝑥2 + 𝑥5 = 1

Ensuite on exprime z en fonction des variables hors-base donc on remplace x2=1-x5 +x1(dernière ligne) et z = -x1-2(1-x5 +x1) = -2 -3x1 + 2x5

z = -2 sur la sol. de base x2=1, x3=2, x4 =2, x1 =0, x5=0

x3 x4 x2 x1 x5 x1 x5

Page 26: Programmation Linéaire - ENSIIE

Sol. de base n°2 : var. en base x2, x3, x4

Optimum non atteint

26

On a le système: ൞

2𝑥1 + 𝑥3 −𝑥5 = 2

𝑥1 + 𝑥4 = 2

−𝑥1 𝑥2 + 𝑥5 = 1

z en fonction des variables hors-base z = -2 -3x1 + 2x5

On voit que si on augmente x1 (de coefficient -3) la valeur de z va diminuer.De combien peut-on l’augmenter ? Les variables doivent rester 0

On voit sur le système que la valeur max est 1 (première équation)Et quand x1=1 nécessairement x3=0, x4=1, x2=2

Ce point est une autre solution de base:variables de base x1=1 x2=2, x4 =1, hors base x3 =0, x5=0 Et z = -5

Page 27: Programmation Linéaire - ENSIIE

Sol. de base n°3 : var. en base x1, x2, x4

Optimum atteint ?

27

Calculons les coûts réduits pour la nouvelle base: variables en base x1, x2, x4

c’est-à-dire exprimons z en fonction des variables hors-base x3 , x5

Pour cela exprimons d’abord les variables de base en fonction des hors-base

𝐵 =1 0 11 1 0

−1 0 1, 𝑁 =

1 00 00 1

, 𝐵−1 =

1

20

−1

2−1

21

1

21

20

1

2

, 𝐵−1𝑁 =

1

2

−1

2−1

2

1

21

2

1

2

,𝐵−1𝑏 =112

Ce qui donne le système:

𝑥1 +𝑥32

−𝑥52

= 1

−𝑥32

+𝑥4 +𝑥52

= 1

𝑥2 +𝑥32

+𝑥52

= 2

Ensuite on exprime z en fonction des variables hors-base donc on remplace x1=1-½x3+ ½ x5 (première ligne) x2=2-½x3-½ x5 (dernière ligne) et z = -(1-½x3+ ½ x5)-2(2-½x3-½ x5 ) = -5 +3/2x3 + ½ x5

z = -5 sur la sol. de base x1=1, x2=2, x4 =1, x3 =0, x5=0

x1 x4 x2 x3 , x5

Page 28: Programmation Linéaire - ENSIIE

Sol. de base n°3 : var. en base x1, x2, x4

Optimum atteint

28

z = -5 + 3/2x3 + ½ x5

z = -5 sur la sol. de base x1=1, x2=2, x4 =1, x3 =0, x5=0

Les coefficients des variables x3 , x5 sont 0Donc on ne peut plus diminuer la valeur de z.

La solution est optimale.

Page 29: Programmation Linéaire - ENSIIE

Validité de l’algorithme du simplexe

29

ThéorèmeSoit une base B telle que B-1b>0.

Alors la solution de base 𝑥∗ =𝑥𝐵

𝑥𝑁∗ = 𝐵−1𝑏

0est optimale ssi les coûts réduits

𝑐𝑁 − 𝑐𝐵𝐵−1𝑁 sont ≥ 0

DémonstrationSens suffisant Soit x0 t.q. Ax=b (x est une solution quelconque réalisable). cx=cx*+c(x-x*). Montrons que c(x-x*)≥0𝑐 𝑥 − 𝑥∗ = 𝑐 − 𝑐𝐵𝐵−1𝐴 + 𝑐𝐵𝐵−1𝐴 𝑥 − 𝑥∗ = 𝑐 − 𝑐𝐵𝐵−1𝐴 𝑥 − 𝑥∗ + 𝑐𝐵𝐵−1𝐴 𝑥 − 𝑥∗

Le dernier terme 𝑐𝐵𝐵−1𝐴 𝑥 − 𝑥∗ = 𝑐𝐵𝐵−1 𝑏 − 𝑏 = 0Le premier terme 𝑐 − 𝑐𝐵𝐵−1𝐴 𝑥 − 𝑥∗ = 𝑐 − 𝑐𝐵𝐵−1𝐴 𝑥 − 𝑐 − 𝑐𝐵𝐵−1𝐴 𝑥∗

𝑐 − 𝑐𝐵𝐵−1𝐴 𝑥 ≥ 0 car 𝑐 − 𝑐𝐵𝐵−1𝐴 ≥ 0 et 𝑥 ≥ 0

𝑐 − 𝑐𝐵𝐵−1𝐴 𝑥∗ = 𝑐𝐵 − 𝑐𝐵𝐵−1𝐵 ; 𝑐𝑁 − 𝑐𝐵𝐵−1𝑁𝑥𝐵

𝑥𝑁∗ = 0 ; 𝑐𝑁 − 𝑐𝐵𝐵−1𝑁

𝑥𝐵∗

0= 0

Note : la démonstration reste valide si B-1b a des coordonnées nulles

Page 30: Programmation Linéaire - ENSIIE

Optimalité du simplexe

30

DémonstrationSens nécessaire Supposons j t.q. 𝑐𝑗 − 𝑐𝐵𝐵−1𝐴𝑗 < 0

Alors on peut faire décroître l’objectif. Considérons

𝑥𝜃 = 𝑥∗ + −𝐵−1𝐴𝑗

𝑒𝑗= 𝐵−1𝑏

0+

−𝐵−1𝐴𝑗

𝑒𝑗

𝑐𝑥𝜃 = 𝑐𝑥∗ + 𝜃 −𝑐𝐵𝐵−1𝐴𝑗 + 𝑐𝑗

Donc si >0 alors 𝑐𝑥𝜃 < 𝑐𝑥∗ et x* pas optimalIl faut que x satisfasse les contraintes• Ax=b est vérifié • x 0 ? La partie contraignante est la partie haute de x

𝐵−1𝑏 − 𝜃𝐵−1𝐴𝑗 ≥ 0 (1)

Si B-1b>0, on peut toujours trouver >0 t.q. l’inégalité (1) est vérifiée

𝜃 = min𝐵−1𝑏 𝑖

𝐵−1𝐴𝑗 𝑖

: 𝑖 𝑡. 𝑞. 𝐵−1𝐴𝑗 𝑖> 0

Page 31: Programmation Linéaire - ENSIIE

31

Base dégénérée: base B réalisable telle que B-1b≥0 a au moins une coordonnée nulle

Quand on est sur une base dégénérée on peut passer à une autre base (adjacente) sans que pour autant l’objectif z ne change de valeur. En fait, dans ce cas on reste sur le même point.

On peut alors cycler c’est-à-dire revenir sur une base déjà parcourue. En pratique, ceci est très rare. Cependant, il existe des méthodes pour s’en prévenir (règle de Bland).

Quand on est sur une base dégénérée on peut avoir des coûts réduits < 0 et pourtant être en présence d’une solution optimale. Voir l’exemple suivant.

Page 32: Programmation Linéaire - ENSIIE

Exemple dégénérescence

32

Soit le problème min 𝑧 = −𝑥1 −1

2𝑥2

s.c.

𝑥1 + 𝑒1 = 1𝑥2 + 𝑒2 = 1

𝑥1 +𝑥2 +𝑒3 = 2𝑥1, 𝑥2, 𝑒1, 𝑒2, 𝑒3 ≥ 0

Base x1 , x2 , e1 – Hors base e2 , e3 . On est sur le point

𝑥1

𝑥2

𝑒1𝑒2

𝑒3

=

11000

z = -3/2 + e3 – e2/2

On fait rentrer e2 de coût réduit <0 et e1=0 sort de la base

Base x1 , x2 , e2 – Hors base e1 , e3

z = -3/2 + e1/2 + e3/2Cette fois les coûts réduits ≥0 indiquent qu’on est à l’optimum et on est toujours sur le même point.

Page 33: Programmation Linéaire - ENSIIE

Bilan

• Une solution de base correspond à un point extrême de l’ensemble des solutions réalisables

• On passe de solution de base en solution de base voisines (une seule var. de base change)

• On s’arrête en consultant les coûts réduits:

– Minimisation: coûts réduits0 on stoppe

– Maximisation: coûts réduits0 on stoppe

33

Page 34: Programmation Linéaire - ENSIIE

Algorithme du simplexeMéthode des tableaux

34

Page 35: Programmation Linéaire - ENSIIE

Méthodes des tableaux

• On met les coefficients du problème dans un tableau

• Chaque tableau correspond à une solution de base

• Chaque ligne du tableau correspond à une contrainte

• La dernière ligne représente la fonction objectif z• Le passage d’un tableau au suivant c’est-à-dire

d’une solution de base à une solution de base voisine se fait simplement (sans calculer B-1)

35

Page 36: Programmation Linéaire - ENSIIE

Rappel : vocabulaire, notation

36

Soit le problème: min 𝑧 = 𝑐𝑥 s.c. 𝐴𝑥 = 𝑏 , 𝑥 ≥ 0

• B est une matrice carrée extraite de A par sélection de colonnes de A(nombre de lignes de B = nombre de lignes de A)

• B est inversible

• Sélectionner une colonne de A revient à sélectionner une variable.Les variables sélectionnées pour construire B sont dites en base.

Une colonne j de A sera notée Aj

Page 37: Programmation Linéaire - ENSIIE

Base voisine

37

B et B ne diffèrent que par une colonne. s variable (col.) sortante , r variable (col.) entrante

B=

𝑎1𝑠

⋮𝑎𝑟𝑠

⋮𝑎𝑚𝑠

, B=

𝑎1𝑟

⋮𝑎𝑟𝑟

⋮𝑎𝑚𝑟

On a alors:

B-1B=

1 0 𝑦1 0 00 ⋱ ⋮ 00 0 𝑝 0

0 ⋮ ⋱ 00 0 𝑦𝑚 0 1

où B-1

𝑎1𝑟

⋮𝑎𝑟𝑟

⋮𝑎𝑚𝑟

=

𝑦1

⋮𝑝⋮

𝑦𝑚

Page 38: Programmation Linéaire - ENSIIE

Base voisine

38

Inversons B-1B

(B-1B)-1=

1 𝑦1 00 ⋱ 00 𝑝 0

0 ⋱ 00 𝑦𝑚 1

−1

=

1 −𝑦1𝑝

0

0 ⋱ 0

01

𝑝0

0 ⋱ 00 −

𝑦𝑚𝑝

1

Alors B-1= (B-1B)-1 B-1 se calcule simplement par pré-multiplication de B-1

par la matrice P=(B-1B)-1

P est simple à obtenir dès que l’on connait le produit de B-1 par la colonne r de la matrice A

Page 39: Programmation Linéaire - ENSIIE

Exemples

39

B avec var. de base ={x3 , x4 , x5} , B avec var. de base ={x3 , x4 , x2}

B=1 0 00 1 00 0 1

, B=1 0 10 1 00 0 1

, B-1A2=101

, p=1, P=

1 0 −1

1

0 1 00 0 1

1

, B-1= P B-1 =1 0 −10 1 00 0 1

B avec var. de base ={x3 , x4 , x2} , B avec var. de base ={x1 , x4 , x2}

B=1 0 10 1 00 0 1

, B=1 0 11 1 0

−1 0 1, B-1A1=

21

−1, p=2, P=

1

20 0

−1

21 0

1

20 1

, B-1= P B-1

=

1

20 −1

2

−1

21 1

21

20 1

2

𝑥1 + 𝑥2 + 𝑥3 = 3𝑥1 + 𝑥4 = 2−𝑥1 + 𝑥2 + 𝑥5 = 1

Page 40: Programmation Linéaire - ENSIIE

Passer d’un tableau à l’autre: pivotage

40

• Itération i, on a B-1Ax = B-1b

• Itération i+1 , on veut B-1Ax = B-1b

Or B-1 = PB-1 et donc on veut PB-1Ax = PB-1b

Donc il suffit de pré-multiplier le tableau précédent par P

Page 41: Programmation Linéaire - ENSIIE

Passer d’un tableau à l’autre : pivotage

41

P=

1 −𝑦1𝑝

0

0 ⋱ 0

01

𝑝0

0 ⋱ 00 −

𝑦𝑚𝑝

1

Le tableau courant est pré-multiplié par PLa ligne du pivot est divisée par le pivot p

=

𝑦1

𝑝

⋮𝑦𝑚

col. r

Page 42: Programmation Linéaire - ENSIIE

Passer d’un tableau à l’autre : pivotage

42

P=

1 −𝑦1𝑝

0

0 ⋱ 0

01

𝑝0

0 ⋱ 00 −

𝑦𝑚𝑝

1

Le tableau courant est pré-multiplié par P

La ligne 1 du tableau devient la ligne 1 – la ligne du pivot multipliée par y1/p

=

𝑦1

𝑝

⋮𝑦𝑚

col. r

Page 43: Programmation Linéaire - ENSIIE

Passer d’un tableau à l’autre : pivotage

43

P=

1 −𝑦1𝑝

0

0 ⋱ 0

01

𝑝0

0 ⋱ 00 −

𝑦𝑚𝑝

1

Le tableau courant est pré-multiplié par P

La ligne m du tableau devient la ligne m – la ligne du pivot multipliée par ym/p

=

𝑦1

𝑝

⋮𝑦𝑚

col. r

Page 44: Programmation Linéaire - ENSIIE

Passer d’un tableau à l’autre : pivotage

44

On peut vérifier que après avoir pré-multiplié le tableau courant par Pil apparaît une colonne de la matrice identité dans la colonne r du tableau

=

0⋮

1

⋮0

col. r

Page 45: Programmation Linéaire - ENSIIE

Tableau initial : base initiale x3, x4, x5

45

Base x1 x2 x3 x4 x5

x3 1 1 1 0 0 = 3

x4 1 0 0 1 0 = 2

x5 -1 1 0 0 1 = 1

-1 -2 0 0 0 = 0 + z

Zone bleu = contraintesZone verte = fonction objectif z

Page 46: Programmation Linéaire - ENSIIE

Variable entrant en base

46

Base x1 x2 x3 x4 x5

x3 1 1 1 0 0 = 3

x4 1 0 0 1 0 = 2

x5 -1 1 0 0 1 = 1

-1 -2 0 0 0 = 0 + z

Coût réduit le plus petit = -2 x2 rentre en base

Page 47: Programmation Linéaire - ENSIIE

Variable sortant de base

47

Base x1 x2 x3 x4 x5

x3 1 1 1 0 0 = 3

x4 1 0 0 1 0 = 2

x5 -1 1 0 0 1 = 1

-1 -2 0 0 0 = 0 + z

Coût réduit le plus petit = -2 x2 rentre en base

Qui sort ? Min { 3/1, ….}

Page 48: Programmation Linéaire - ENSIIE

Variable sortant de base

48

Base x1 x2 x3 x4 x5

x3 1 1 1 0 0 = 3

x4 1 0 0 1 0 = 2

x5 -1 1 0 0 1 = 1

-1 -2 0 0 0 = 0 + z

Coût réduit le plus petit = -2 x2 rentre en base

Qui sort ? Min { 3/1, 1/1 }

Page 49: Programmation Linéaire - ENSIIE

Variable sortant de base

49

Ratios du second membre sur les coefficients>0 de la col. x2 (en zone bleue)

min 3

1,

1

1= 1 qui correspond à x5

Base x1 x2 x3 x4 x5

x3 1 1 1 0 0 = 3

x4 1 0 0 1 0 = 2

x5 -1 1 0 0 1 = 1

-1 -2 0 0 0 = 0 + z

Coût réduit le plus petit = -2 x2 rentre en base

Qui sort ? Min { 3/1, 1/1 } = 1 qui correspond à x5

Page 50: Programmation Linéaire - ENSIIE

Changement de base : pivotage

50

Base x1 x2 x3 x4 x5

x3 1 1 1 0 0 = 3

x4 1 0 0 1 0 = 2

x5 -1 1 0 0 1 = 1

-1 -2 0 0 0 = 0 + z

• Ligne du pivot = ligne de la variable qui sort ici x5 (ligne rose)On la divise par le pivot entouré en rouge

• Une ligne i (autre que ligne du pivot) Soit air le coef. à l’intersection de la ligne i et col. rentrante ici x2On la remplace par ligne i – air nouvelle ligne du pivot

Page 51: Programmation Linéaire - ENSIIE

Nouveau tableau : base x3, x4, x2

51

Base x1 x2 x3 x4 x5

x3 2 0 1 0 -1 = 2

x4 1 0 0 1 0 = 2

x2 -1 1 0 0 1 = 1

-3 0 0 0 2 = 2 + z

On voit qu’il apparait une colonne de la matrice identitésous la variable x2

Page 52: Programmation Linéaire - ENSIIE

Variable entrant en base

52

Base x1 x2 x3 x4 x5

x3 2 0 1 0 -1 = 2

x4 1 0 0 1 0 = 2

x2 -1 1 0 0 1 = 1

-3 0 0 0 2 = 2 + z

Coût réduit le plus petit = -3 x1 rentre en base

Page 53: Programmation Linéaire - ENSIIE

Variable sortant de base

53

Base x1 x2 x3 x4 x5

x3 2 0 1 0 -1 = 2

x4 1 0 0 1 0 = 2

x2 -1 1 0 0 1 = 1

-3 0 0 0 2 = 2 + z

Coût réduit le plus petit = -3 x1 rentre en base

Variable de base qui va s’annuler et sortir de base ?Ratios du second membre sur les coefficients>0 de la col. x1 (en zone bleue)

min 2

2,

2

1= 1 qui correspond à x3

Page 54: Programmation Linéaire - ENSIIE

Changement de base : pivotage

54

Base x1 x2 x3 x4 x5

x3 2 0 1 0 -1 = 2

x4 1 0 0 1 0 = 2

x2 -1 1 0 0 1 = 1

-3 0 0 0 2 = 2 + z

• Ligne du pivot = ligne de la variable qui sort ici x3 (ligne rose)On la divise par le pivot entouré en rouge

• Une ligne i (autre que ligne du pivot) Soit air le coef. à l’intersection de la ligne i et col. rentrante ici x1On la remplace par ligne i – air nouvelle ligne du pivot

Page 55: Programmation Linéaire - ENSIIE

Nouveau tableau : base x1, x4, x2

55

Base x1 x2 x3 x4 x5

x1 1 0 ½ 0 -½ = 1

x4 0 0 -½ 1 ½ = 1

x2 0 1 ½ 0 ½ = 2

0 0 3/2 0 ½ = 5 + z

Tous les coûts réduits 0 (ligne verte)STOP

La solution se lit dans le second membre pour les var. de baseLes var. hors-base sont nulles

La solution est x1=1, x4=1, x2=2, x3=x5=0

Page 56: Programmation Linéaire - ENSIIE

Un autre exemple

56

min 𝑧 = −𝑥1 − 2𝑥2

s.c.

−𝑥1 + 𝑥2 ≤ 1−𝑥1 + 2𝑥2 ≤ 3

𝑥1 − 2𝑥2 ≤ 1𝑥10 , 𝑥2 ≥ 0

Page 57: Programmation Linéaire - ENSIIE

On trace l’ensemble des solutions réalisables

57

32

3

2

x1

x2

0

1

1

min 𝑧 = −𝑥1 − 2𝑥2

s.c.

−𝑥1 + 𝑥2 ≤ 1−𝑥1 + 2𝑥2 ≤ 3

𝑥1 − 2𝑥2 ≤ 1𝑥10 , 𝑥2 ≥ 0

Page 58: Programmation Linéaire - ENSIIE

On minimise l’objectif z sur le domaine tracé

58

L’opposé du gradient de z est une direction de descente Pour minimiser pousser la droite z=0dans la direction opposée au gradient de z

32

3

2

x1

x2

0

1

1

min 𝑧 = −𝑥1 − 2𝑥2

s.c.

−𝑥1 + 𝑥2 ≤ 1−𝑥1 + 2𝑥2 ≤ 3

𝑥1 − 2𝑥2 ≤ 1𝑥10 , 𝑥2 ≥ 0

−𝛻𝑧 =12

Page 59: Programmation Linéaire - ENSIIE

Déplacement maximum en restant dans le domaine

59

On peut pousser la droite tant que l’on veutsans quitter l’ensemble des solutions réalisablesOptimum non borné = -

32

3

2

x1

x2

0

1

1

min 𝑧 = −𝑥1 − 2𝑥2

s.c.

−𝑥1 + 𝑥2 ≤ 1−𝑥1 + 2𝑥2 ≤ 3

𝑥1 − 2𝑥2 ≤ 1𝑥10 , 𝑥2 ≥ 0

Page 60: Programmation Linéaire - ENSIIE

Appliquons l’algorithme du simplexe

60

min 𝑧 = −𝑥1 − 2𝑥2

s.c.

−𝑥1 + 𝑥2 + 𝑥3 = 1−𝑥1 + 2𝑥2 + 𝑥4 = 3𝑥1 − 2𝑥2 + 𝑥5 = 1

𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑥5 ≥ 0

Mise sous forme standard: variables d’écart x3, x4, x5 et =

Page 61: Programmation Linéaire - ENSIIE

Tableau initial : base x3, x4, x5

61

Base x1 x2 x3 x4 x5

x3 -1 1 1 0 0 = 1

x4 -1 2 0 1 0 = 3

x5 1 -2 0 0 1 = 1

-1 -2 0 0 0 = 0 + z

x2 va rentrer en base Ratios du second membre sur les coefficients>0 de la col. x2 (en zone bleue)

min 1

1,

3

2= 1 correspond à x3

x3 va sortir de base

Page 62: Programmation Linéaire - ENSIIE

Tableau suivant : base x2, x4, x5

62

Base x1 x2 x3 x4 x5

x2 -1 1 1 0 0 = 1

x4 1 0 -2 1 0 = 1

x5 -1 0 2 0 1 = 3

-3 0 2 0 0 = 2 + z

x1 va rentrer en base Ratios du second membre sur les coefficients>0 de la col. x1 (en zone bleue)

min 1

1= 1 correspond à x4

x4 va sortir de base

Page 63: Programmation Linéaire - ENSIIE

Tableau suivant : base x2, x1, x5

63

Base x1 x2 x3 x4 x5

x2 0 1 -1 1 0 = 2

x1 1 0 -2 1 0 = 1

x5 0 0 0 1 1 = 4

0 0 -4 3 0 = 5 + z

x3 va rentrer en base Dans la colonne x3 (zone bleue) tous les coefficients 0 : -1 , -2 , 0 x3 peut augmenter indéfinimentOptimum non borné

Page 64: Programmation Linéaire - ENSIIE

Les deux conditions d’arrêt de l’algorithme du simplexe

• Problème de minimisation1. Coûts réduits 0 STOP optimum trouvé

2. Une variable xi de coût réduit <0 et telle que les coefficients dans la colonne xi sont 0 STOP optimum non borné -

• Problème de maximisation1. Coûts réduits 0 STOP optimum trouvé

2. Une variable xi de coût réduit >0 et telle que les coefficients dans la colonne xi sont 0 STOP optimum non borné +

64

Page 65: Programmation Linéaire - ENSIIE

Méthodes des 2 phases Trouver une base initiale et résoudre le problème

65

Page 66: Programmation Linéaire - ENSIIE

Base initiale

66

Jusqu’à maintenant, la base initiale était donnée par les variables d’écart.Pas toujours possible.

min 𝑧 = −𝑥1 − 2𝑥2

s.c.

2𝑥1 + 𝑥2 ≥ 2𝑥1 + 2𝑥2 ≥ 2𝑥1 + 𝑥2 ≤ 3𝑥1, 𝑥2 ≥ 0

Ajout variables d’écart

2𝑥1 + 𝑥2 − 𝑥3 = 2𝑥1 + 2𝑥2 − 𝑥4 = 2𝑥1 + 𝑥2 + 𝑥5 = 3

𝑥1, 𝑥2 , 𝑥3, 𝑥4, 𝑥5 ≥ 0

Base x3 , x4 , x5 . Sol. de base pas réalisable : x3=-2, x4=-2, x5=3, x1=x2=0car 2 variables <0

Page 67: Programmation Linéaire - ENSIIE

Recherche d’une base réalisable: résolution du problème auxiliaire

67

- On ajoute des variables artificielles sur les contraintes où c’est nécessaire c’est-à-dire sur les contraintes où les var. d’écart sont précédées du signe –- On minimise ensuite la somme des variables artificielles afin de les rendre nulles

min 𝑧′ = 𝑎1 + 𝑎2

s.c.

2𝑥1 + 𝑥2 − 𝑥3 + 𝑎1 = 2𝑥1 + 2𝑥2 − 𝑥4 + 𝑎2 = 2𝑥1 + 𝑥2 + 𝑥5 = 3

𝑥1, 𝑥2 , 𝑥3, 𝑥4, 𝑥5, 𝑎1, 𝑎2 ≥ 0

On a la base a1, a2, x5. Sol. de base réalisable a1=2, a2=2, x5=3, x1=x2=x3=x4=0

On résout le problème avec cette base de départ. Si on trouve a1=a2=0 (hors-base) alors on a une base réalisable formée par 3 variables du problème de départ.

Page 68: Programmation Linéaire - ENSIIE

Méthode des 2 phases

• Phase 1– Résolution du problème auxiliaire

– Si les variables artificielles se sont annulées

Alors on a une base de départ pour le problème initial, aller en phase 2

Sinon le problème initial n’a pas de solution réalisable (domaine vide) STOP

• Phase 2– Résoudre le problème initial en partant de la base

trouvée en phase 1

68

Page 69: Programmation Linéaire - ENSIIE

Phase 1: tableau initial

69

Base x1 x2 x3 x4 x5 a1 a2

a1 2 1 -1 0 0 1 0 = 2

a2 1 2 0 -1 0 0 1 = 2

x5 1 1 0 0 1 0 0 = 3

-3 -3 1 1 0 0 0 = -4 + z’

Il faut exprimer 𝑧′ = 𝑎1 + 𝑎2 en fonction des variables hors-baseOn remplace a1 et a2 par leur expression en fonction des variables x1, x2, x3, x4donnée dans les deux premières ligneOn obtient la ligne verte

Page 70: Programmation Linéaire - ENSIIE

Phase 1-Tableau initial : base a1, a2, x5

70

Base x1 x2 x3 x4 x5 a1 a2

a1 2 1 -1 0 0 1 0 = 2

a2 1 2 0 -1 0 0 1 = 2

x5 1 1 0 0 1 0 0 = 3

-3 -3 1 1 0 0 0 = -4 + z’

x1 va rentrer en base Ratios du second membre sur les coefficients>0 de la col. x1 (en zone bleue)

min 2

2,

2

1,

3

1= 1 correspond à a1

a1 va sortir de base

Page 71: Programmation Linéaire - ENSIIE

Phase 1-Tableau suivant : base x1, a2, x5

71

Base x1 x2 x3 x4 x5 a2

x1 1 ½ -½ 0 0 0 = 1

a2 0 3/2 ½ -1 0 1 = 1

x5 0 ½ ½ 0 1 0 = 2

0 -3/2 -½ 1 0 0 = -1 + z’

x2 va rentrer en base Ratios du second membre sur les coefficients>0 de la col. x2 (en zone bleue)

min 1

1/2,

1

3/2,

2

1/2=

2

3correspond à a2

a2 va sortir de base

Page 72: Programmation Linéaire - ENSIIE

Phase 1-Tableau final : base x1, x2, x5

72

Base x1 x2 x3 x4 x5

x1 1 0 -2/31/3 0 = 2/3

x2 0 1 1/3 -2/3 0 = 2/3

x5 0 0 1/31/3 1 = 5/3

0 0 0 0 0 = 0 + z’

Les variables artificielles sont hors-base On a maintenant une base pour le problème initial

Page 73: Programmation Linéaire - ENSIIE

Phase 2: tableau initial

73

Base x1 x2 x3 x4 x5

x1 1 0 -2/31/3 0 = 2/3

x2 0 1 1/3 -2/3 0 = 2/3

x5 0 0 1/31/3 1 = 5/3

0 0 0 -1 0 = 2 + z

Il faut exprimer 𝑧 = −𝑥1 − 2𝑥2 en fonction des variables hors-base x3, x4 On remplace x1 et x2 par leurs expressions en fonction de x3, x4qui sont données en ligne 1 et 2 du tableauOn obtient la ligne verte

Page 74: Programmation Linéaire - ENSIIE

Phase 2-Tableau initial : base x1, x2, x5

74

Base x1 x2 x3 x4 x5

x1 1 0 -2/31/3 0 = 2/3

x2 0 1 1/3 -2/3 0 = 2/3

x5 0 0 1/31/3 1 = 5/3

0 0 0 -1 0 = 2 + z

x4 va rentrer en base Ratios du second membre sur les coefficients>0 de la col. x4 (en zone bleue)

min 2/3

1/3,

5/3

1/3= 2 correspond à x1

x1 va sortir de base

Page 75: Programmation Linéaire - ENSIIE

Phase 2-Tableau suivant : base x4, x2, x5

75

Base x1 x2 x3 x4 x5

x4 3 0 -2 1 0 = 2

x2 2 1 -1 0 0 = 2

x5 -1 0 1 0 1 = 1

3 0 -2 0 0 = 4 + z

x3 va rentrer en base Ratios du second membre sur les coefficients>0 de la col. x3 (en zone bleue)

min 1

1= 1 correspond à x5

x5 va sortir de base

Page 76: Programmation Linéaire - ENSIIE

Phase 2-Tableau final : base x4, x2, x3

76

Base x1 x2 x3 x4 x5

x4 1 0 0 1 2 = 4

x2 1 1 0 0 1 = 3

x3 -1 0 1 0 1 = 1

1 0 0 0 2 = 6 + z

Tous les coûts réduits 0 (ligne verte)STOPLa solution se lit dans le second membre pour les var. de baseLes var. hors-base sont nulles

La solution est x4=4, x2=3, x3=1, x1=x5=0

Page 77: Programmation Linéaire - ENSIIE

Utilisation du « solveur » Excel

77

Page 78: Programmation Linéaire - ENSIIE

Installation du solveur

• Cliquer sur l’onglet Fichier

• Cliquer sur Options (une fenêtre va s’ouvrir)

• Cliquer sur Compléments

• Cliquer sur Complément Solveur à droite (il va devenir bleu)

• Cliquer sur OK en bas à droite

78

Page 79: Programmation Linéaire - ENSIIE

Définition d’un programme linéaire

• On définit dans une feuille Excel

– Une case par variable

– Une case pour l’objectif z

– Une case pour le membre gauche de chaque contrainte

– Une case pour le membre droit de chaque contrainte

79

Page 80: Programmation Linéaire - ENSIIE

80

Ici on voit la définition de l’objectif z

Page 81: Programmation Linéaire - ENSIIE

81

Ici on voit la définition du membre gauche de la contrainte 3

Page 82: Programmation Linéaire - ENSIIE

Accéder au solveur

• Cliquer sur l’onglet Données

• Il apparait en haut à droite Solveur

• Cliquer sur Solveur

• Un menu s’ouvre pour lui indiquer où se trouve dans la feuille Excel

– L’objectif, si on le maximise ou minimise

– Les variables

– Les contraintes , le sens des contraintes

82

Page 83: Programmation Linéaire - ENSIIE

83

On clique sur solveur et on renseigne où sont l’objectif, les variables, membres gauche et droit des contraintes , le sens des contraintes, si on maximise ou minimise

Choix variables >=0 ou pas et choix méthode Simplex PLOn appuie sur résoudre

Page 84: Programmation Linéaire - ENSIIE

Conclusion

• PL modèle de nombreux problèmes: économie, production, …

• Résolution efficace par l’algorithme du simplexe et la méthode des tableaux

• D’autres algorithmes existent : points intérieurs, méthodes des ellipsoïdes

• Il existe des « solveurs » libres ou payants• PLNE (nombres entiers) problème discret résolu

par procédures arborescentes (B&B) mais la PL est utilisée, et donc le simplexe, dans ces procédures

84

Page 85: Programmation Linéaire - ENSIIE

Annexes

• Démonstration de la validité de l’algorithme du simplexe en utilisant les conditions KKT

85

Page 86: Programmation Linéaire - ENSIIE

Conditions de Karush-Kuhn-Tucker

86

Soit le programme mathématique suivantmin 𝑓(𝑥)

s.c. ൝𝑔𝑖 𝑥 ≤ 0 𝑖 ∈ 𝐼

ℎ𝑗 𝑥 = 0 𝑗 ∈ 𝐽

Avec 𝐼 ensemble (fini) d’indices des contraintes d’inégalitéAvec 𝐽 ensemble (fini) d’indices des contraintes d’égalité

𝑓, 𝑔𝑖 𝑖 ∈ 𝐼, ℎ𝑗 𝑗 ∈ 𝐽 , fonctions de classe C1

Conditions nécessaires d’optimalité (Karush-Khun-Tucker)Si x* « qualifié » est un minimiseur local alors il existe 𝑖 ≥ 0 𝑖 ∈ 𝐼 tels que

𝛻𝑓 𝑥∗ +

𝑖∈𝐼

𝑖𝛻𝑔𝑖 𝑥∗ +

𝑗∈𝐽

𝜇𝑗𝛻ℎ𝑗 𝑥∗ = 0 (𝑐1)

𝑖𝑔𝑖 𝑥∗ = 0 𝑖 ∈ 𝐼 (𝑐2)

(c1) est la généralisation de f(x)=0 (f désigne le gradient de f)(c2) sont les conditions de complémentarité : une contrainte non saturée gi(x)<0 i=0i iI j jJ sont appelés « multiplicateurs de Lagrange »

Page 87: Programmation Linéaire - ENSIIE

Conditions nécessairesqualification des solutions de base réalisables non-dégénérées

87

Soit une solution de base 𝑥∗ =𝑥𝐵

𝑥𝑁∗ = 𝐵−1𝑏

0t.q. B-1b>0 (non-dégénérée)

Alors x* est qualifié : il vérifie la qualification de l’indépendance linéaire.

DémonstrationConsidérons les contraintes saturées.Parmi les contraintes d’inégalité x0 seules celles relatives aux variables hors-base sont saturées x*N=0 car x*B>0 .Ecrivons la matrice des contraintes saturées en mettant à gauche les colonnes relativesaux variables de base et à gauche les colonnes relatives aux variables hors-base

𝐵 𝑁0 𝐼

Cette matrice est de rang m car B et l’identité I sont inversibles.Et les lignes sont linéairement indépendantes.

Page 88: Programmation Linéaire - ENSIIE

Conditions nécessaires

88

Théorème 1Soit une base B telle que B-1b>0 (non dégénérée).

Si la solution de base 𝑥∗ =𝑥𝐵

𝑥𝑁∗ = 𝐵−1𝑏

0est optimale alors les coûts réduits

𝑐𝑁 − 𝑐𝐵𝐵−1𝑁 sont ≥ 0

Démonstrationx* est qualifié (cf page précédente) donc les conditions KKT sont nécessaires.Elles s’écrivent dans le cas de notre PL:il existe ≥0 associé aux contraintes -x≤0 et associé aux contraintes b-Ax=0 tels quec-A+=0 (cPL1)x*=0 (cPL2)B associé aux contraintes -xB ≤ 0 est nécessairement nul car x*B= B-1b > 0Les conditions (cPL1) sur les indices de variables en base donne:cB - B - B = 0 cB = B = cBB-1

Les conditions (cPL1) sur les indices de variables en hors-base donne:cN -N - N = 0 cN - cBB-1 N - N = 0 cN - cBB-1 N = N ≥ 0

Page 89: Programmation Linéaire - ENSIIE

Conditions de Karush-Kuhn-Tucker

89

Conditions suffisantes d’optimalité

Les conditions de KKT (c1) et (c2) sont des conditions suffisantes d’optimalité globaledans le cas de programme convexe où f, gi iI sont convexes et hj jJ affines

C’est-à-dire qu’un point x* qui vérifie (c1) et (c2) est optimum global dans le cas convexe

Vérifier (c1) et (c2) c’est savoir exhiber les multiplicateurs , qui satisfont (c1) et (c2) avec x*

La programmation linéaire est un programme mathématique convexe

Page 90: Programmation Linéaire - ENSIIE

90

Théorème 2Soit une base B réalisable (B-1 b≥0) avec coûts réduits cN - cB B-1 N ≥0Alors le point défini par xB=B-1 b et xN=0 est optimum.

DémonstrationOn utilise les conditions de Kuhn-Tucker-Tucker.c-A-=0 (1)x=0 (2)

Avec ≷0 associé aux contraintes b-Ax=0 et ≥0 associé aux contraintes -x≤0

En prenant =cBB-1 et = c-A = c - cBB-1A, (1) est vérifié et on a • Pour les colonnes hors-base : N = cN - cBB-1N ≥0• Pour les colonnes en base : B = cB - cBB-1B = 0Donc les signes de sont respectés (≥0)

De plus 𝑥 = 𝐵 𝑁𝑥𝐵

𝑥𝑁= 0 𝑁

𝑥𝐵

0= 0

Donc les conditions de complémentarité (2) sont satisfaites

Donc x satisfait les conditions de KKT. Comme on a un problème linéaire donc convexe, les conditions de KKT sont des conditions suffisantes d’optimalité globale.

Conditions suffisantes