You are on page 1of 103

Cours 4: Programmation lin´ eaire

• Position du probl` eme • Algorithme du simplexe g´ en´ erique • Dualit´ e. • D´ eg´ en´ erescence et terminaison de l’algorithme

1-1

Gilles Schaeffer

INF-550-4: Programmation lin´ eaire

Cours 4: Programmation lin´ eaire
• Position du probl` eme • Algorithme du simplexe g´ en´ erique • Dualit´ e. • D´ eg´ en´ erescence et terminaison de l’algorithme

2-1

Gilles Schaeffer

INF-550-4: Programmation lin´ eaire

Un probl` eme de programmation lin´ eaire
Donn´ ee: Une matrice r´ eelle A = (ai,j ) de taille m × n, un vecteur b = (b1 , . . . , bm ) de taille m, un vecteur c = (c1 , . . . , cn ) de taille n. Probl` eme: Trouver un point x = (x1 , . . . , xn ) qui • satisfait les m contraintes ai,1 x1 + . . . + ai,n xn ≤ bi , • et maximise le produit c · x = c1 x1 + . . . + cn xn .

3-1

Gilles Schaeffer

INF-550-4: Programmation lin´ eaire

+ cn xn . xn ) qui • satisfait les m contraintes ai. bm ) de taille m. • et maximise le produit c · x = c1 x1 + .Un probl` eme de programmation lin´ eaire Donn´ ee: Une matrice r´ eelle A = (ai. cn ) de taille n.1 x1 + . Probl` eme: Trouver un point x = (x1 . Reformulation matricielle: on cherche max(c · x | Ax ≤ b). . .n xn ≤ bi . . . . . . . .j ) de taille m × n. . 3-2 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . un vecteur b = (b1 . + ai. . . . . . . un vecteur c = (c1 .

• et maximise le produit c · x = c1 x1 + . . cn ) de taille n. .Un probl` eme de programmation lin´ eaire Donn´ ee: Une matrice r´ eelle A = (ai. on peut donc mod´ eliser des contraintes ≥ ou = et chercher min au lieu de max. . . .n xn ≤ bi . . . . Remarque: Les ai.j . xn ) qui • satisfait les m contraintes ai. + cn xn . + ai. Probl` eme: Trouver un point x = (x1 . bi et ci peuvent ˆ etre n´ egatifs. . . . . Reformulation matricielle: on cherche max(c · x | Ax ≤ b). un vecteur b = (b1 . . un vecteur c = (c1 .1 x1 + . 3-3 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .j ) de taille m × n. bm ) de taille m. . . .

80 roses.Un exemple bateau: le fleuriste Donn´ ee. 20 jonquilles: 4 euros • 10 lys. En stock: 50 lys. 20 roses. Composition des bouquets au catalogue: • 10 lys. 80 jonquilles. 10 jonquilles: 5 euros 4-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . 10 roses.

20 roses. 80 roses. Composition des bouquets au catalogue: • 10 lys.Un exemple bateau: le fleuriste Donn´ ee. 10 jonquilles: 5 euros Probl` eme Quels bouquets pr´ eparer si on est assur´ e de tout vendre ? 4-2 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . 10 roses. 80 jonquilles. En stock: 50 lys. 20 jonquilles: 4 euros • 10 lys.

10 roses. 20 roses. 80 jonquilles. En stock: 50 lys. 20 jonquilles: 4 euros x bouquets • 10 lys. 80 roses. Composition des bouquets au catalogue: • 10 lys. 10 jonquilles: 5 euros y bouquets Probl` eme Quels bouquets pr´ eparer si on est assur´ e de tout vendre ? 4-3 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .Un exemple bateau: le fleuriste Donn´ ee.

Composition des bouquets au catalogue: • 10 lys. 80 jonquilles. 80 roses. 10 roses. 20 jonquilles: 4 euros x bouquets • 10 lys.Un exemple bateau: le fleuriste Donn´ ee. 20 roses. En stock: 50 lys. 10 jonquilles: 5 euros y bouquets Probl` eme Quels bouquets pr´ eparer si on est assur´ e de tout vendre ? Contraintes: sur les lys: 10x + 10y ≤ 50 sur les roses: 10x + 20y ≤ 80 sur les jonquilles: 20x + 10y ≤ 80 4-4 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .

10 jonquilles: 5 euros y bouquets Probl` eme Quels bouquets pr´ eparer si on est assur´ e de tout vendre ? Contraintes: sur les lys: 10x + 10y ≤ 50 sur les roses: 10x + 20y ≤ 80 sur les jonquilles: 20x + 10y ≤ 80 x≥0 y≥0 4-5 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . En stock: 50 lys. 20 roses. 80 jonquilles. 10 roses. Composition des bouquets au catalogue: • 10 lys.Un exemple bateau: le fleuriste Donn´ ee. 20 jonquilles: 4 euros x bouquets • 10 lys. 80 roses.

Un exemple bateau: le fleuriste
Donn´ ee. En stock: 50 lys, 80 roses, 80 jonquilles. Composition des bouquets au catalogue: • 10 lys, 10 roses, 20 jonquilles: 4 euros

x bouquets

• 10 lys, 20 roses, 10 jonquilles: 5 euros y bouquets Probl` eme Quels bouquets pr´ eparer si on est assur´ e de tout vendre ? Contraintes: sur les lys: 10x + 10y ≤ 50 sur les roses: 10x + 20y ≤ 80 sur les jonquilles: 20x + 10y ≤ 80 x≥0 y≥0 Fonction ´ economique ` a maximiser: max(4x + 5y ).

4-6

Gilles Schaeffer

INF-550-4: Programmation lin´ eaire

Un exemple bateau: le fleuriste
Donn´ ee. En stock: 50 lys, 80 roses, 80 jonquilles. Composition des bouquets au catalogue: • 10 lys, 10 roses, 20 jonquilles: 4 euros

x bouquets

• 10 lys, 20 roses, 10 jonquilles: 5 euros y bouquets Probl` eme Quels bouquets pr´ eparer si on est assur´ e de tout vendre ? y Contraintes: sur les lys: 10x + 10y ≤ 50 4 3 sur les roses: 10x + 20y ≤ 80 2 1 sur les jonquilles: 20x + 10y ≤ 80 0 x 0 1 2 3 4 x≥0 y≥0 Fonction ´ economique ` a maximiser: max(4x + 5y ).

4-7

Gilles Schaeffer

INF-550-4: Programmation lin´ eaire

Un exemple bateau: le fleuriste
Donn´ ee. En stock: 50 lys, 80 roses, 80 jonquilles. Composition des bouquets au catalogue: • 10 lys, 10 roses, 20 jonquilles: 4 euros

x bouquets

• 10 lys, 20 roses, 10 jonquilles: 5 euros y bouquets Probl` eme Quels bouquets pr´ eparer si on est assur´ e de tout vendre ? y Contraintes: sur les lys: 10x + 10y ≤ 50 4 20 3 sur les roses: 10x + 20y ≤ 80 23 2 22 1 sur les jonquilles: 20x + 10y ≤ 80 16 0 x 0 1 2 3 4 x≥0 y≥0 Fonction ´ economique ` a maximiser: max(4x + 5y ).

4-8

Gilles Schaeffer

INF-550-4: Programmation lin´ eaire

20 jonquilles: 4 euros x bouquets • 10 lys. 80 roses. En stock: 50 lys. 10 roses. 4-9 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .Un exemple bateau: le fleuriste Donn´ ee. Composition des bouquets au catalogue: • 10 lys. 20 roses. 10 jonquilles: 5 euros y bouquets Probl` eme Quels bouquets pr´ eparer si on est assur´ e de tout vendre ? y Contraintes: sur les lys: 10x + 10y ≤ 50 4 20 3 sur les roses: 10x + 20y ≤ 80 23 c 2 22 1 sur les jonquilles: 20x + 10y ≤ 80 16 0 x 0 1 2 3 4 x≥0 y≥0 Fonction ´ economique ` a maximiser: max(4x + 5y ). 80 jonquilles.

10 jonquilles: 5 euros y bouquets Probl` eme Quels bouquets pr´ eparer si on est assur´ e de tout vendre ? y Contraintes: sur les lys: 10x + 10y ≤ 50 4 20 3 sur les roses: 10x + 20y ≤ 80 23 c 2 22 1 sur les jonquilles: 20x + 10y ≤ 80 16 0 x 0 1 2 3 4 x≥0 y≥0 Fonction ´ economique ` a maximiser: max(4x + 5y ). b´ en´ efice. 20 jonquilles: 4 euros x bouquets • 10 lys. 20 roses.Un exemple bateau: le fleuriste Donn´ ee. En stock: 50 lys. Composition des bouquets au catalogue: • 10 lys. 10 roses. 80 jonquilles. Lorsqu’on a les contraintes xi ≥ 0 on peut toujours penser en termes ´ economiques: produits finis. mati` eres premi` eres. 4-10 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . 80 roses.

.Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. . bm ) de taille m. 5-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . cn ) de taille n. . . . un vecteur b = (b1 . .j ) de taille m × n. un vecteur c = (c1 . . .

. . .1 x1 + . . . + ai. . .1 . . . 5-2 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . . . un vecteur b = (b1 . bm ) de taille m.Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. .n ) . .n xn ≤ bi coupe l’espace en 2.j ) de taille m × n. Chaque ´ equation ai. . ai. un vecteur c = (c1 . le long d’un l’hyperplan normal au vecteur Li = (ai. cn ) de taille n.

. un vecteur b = (b1 .n ) . Chaque ´ equation ai. . cn ) de taille n. . . . .1 x1 + . ai. 5-3 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . un vecteur c = (c1 . le long d’un l’hyperplan normal au vecteur Li = (ai. .Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. .1 . . . .j ) de taille m × n.n xn ≤ bi coupe l’espace en 2. bm ) de taille m. . . . + ai.

cn ) de taille n. . Chaque ´ equation ai. . un vecteur c = (c1 . . . . un vecteur b = (b1 . .1 . . bm ) de taille m.j ) de taille m × n. + ai. .Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. .n xn ≤ bi coupe l’espace en 2. . . 5-4 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . .1 x1 + . . ai. le long d’un l’hyperplan normal au vecteur Li = (ai.n ) . .

n ) .1 x1 + . . . . Chaque ´ equation ai. + ai. le long d’un l’hyperplan normal au vecteur Li = (ai.Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. bm ) de taille m. ai. . . . .1 . . . cn ) de taille n. 5-5 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . un vecteur c = (c1 . . . . . un vecteur b = (b1 .n xn ≤ bi coupe l’espace en 2.j ) de taille m × n. .

un vecteur c = (c1 . cn ) de taille n.1 x1 + . Chaque ´ equation ai. le long d’un l’hyperplan normal au vecteur Li = (ai. . . . . . . un vecteur b = (b1 . . . .j ) de taille m × n. ai. .n ) . 5-6 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .1 .Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai.n xn ≤ bi coupe l’espace en 2. bm ) de taille m. . . + ai. . .

. .j ) de taille m × n. . un vecteur c = (c1 .Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. cn ) de taille n. le long d’un l’hyperplan normal au vecteur Li = (ai. Chaque ´ equation ai. . . . bm ) de taille m. . 5-7 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . + ai. . .n ) . . ai.n xn ≤ bi coupe l’espace en 2. . . .1 x1 + . un vecteur b = (b1 .1 . .

. . Chaque ´ equation ai.j ) de taille m × n. .1 x1 + . . ai. . . + ai.n xn ≤ bi coupe l’espace en 2. cn ) de taille n. . L’ensemble des x satisfaisant Ax ≤ b forme un polyh` edre convexe P 5-8 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . un vecteur b = (b1 . .1 .n ) . bm ) de taille m.Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. le long d’un l’hyperplan normal au vecteur Li = (ai. . . . . . . un vecteur c = (c1 .

. . L’ensemble des x satisfaisant Ax ≤ b forme un polyh` edre convexe P ´ eventuellement vide 5-9 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . . .n xn ≤ bi coupe l’espace en 2. . + ai.j ) de taille m × n. un vecteur b = (b1 . . . . Chaque ´ equation ai. . . le long d’un l’hyperplan normal au vecteur Li = (ai. . bm ) de taille m. .1 .Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. cn ) de taille n.1 x1 + . .n ) . un vecteur c = (c1 . ai. .

1 x1 + . . . . un vecteur c = (c1 . Chaque ´ equation ai. . . le long d’un l’hyperplan normal au vecteur Li = (ai. .j ) de taille m × n. . cn ) de taille n. . .Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. bm ) de taille m.n xn ≤ bi coupe l’espace en 2.n ) . + ai. .1 . . . un vecteur b = (b1 . L’ensemble des x satisfaisant Ax ≤ b forme un polyh` edre convexe P ´ eventuellement vide 5-10 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . . ai. .

. .j ) de taille m × n. . bm ) de taille m. L’ensemble des x satisfaisant Ax ≤ b forme un polyh` edre convexe P ´ eventuellement vide ou non born´ e 5-11 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .n ) .1 x1 + . ai. cn ) de taille n. . . . . . un vecteur b = (b1 . . . . Chaque ´ equation ai. . + ai.n xn ≤ bi coupe l’espace en 2. un vecteur c = (c1 .Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai.1 . . . le long d’un l’hyperplan normal au vecteur Li = (ai.

. L’ensemble des x satisfaisant Ax ≤ b forme un polyh` edre convexe P ´ eventuellement vide ou non born´ e Le vecteur c indique la direction dans laquelle on optimise: max(c · x | x ∈ P ) 5-12 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . . . le long d’un l’hyperplan normal au vecteur Li = (ai. un vecteur b = (b1 . . . . un vecteur c = (c1 .Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. .1 .j ) de taille m × n. . . + ai. Chaque ´ equation ai. . bm ) de taille m.1 x1 + . .n xn ≤ bi coupe l’espace en 2.n ) . . . ai. . cn ) de taille n.

Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. . . . . . ai. . un vecteur b = (b1 . L’ensemble des x satisfaisant Ax ≤ b forme un polyh` edre convexe P ´ eventuellement vide ou non born´ e Le vecteur c indique la direction dans laquelle on optimise: max(c · x | x ∈ P ) L’optimum peut ˆ etre ` a l’infini. .1 . 5-13 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .n ) . . . un vecteur c = (c1 . le long d’un l’hyperplan normal au vecteur Li = (ai. Chaque ´ equation ai. cn ) de taille n. + ai.j ) de taille m × n.1 x1 + . . . bm ) de taille m. . .n xn ≤ bi coupe l’espace en 2. .

un vecteur c = (c1 .n xn ≤ bi coupe l’espace en 2. . .j ) de taille m × n. . ai.1 . bm ) de taille m. . . . . le long d’un l’hyperplan normal au vecteur Li = (ai. cn ) de taille n. . . un vecteur b = (b1 .n ) . L’ensemble des x satisfaisant Ax ≤ b forme un polyh` edre convexe P ´ eventuellement vide ou non born´ e Le vecteur c indique la direction dans laquelle on optimise: max(c · x | x ∈ P ) L’optimum peut ˆ etre ` a l’infini.Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. . . Chaque ´ equation ai. 5-14 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . + ai. . .1 x1 + . .

n xn ≤ bi coupe l’espace en 2. + ai. cn ) de taille n. . . . Chaque ´ equation ai. un vecteur c = (c1 . . . il est atteint en un sommet. . C’est toujours le cas si P est born´ e. 5-15 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .n ) .j ) de taille m × n. le long d’un l’hyperplan normal au vecteur Li = (ai. . un vecteur b = (b1 .1 x1 + . S’il est fini. . ai.1 . . . . bm ) de taille m. .Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. . L’ensemble des x satisfaisant Ax ≤ b forme un polyh` edre convexe P ´ eventuellement vide ou non born´ e Le vecteur c indique la direction dans laquelle on optimise: max(c · x | x ∈ P ) L’optimum peut ˆ etre ` a l’infini. .

. . . le long d’un l’hyperplan normal au vecteur Li = (ai.1 x1 + . Chaque ´ equation ai. . bm ) de taille m. 5-16 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . . ai. . . . . un vecteur b = (b1 . . L’ensemble des x satisfaisant Ax ≤ b forme un polyh` edre convexe P ´ eventuellement vide ou non born´ e Le vecteur c indique la direction dans laquelle on optimise: max(c · x | x ∈ P ) Par convexit´ e. + ai.n xn ≤ bi coupe l’espace en 2. .n ) .Interpr´ etation g´ eom´ etrique Donn´ ee: Une matrice r´ eelle A = (ai. . cn ) de taille n. un vecteur c = (c1 . .1 . .j ) de taille m × n. un sommet est optimum si et seulement si il est meilleur que ses voisins.

• D´ eg´ en´ erescence et terminaison de l’algorithme 6-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .Cours 4: Programmation lin´ eaire • Position du probl` eme • Algorithme du simplexe g´ en´ erique • Dualit´ e.

premier essai • Initialiser x avec un sommet quelconque de P 7-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .Algorithme du simplexe.

Algorithme du simplexe. faire x := x . premier essai • Initialiser x avec un sommet quelconque de P • Tant qu’on a pas trouv´ e une direction infinie o` u c · x croit. et qu’il existe x voisin de x avec c · x > c · x. 7-2 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .

premier essai • Initialiser x avec un sommet quelconque de P • Tant qu’on a pas trouv´ e une direction infinie o` u c · x croit. faire x := x ..Algorithme du simplexe. 7-3 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .. Remarques: Glouton. et qu’il existe x voisin de x avec c · x > c · x.

et qu’il existe x voisin de x avec c · x > c · x. un voisin ? 7-4 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .. Remarques: Glouton.. faire x := x . Qu’est ce qu’un sommet. premier essai • Initialiser x avec un sommet quelconque de P • Tant qu’on a pas trouv´ e une direction infinie o` u c · x croit.Algorithme du simplexe.

faire x := x .. premier essai • Initialiser x avec un sommet quelconque de P • Tant qu’on a pas trouv´ e une direction infinie o` u c · x croit. un voisin ? Sommet = intersection de n hyperplans. Qu’est ce qu’un sommet.Algorithme du simplexe. Remarques: Glouton.. donn´ e par I = {indices des n ´ equations} 7-5 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . et qu’il existe x voisin de x avec c · x > c · x.

et qu’il existe x voisin de x avec c · x > c · x. Qu’est ce qu’un sommet. premier essai • Initialiser x avec un sommet quelconque de P • Tant qu’on a pas trouv´ e une direction infinie o` u c · x croit. Remarques: Glouton. donn´ e par I = {indices des n ´ equations} Voisin = partage n − 1 ´ equations 7-6 Gilles Schaeffer INF-550-4: Programmation lin´ eaire ..Algorithme du simplexe. un voisin ? Sommet = intersection de n hyperplans. faire x := x ..

Remarques: Glouton. un voisin ? Sommet = intersection de n hyperplans. premier essai • Initialiser x avec un sommet quelconque de P • Tant qu’on a pas trouv´ e une direction infinie o` u c · x croit.Algorithme du simplexe. Qu’est ce qu’un sommet.. faire x := x . et qu’il existe x voisin de x avec c · x > c · x.. donn´ e par I = {indices des n ´ equations} Voisin = partage n − 1 ´ equations n=2 ⇒ un sommet a n(m − n) voisins ? m=5 7-7 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .

premier essai • Initialiser x avec un sommet quelconque de P • Tant qu’on a pas trouv´ e une direction infinie o` u c · x croit. un voisin ? Sommet = intersection de n hyperplans.. faire x := x .. Remarques: Glouton. 7-8 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .Algorithme du simplexe. et qu’il existe x voisin de x avec c · x > c · x. Qu’est ce qu’un sommet. donn´ e par I = {indices des n ´ equations} Voisin = partage n − 1 ´ equations n=2 ⇒ un sommet a n(m − n) voisins ? m=5 On veut un voisin qui soit un sommet de P .

Algorithme du simplexe.. premier essai • Initialiser x avec un sommet quelconque de P • Tant qu’on a pas trouv´ e une direction infinie o` u c · x croit. faire x := x . donn´ e par I = {indices des n ´ equations} Voisin = partage n − 1 ´ equations n=2 ⇒ un sommet a n(m − n) voisins ? m=5 On veut un voisin qui soit un sommet de P . seul le premier voisin rencontr´ e est dans P : comparer les distances. et qu’il existe x voisin de x avec c · x > c · x. un voisin ? Sommet = intersection de n hyperplans.. Le long d’une arˆ ete (I \ {i}). Qu’est ce qu’un sommet. Remarques: Glouton. 7-9 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .

Si le polyh` edre n’est pas born´ e.D´ etecter les directions infinies o` u c · x croˆ ıt. c · x peut croˆ ıtre ind´ efiniment: Lemme: les 2 cas suivants s’excluent mutuellement: P • c s’´ ecrit c = i yi Li avec les yi ≥ 0 • il existe u tq c · u > 0 et Au ≤ 0 8-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .

Si le polyh` edre n’est pas born´ e. c · x peut croˆ ıtre ind´ efiniment: Lemme: les 2 cas suivants s’excluent mutuellement: P • c s’´ ecrit c = i yi Li avec les yi ≥ 0 • il existe u tq c · u > 0 et Au ≤ 0 8-2 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .D´ etecter les directions infinies o` u c · x croˆ ıt.

c · x peut croˆ ıtre ind´ efiniment: Lemme: les 2 cas suivants s’excluent mutuellement: P • c s’´ ecrit c = i yi Li avec les yi ≥ 0 ⇒ l’optimum est born´ e • il existe u tq c · u > 0 et Au ≤ 0 8-3 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .D´ etecter les directions infinies o` u c · x croˆ ıt. Si le polyh` edre n’est pas born´ e.

D´ etecter les directions infinies o` u c · x croˆ ıt. Si le polyh` edre n’est pas born´ e. c · x peut croˆ ıtre ind´ efiniment: Lemme: les 2 cas suivants s’excluent mutuellement: P • c s’´ ecrit c = i yi Li avec les yi ≥ 0 ⇒ l’optimum est born´ e • il existe u tq c · u > 0 et Au ≤ 0 8-4 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .

c · x peut croˆ ıtre ind´ efiniment: Lemme: les 2 cas suivants s’excluent mutuellement: P • c s’´ ecrit c = i yi Li avec les yi ≥ 0 ⇒ l’optimum est born´ e • il existe u tq c · u > 0 et Au ≤ 0 ⇒ ∞ 8-5 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . Si le polyh` edre n’est pas born´ e.D´ etecter les directions infinies o` u c · x croˆ ıt.

8-6 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . c · x peut croˆ ıtre ind´ efiniment: Lemme: les 2 cas suivants s’excluent mutuellement: P • c s’´ ecrit c = i yi Li avec les yi ≥ 0 ⇒ l’optimum est born´ e • il existe u tq c · u > 0 et Au ≤ 0 ⇒ ∞ En effet: c = yA ⇒ cu = yAu donc si y ≥ 0 et Au ≤ 0. Si le polyh` edre n’est pas born´ e.D´ etecter les directions infinies o` u c · x croˆ ıt. on a cu ≤ 0.

c · x peut croˆ ıtre ind´ efiniment: Lemme: les 2 cas suivants s’excluent mutuellement: P • c s’´ ecrit c = i yi Li avec les yi ≥ 0 ⇒ l’optimum est born´ e • il existe u tq c · u > 0 et Au ≤ 0 ⇒ ∞ En effet: c = yA ⇒ cu = yAu donc si y ≥ 0 et Au ≤ 0. on a trouv´ e une direction de croissance infinie et on peut s’arrˆ eter. 8-7 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .D´ etecter les directions infinies o` u c · x croˆ ıt. Si le polyh` edre n’est pas born´ e. Application: si au cours de l’ex´ ecution on rencontre une arˆ ete de direction u tq Au ≤ 0 et cu > 0. on a cu ≤ 0.

D´ etecter les directions infinies o` u c · x croˆ ıt. on a cu ≤ 0. Si au point xI . c · x peut croˆ ıtre ind´ efiniment: Lemme: les 2 cas suivants s’excluent mutuellement: P • c s’´ ecrit c = i yi Li avec les yi ≥ 0 ⇒ l’optimum est born´ e • il existe u tq c · u > 0 et Au ≤ 0 ⇒ ∞ En effet: c = yA ⇒ cu = yAu donc si y ≥ 0 et Au ≤ 0. Application: si au cours de l’ex´ ecution on rencontre une arˆ ete de direction u tq Au ≤ 0 et cu > 0. Si le polyh` edre n’est pas born´ e. 8-8 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . on a trouv´ e l’optimum. on a trouv´ e une direction de croissance infinie P et on peut s’arrˆ eter. c = i∈I yi Li avec yi ≥ 0.

solutions des n ´ equations (Lk x = bk )k∈I 9-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .Algorithme du simplexe. version g´ en´ erique Soit xI le sommet courant.

solutions des n ´ equations (Lk x = bk )k∈I P • Exprimer c dans la base {Lk }k∈I : c = k∈I yk Lk .Algorithme du simplexe. 9-2 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . version g´ en´ erique Soit xI le sommet courant.

on a trouv´ e l’optimum. solutions des n ´ equations (Lk x = bk )k∈I P • Exprimer c dans la base {Lk }k∈I : c = k∈I yk Lk . 9-3 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . version g´ en´ erique Soit xI le sommet courant.Algorithme du simplexe. Si yk ≥ 0 pour tout k ∈ I .

Algorithme du simplexe. version g´ en´ erique Soit xI le sommet courant. on a trouv´ e l’optimum. Soit u son vecteur directeur tq Li u = −1 (c’est une colonne de (AI )−1 ). • Sinon on choisit le plus petit i ∈ I tq yi < 0 et on consid` ere l’arˆ ete d´ efinie par les ´ equations de I = I \ {i}. 9-4 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . Si yk ≥ 0 pour tout k ∈ I . solutions des n ´ equations (Lk x = bk )k∈I P • Exprimer c dans la base {Lk }k∈I : c = k∈I yk Lk .

on a trouv´ e l’optimum. • Calculer la vitesse vers Lj quand on suit u: vj = Lj · u. 9-5 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . • Sinon on choisit le plus petit i ∈ I tq yi < 0 et on consid` ere l’arˆ ete d´ efinie par les ´ equations de I = I \ {i}. Soit u son vecteur directeur tq Li u = −1 (c’est une colonne de (AI )−1 ).Algorithme du simplexe. solutions des n ´ equations (Lk x = bk )k∈I P • Exprimer c dans la base {Lk }k∈I : c = k∈I yk Lk . Si yk ≥ 0 pour tout k ∈ I . version g´ en´ erique Soit xI le sommet courant.

on a trouv´ e l’optimum. Soit u son vecteur directeur tq Li u = −1 (c’est une colonne de (AI )−1 ). version g´ en´ erique Soit xI le sommet courant. • Sinon on choisit le plus petit i ∈ I tq yi < 0 et on consid` ere l’arˆ ete d´ efinie par les ´ equations de I = I \ {i}.Algorithme du simplexe. max = ∞. Si yk ≥ 0 pour tout k ∈ I . solutions des n ´ equations (Lk x = bk )k∈I P • Exprimer c dans la base {Lk }k∈I : c = k∈I yk Lk . • Calculer la vitesse vers Lj quand on suit u: vj = Lj · u. 9-6 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . si vj ≤ 0 on s’´ eloigne de l’hyperplan Lj : si ∀j .

Algorithme du simplexe. 9-7 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . C’est celui qui est le plus proche parmi ceux du bon cˆ ot´ e: b −L x donn´ e par un des j tels que vj > 0 qui minimisent j vjj I . prendre celui qui est dans P . on a trouv´ e l’optimum. si vj ≤ 0 on s’´ eloigne de l’hyperplan Lj : si ∀j . version g´ en´ erique Soit xI le sommet courant. Soit u son vecteur directeur tq Li u = −1 (c’est une colonne de (AI )−1 ). • Sinon on choisit le plus petit i ∈ I tq yi < 0 et on consid` ere l’arˆ ete d´ efinie par les ´ equations de I = I \ {i}. • Calculer la vitesse vers Lj quand on suit u: vj = Lj · u. solutions des n ´ equations (Lk x = bk )k∈I P • Exprimer c dans la base {Lk }k∈I : c = k∈I yk Lk . • Parmi les voisins sur l’arˆ ete. Si yk ≥ 0 pour tout k ∈ I . max = ∞.

version g´ en´ erique Soit xI le sommet courant. • Sinon on choisit le plus petit i ∈ I tq yi < 0 et on consid` ere l’arˆ ete d´ efinie par les ´ equations de I = I \ {i}. si vj ≤ 0 on s’´ eloigne de l’hyperplan Lj : si ∀j . • Parmi les voisins sur l’arˆ ete.Algorithme du simplexe. • Calculer la vitesse vers Lj quand on suit u: vj = Lj · u. Soit u son vecteur directeur tq Li u = −1 (c’est une colonne de (AI )−1 ). faire I = I \ {i} ∪ {j }. 9-8 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . on a trouv´ e l’optimum. solutions des n ´ equations (Lk x = bk )k∈I P • Exprimer c dans la base {Lk }k∈I : c = k∈I yk Lk . max = ∞. C’est celui qui est le plus proche parmi ceux du bon cˆ ot´ e: b −L x donn´ e par un des j tels que vj > 0 qui minimisent j vjj I . recalculer xI et reprendre. Si yk ≥ 0 pour tout k ∈ I . prendre celui qui est dans P .

yi < 0. alors: P • c = k∈I yk Lk . avec yi ≥ 0 pour k < i. 10-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . solutions des n ´ equations (Lk x = bk )k∈I Si on avance vers le sommet xJ . analyse Soit xI le sommet courant.Algorithme du simplexe. J = I \ {i} ∪ {j }.

solutions des n ´ equations (Lk x = bk )k∈I Si on avance vers le sommet xJ . yi < 0. J = I \ {i} ∪ {j }. Comparons l’objectif c · xI avec c · xJ : 10-2 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .Algorithme du simplexe. avec yi ≥ 0 pour k < i. alors: P • c = k∈I yk Lk . analyse Soit xI le sommet courant.

yi < 0. k = i et Li · u = −1. solutions des n ´ equations (Lk x = bk )k∈I Si on avance vers le sommet xJ .Algorithme du simplexe. J = I \ {i} ∪ {j }. Comparons l’objectif c · xI avec c · xJ : u = c · xI + c·u • c · xJ = c · xI + c · P or c · u = k∈I yk Lk · u = −yi > 0 puisque u est dans les hyperplans Lk . avec yi ≥ 0 pour k < i. bj −Lj xI vj bj −Lj xI vj 10-3 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . analyse Soit xI le sommet courant. alors: P • c = k∈I yk Lk .

. Comparons l’objectif c · xI avec c · xJ : u = c · xI + c·u • c · xJ = c · xI + c · P or c · u = k∈I yk Lk · u = −yi > 0 puisque u est dans les hyperplans Lk . avec yi ≥ 0 pour k < i. k = i et Li · u = −1. analyse Soit xI le sommet courant. J = I \ {i} ∪ {j }. solutions des n ´ equations (Lk x = bk )k∈I Si on avance vers le sommet xJ . yi < 0. ⇒ comme pr´ evu xJ am´ eliore l’objectif.Algorithme du simplexe. bj −Lj xI vj bj −Lj xI vj 10-4 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .. alors: P • c = k∈I yk Lk .

Algorithme du simplexe. yi < 0.. J = I \ {i} ∪ {j }. ⇒ comme pr´ evu xJ am´ eliore l’objectif. analyse Soit xI le sommet courant. sauf si bj − Lj x = 0 ! bj −Lj xI vj bj −Lj xI vj 10-5 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . Comparons l’objectif c · xI avec c · xJ : u = c · xI + c·u • c · xJ = c · xI + c · P or c · u = k∈I yk Lk · u = −yi > 0 puisque u est dans les hyperplans Lk .. solutions des n ´ equations (Lk x = bk )k∈I Si on avance vers le sommet xJ . alors: P • c = k∈I yk Lk . k = i et Li · u = −1. avec yi ≥ 0 pour k < i.

yi < 0. bj −Lj xI vj bj −Lj xI vj 10-6 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . k = i et Li · u = −1. certaines arˆ etes d´ eg´ en` erent et on peut avoir xJ = xI . Comparons l’objectif c · xI avec c · xJ : u = c · xI + c·u • c · xJ = c · xI + c · P or c · u = k∈I yk Lk · u = −yi > 0 puisque u est dans les hyperplans Lk .Algorithme du simplexe. alors: P • c = k∈I yk Lk . solutions des n ´ equations (Lk x = bk )k∈I Si on avance vers le sommet xJ . analyse Soit xI le sommet courant. l’algorithme risque de boucler. sauf si bj − Lj x = 0 ! Si plus de n hyperplans Lk passent par xI ... J = I \ {i} ∪ {j }. avec yi ≥ 0 pour k < i. ⇒ comme pr´ evu xJ am´ eliore l’objectif.

⇒ comme pr´ evu xJ am´ eliore l’objectif. l’algorithme risque de boucler. yi < 0.Algorithme du simplexe. Comparons l’objectif c · xI avec c · xJ : u = c · xI + c·u • c · xJ = c · xI + c · P or c · u = k∈I yk Lk · u = −yi > 0 puisque u est dans les hyperplans Lk . J = I \ {i} ∪ {j }. solutions des n ´ equations (Lk x = bk )k∈I Si on avance vers le sommet xJ . k = i et Li · u = −1. 10-7 bj −Lj xI vj bj −Lj xI vj Gilles Schaeffer INF-550-4: Programmation lin´ eaire . certaines arˆ etes d´ eg´ en` erent et on peut avoir xJ = xI . analyse Soit xI le sommet courant. alors: P • c = k∈I yk Lk .. avec yi ≥ 0 pour k < i. sauf si bj − Lj x = 0 ! Si plus de n hyperplans Lk passent par xI .. Une solution: perturber les bi pour ´ eliminer les d´ eg´ en´ erescences.

11-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .Algorithme du simplexe. initialisation Pour d´ emarrer l’algorithme il faut avoir un sommet de P .

On cherche: argmax(cx | Ax ≤ b) 11-2 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .Algorithme du simplexe. initialisation Pour d´ emarrer l’algorithme il faut avoir un sommet de P .

On cherche: argmax(cx | Ax ≤ b) On peut toujours poser de` variables double) `yx ´ i = yi − zi (le`nombre ´ ´ y et maximiser (c. −c) · z pour (A. −A) y ≤ b et ≥ 0.Algorithme du simplexe. z z 11-3 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . initialisation Pour d´ emarrer l’algorithme il faut avoir un sommet de P .

−c) · z pour (A. On cherche: argmax(cx | Ax ≤ b) On peut toujours poser de` variables double) `yx ´ i = yi − zi (le`nombre ´ ´ y et maximiser (c. z z On cherche donc: argmax(cx | Ax ≤ b.Algorithme du simplexe. initialisation Pour d´ emarrer l’algorithme il faut avoir un sommet de P . x ≥ 0) 11-4 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . −A) y ≤ b et ≥ 0.

. (0. 0) est notre sommet initial. −c) · z pour (A. 11-5 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . . . initialisation Pour d´ emarrer l’algorithme il faut avoir un sommet de P . z z On cherche donc: argmax(cx | Ax ≤ b. . On cherche: argmax(cx | Ax ≤ b) On peut toujours poser de` variables double) `yx ´ i = yi − zi (le`nombre ´ ´ y et maximiser (c.Algorithme du simplexe. −A) y ≤ b et ≥ 0. x ≥ 0) Si les bi sont positifs.

x ≥ 0) Si les bi sont positifs.Algorithme du simplexe. . . . −c) · z pour (A. 0) est notre sommet initial. z z On cherche donc: argmax(cx | Ax ≤ b. x ≥ 0} 11-6 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . −A) y ≤ b et ≥ 0. On cherche: argmax(cx | Ax ≤ b) On peut toujours poser de` variables double) `yx ´ i = yi − zi (le`nombre ´ ´ y et maximiser (c. (0. . Sinon on cherche un sommet de P = {x | Ax ≤ b. initialisation Pour d´ emarrer l’algorithme il faut avoir un sommet de P .

+ ai.1 x1 + . t) tq ai.n xn − t ≤ bi pour tout i. z z On cherche donc: argmax(cx | Ax ≤ b. 11-7 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . −c) · z pour (A. . On cherche: argmax(cx | Ax ≤ b) On peut toujours poser de` variables double) `yx ´ i = yi − zi (le`nombre ´ ´ y et maximiser (c. (0. un point qui minimise t. . Sinon on cherche un sommet de P = {x | Ax ≤ b. . . . .Algorithme du simplexe. . . −A) y ≤ b et ≥ 0. x ≥ 0} On fait cela en cherchant parmi les (x1 . initialisation Pour d´ emarrer l’algorithme il faut avoir un sommet de P . . 0) est notre sommet initial. x ≥ 0) Si les bi sont positifs. . xn .

. Sinon on cherche un sommet de P = {x | Ax ≤ b. . −c) · z pour (A. On connait un sommet initial (0. . −A) y ≤ b et ≥ 0. . . . .n xn − t ≤ bi pour tout i. 0) est notre sommet initial. On cherche: argmax(cx | Ax ≤ b) On peut toujours poser de` variables double) `yx ´ i = yi − zi (le`nombre ´ ´ y et maximiser (c. . 0. . T ) pour ce probl` eme lin´ eaire.1 x1 + . + ai.Algorithme du simplexe. x ≥ 0} On fait cela en cherchant parmi les (x1 . . xn . . z z On cherche donc: argmax(cx | Ax ≤ b. initialisation Pour d´ emarrer l’algorithme il faut avoir un sommet de P . . (0. t) tq ai. . x ≥ 0) Si les bi sont positifs. 11-8 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . un point qui minimise t. .

. . initialisation Pour d´ emarrer l’algorithme il faut avoir un sommet de P . .Algorithme du simplexe. . On cherche: argmax(cx | Ax ≤ b) On peut toujours poser de` variables double) `yx ´ i = yi − zi (le`nombre ´ ´ y et maximiser (c. Sinon on cherche un sommet de P = {x | Ax ≤ b. + ai. 0) est notre sommet initial.1 x1 + . . . (0. . . . . z z On cherche donc: argmax(cx | Ax ≤ b. On connait un sommet initial (0. . t) tq ai. xn . −A) y ≤ b et ≥ 0. un point qui minimise t. 11-9 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . T ) pour ce probl` eme lin´ eaire. . x ≥ 0) Si les bi sont positifs. Il existe (et on obtient) un sommet de P ssi t = 0 dans sa solution. x ≥ 0} On fait cela en cherchant parmi les (x1 . . −c) · z pour (A. 0.n xn − t ≤ bi pour tout i. .

• D´ eg´ en´ erescence et terminaison de l’algorithme 12-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .Cours 4: Programmation lin´ eaire • Position du probl` eme • Algorithme du simplexe g´ en´ erique • Dualit´ e.

x ≥ 0) (D) min(yb | yA ≥ c. y ≥ 0) admet une solution finie. Si l’un des 2 probl` emes suivant (P ) max(cx | Ax ≤ b. alors l’autre aussi et on a min(yb | yA ≥ c.Primal/dual et th´ eor` eme de dualit´ e Th´ eor` eme (cas in´ egalit´ es+positivit´ e). y ≥ 0) = max(cx | Ax ≤ b. x ≥ 0) 13-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .

y ≥ 0) = max(cx | Ax ≤ b.Primal/dual et th´ eor` eme de dualit´ e Th´ eor` eme (cas in´ egalit´ es+positivit´ e). alors l’autre aussi et on a min(yb | yA ≥ c. x ≥ 0) (D) min(yb | yA ≥ c. Primal max(4x + 5x ) 10x + 10x ≤ 50 10x + 20x ≤ 80 20x + 10x ≤ 80 x ≥ 0. x ≥ 0 13-2 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . Si l’un des 2 probl` emes suivant (P ) max(cx | Ax ≤ b. x ≥ 0) Interpr´ etation. Retour au fleuriste. y ≥ 0) admet une solution finie.

Primal/dual et th´ eor` eme de dualit´ e
Th´ eor` eme (cas in´ egalit´ es+positivit´ e). Si l’un des 2 probl` emes suivant (P ) max(cx | Ax ≤ b, x ≥ 0) (D) min(yb | yA ≥ c, y ≥ 0) admet une solution finie, alors l’autre aussi et on a min(yb | yA ≥ c, y ≥ 0) = max(cx | Ax ≤ b, x ≥ 0) Interpr´ etation. Retour au fleuriste. Primal × max(4x + 5x ) y1 10x + 10x ≤ 50 y2 10x + 20x ≤ 80 y3 20x + 10x ≤ 80 x ≥ 0, x ≥ 0
13-3

Gilles Schaeffer

INF-550-4: Programmation lin´ eaire

Primal/dual et th´ eor` eme de dualit´ e
Th´ eor` eme (cas in´ egalit´ es+positivit´ e). Si l’un des 2 probl` emes suivant (P ) max(cx | Ax ≤ b, x ≥ 0) (D) min(yb | yA ≥ c, y ≥ 0) admet une solution finie, alors l’autre aussi et on a min(yb | yA ≥ c, y ≥ 0) = max(cx | Ax ≤ b, x ≥ 0) Interpr´ etation. Retour au fleuriste. Primal × max(4x + 5x ) y1 10x + 10x ≤ 50 y2 10x + 20x ≤ 80 y3 20x + 10x ≤ 80 y1 ≥ 0, y2 ≥ 0, y3 ≥ 0. x ≥ 0, x ≥ 0


13-4

(10y1 + 10y2 + 20y3 )x + (10y1 + 20y2 + 10y3 )x ≤ 50y1 + 80y2 + 80y3 INF-550-4: Programmation lin´ eaire

Gilles Schaeffer

Primal/dual et th´ eor` eme de dualit´ e
Th´ eor` eme (cas in´ egalit´ es+positivit´ e). Si l’un des 2 probl` emes suivant (P ) max(cx | Ax ≤ b, x ≥ 0) (D) min(yb | yA ≥ c, y ≥ 0) admet une solution finie, alors l’autre aussi et on a min(yb | yA ≥ c, y ≥ 0) = max(cx | Ax ≤ b, x ≥ 0) Interpr´ etation. Retour au fleuriste. Primal × max(4x + 5x ) y1 10x + 10x ≤ 50 10y1 + 10y2 + 20y3 ≥ 4 y2 10x + 20x ≤ 80 10y1 + 20y2 + 10y3 ≥ 5 y3 20x + 10x ≤ 80 y1 ≥ 0, y2 ≥ 0, y3 ≥ 0. x ≥ 0, x ≥ 0

⇒ 4x + 5x
13-5

≤ (10y1 + 10y2 + 20y3 )x + (10y1 + 20y2 + 10y3 )x ≤ 50y1 + 80y2 + 80y3 INF-550-4: Programmation lin´ eaire

Gilles Schaeffer

y ≥ 0) admet une solution finie. x ≥ 0 ⇒ 4x + 5x 13-6 ≤ (10y1 + 10y2 + 20y3 )x + (10y1 + 20y2 + 10y3 )x ≤ 50y1 + 80y2 + 80y3 INF-550-4: Programmation lin´ eaire Gilles Schaeffer . y ≥ 0) = max(cx | Ax ≤ b. y3 ≥ 0. alors l’autre aussi et on a min(yb | yA ≥ c.Primal/dual et th´ eor` eme de dualit´ e Th´ eor` eme (cas in´ egalit´ es+positivit´ e). Si l’un des 2 probl` emes suivant (P ) max(cx | Ax ≤ b. Primal × max(4x + 5x ) min(50y1 + 80y2 + 80y3 ) y1 10x + 10x ≤ 50 10y1 + 10y2 + 20y3 ≥ 4 y2 10x + 20x ≤ 80 10y1 + 20y2 + 10y3 ≥ 5 y3 20x + 10x ≤ 80 y1 ≥ 0. x ≥ 0. Retour au fleuriste. y2 ≥ 0. x ≥ 0) (D) min(yb | yA ≥ c. x ≥ 0) Interpr´ etation.

Primal/dual et th´ eor` eme de dualit´ e Th´ eor` eme (cas in´ egalit´ es+positivit´ e). x ≥ 0 ⇒ 4x + 5x 13-7 ≤ (10y1 + 10y2 + 20y3 )x + (10y1 + 20y2 + 10y3 )x ≤ 50y1 + 80y2 + 80y3 INF-550-4: Programmation lin´ eaire Gilles Schaeffer . y3 ≥ 0. Retour au fleuriste. y ≥ 0) = max(cx | Ax ≤ b. Primal Dual × max(4x + 5x ) min(50y1 + 80y2 + 80y3 ) y1 10x + 10x ≤ 50 10y1 + 10y2 + 20y3 ≥ 4 y2 10x + 20x ≤ 80 10y1 + 20y2 + 10y3 ≥ 5 y3 20x + 10x ≤ 80 y1 ≥ 0. x ≥ 0) (D) min(yb | yA ≥ c. y2 ≥ 0. Si l’un des 2 probl` emes suivant (P ) max(cx | Ax ≤ b. x ≥ 0) Interpr´ etation. alors l’autre aussi et on a min(yb | yA ≥ c. x ≥ 0. y ≥ 0) admet une solution finie.

10y1 + 20y2 + 10y3 ≥ 5 y3 20x + 10x ≤ 80 y1 ≥ 0. y ≥ 0) = max(cx | Ax ≤ b. x ≥ 0) Interpr´ etation. x ≥ 0. y3 ≥ 0. Le th´ eor` eme dit Primal Dual × max(4x + 5x ) qu’on peut obtenir min(50y1 + 80y2 + 80y3 ) y1 10x + 10x ≤ 50 une borne optimale 10y1 + 10y2 + 20y3 ≥ 4 y2 10x + 20x ≤ 80 par multiplicateur. y2 ≥ 0. Si l’un des 2 probl` emes suivant (P ) max(cx | Ax ≤ b. x ≥ 0 ⇒ 4x + 5x 13-8 ≤ (10y1 + 10y2 + 20y3 )x + (10y1 + 20y2 + 10y3 )x ≤ 50y1 + 80y2 + 80y3 INF-550-4: Programmation lin´ eaire Gilles Schaeffer . x ≥ 0) (D) min(yb | yA ≥ c.Primal/dual et th´ eor` eme de dualit´ e Th´ eor` eme (cas in´ egalit´ es+positivit´ e). alors l’autre aussi et on a min(yb | yA ≥ c. y ≥ 0) admet une solution finie. Retour au fleuriste.

Primal/dual et th´ eor` eme de dualit´ e Th´ eor` eme (cas in´ egalit´ es+positivit´ e). Si l’un des 2 probl` emes suivant (P ) max(cx | Ax ≤ b. x ≥ 0. y3 ≥ 0. y ≥ 0) = max(cx | Ax ≤ b. x ≥ 0 augmente de ∆i yi . Retour au fleuriste. x ≥ 0) (D) min(yb | yA ≥ c. 10y1 + 20y2 + 10y3 ≥ 5 Si on augmente la y3 20x + 10x ≤ 80 denr´ ee i de ∆i . y ≥ 0) admet une solution finie. le gain y1 ≥ 0. y2 ≥ 0. x ≥ 0) Interpr´ etation. alors l’autre aussi et on a min(yb | yA ≥ c. ⇒ 4x + 5x 13-9 ≤ (10y1 + 10y2 + 20y3 )x + (10y1 + 20y2 + 10y3 )x ≤ 50y1 + 80y2 + 80y3 INF-550-4: Programmation lin´ eaire Gilles Schaeffer . Le th´ eor` eme dit Primal Dual × max(4x + 5x ) qu’on peut obtenir min(50y1 + 80y2 + 80y3 ) y1 10x + 10x ≤ 50 une borne optimale 10y1 + 10y2 + 20y3 ≥ 4 y2 10x + 20x ≤ 80 par multiplicateur.

. . Le th´ eor` eme s’applique aux paires: Primal Dual max(c1 x1 + . + cn xn ) min(b1 y1 + . . . cas g´ en´ eral. amj ym = cj pour j ∈ N xj ≥ 0 pour j ∈ P . amj ym ≥ cj pour j ∈ P ai1 x1 + . ain xn ≤ bi pour i ∈ I a1j y1 + . yi ≥ 0 pour i ∈ I .Primal/dual et th´ eor` eme de dualit´ e Primal / Dual. . . ain xn = bi pour i ∈ E a1j y1 + . . . + bm ym ) ai1 x1 + . . . . . o` u m = |I | + |E | et n = |P | + |N | 14-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .

Le th´ eor` eme s’applique aux paires: Primal Dual max(c1 x1 + . les ´ egalit´ es des variables quelconques (penser ` a l’interpr´ etation des variables duales comme multiplicateurs). amj ym = cj pour j ∈ N xj ≥ 0 pour j ∈ P . . . cas g´ en´ eral. amj ym ≥ cj pour j ∈ P ai1 x1 + . . . o` u m = |I | + |E | et n = |P | + |N | Les in´ egalit´ e donnent dans le dual des variables contraintes ` aˆ etre positives. . + cn xn ) min(b1 y1 + . . .Primal/dual et th´ eor` eme de dualit´ e Primal / Dual. yi ≥ 0 pour i ∈ I . . . ain xn ≤ bi pour i ∈ I a1j y1 + . . . 14-2 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . ain xn = bi pour i ∈ E a1j y1 + . . + bm ym ) ai1 x1 + .

. o` u m = |I | + |E | et n = |P | + |N | Les in´ egalit´ e donnent dans le dual des variables contraintes ` aˆ etre positives. . . . . . .Primal/dual et th´ eor` eme de dualit´ e Primal / Dual. . . Le th´ eor` eme s’applique aux paires: Primal Dual max(c1 x1 + . amj ym ≥ cj pour j ∈ P ai1 x1 + . yi ≥ 0 pour i ∈ I . En TD: le th´ eor` eme de dualit´ e ⇒ maxflow = mincut 14-3 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . cas g´ en´ eral. . + bm ym ) ai1 x1 + . . les ´ egalit´ es des variables quelconques (penser ` a l’interpr´ etation des variables duales comme multiplicateurs). + cn xn ) min(b1 y1 + . . ain xn = bi pour i ∈ E a1j y1 + . ain xn ≤ bi pour i ∈ I a1j y1 + . amj ym = cj pour j ∈ N xj ≥ 0 pour j ∈ P .

Cours 4: Programmation lin´ eaire • Position du probl` eme • Algorithme du simplexe g´ en´ erique • Dualit´ e. • D´ eg´ en´ erescence et terminaison de l’algorithme 15-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .

Il n’est pas forc´ ement acceptable de perturber. 16-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .D´ eg´ en´ erescence et risque de bouclage D´ eg´ en´ erescence: un sommet appartient ` a plus de n hyperplans.

3} . x{2.D´ eg´ en´ erescence et risque de bouclage D´ eg´ en´ erescence: un sommet appartient ` a plus de n hyperplans.4} .2} .4} .3} il y a x{1. 16-2 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . x{1. Il n’est pas forc´ ement acceptable de perturber. x{1. Parmi les voisins de x{2.

x{1.D´ eg´ en´ erescence et risque de bouclage D´ eg´ en´ erescence: un sommet appartient ` a plus de n hyperplans.3} . x{2.3} il y a 2 x{1. Il n’est pas forc´ ement acceptable de perturber.. 3 4 16-3 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . x{1.4} .4} . Ce sont mˆ eme ses plus proches voisins.. 1 Parmi les voisins de x{2.2} .

1 Parmi les voisins de x{2.D´ eg´ en´ erescence et risque de bouclage D´ eg´ en´ erescence: un sommet appartient ` a plus de n hyperplans. Ce sont mˆ eme ses plus proches voisins.3} il y a 2 x{1.3} .4} . 3 4 En dimension sup´ erieure il peut ˆ etre n´ ecessaire de changer plusieurs lignes pour trouver un vrai voisin dans P . x{1..2} . x{2..4} . Il peut y avoir un nombre exponentiel de faux voisins. Il n’est pas forc´ ement acceptable de perturber. x{1. 16-4 Gilles Schaeffer INF-550-4: Programmation lin´ eaire .

16-5 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . x{1.3} → x{1. Il peut y avoir un nombre exponentiel de faux voisins. 1 Parmi les voisins de x{2.. Ce sont mˆ eme ses plus proches voisins.3} → x{1.D´ eg´ en´ erescence et risque de bouclage D´ eg´ en´ erescence: un sommet appartient ` a plus de n hyperplans. x{1.2} → x{2.2} .4} . Notre algorithme du simplexe prend un voisin le plus proche: il faut bien le choisir pour ne pas risquer de boucler ind´ efiniment en changeant I sans changer xI : x{2. x{2. Il n’est pas forc´ ement acceptable de perturber.3} .3} il y a 2 x{1. 3 4 En dimension sup´ erieure il peut ˆ etre n´ ecessaire de changer plusieurs lignes pour trouver un vrai voisin dans P .3} .4} ..

Algorithme du simplexe. solutions des n ´ equations (Lk x = bk )k∈I P • Exprimer c dans la base {Lk }k∈I : c = k∈I yk Lk . c’est celui qui est le plus proche parmi ceux du bon cˆ ot´ e: b −L x le plus petit parmi les j tels que vj > 0 qui minimisent j vjj I . faire I = I \ {i} ∪ {j }. 17-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . max = ∞. si vj ≤ 0 on s’´ eloigne de l’hyperplan Lj : si ∀j . recalculer xI et reprendre. Si yk ≥ 0 pour tout k ∈ I . version finale Soit xI le sommet courant. prendre celui qui est dans P . on a trouv´ e l’optimum. • Sinon on choisit le plus petit i ∈ I tq yi < 0 et on consid` ere l’arˆ ete d´ efinie par les ´ equations de I = I \ {i}. • Parmi les voisins sur l’arˆ ete. Soit u son vecteur directeur tq Li u = −1 (c’est une colonne de (AI )−1 ). • Calculer la vitesse vers Lj quand on suit u: vj = Lj · u.

18-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . sans changer c · xI (c · xI croˆ ıt). preuve de terminaison Si l’algo boucle c’est qu’on est revenu au mˆ eme I . On observe l’´ evolution des indices pr´ esents dans I .Algorithme du simplexe.

I I 18-2 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . On observe l’´ evolution des indices pr´ esents dans I .Algorithme du simplexe. preuve de terminaison Si l’algo boucle c’est qu’on est revenu au mˆ eme I . sans changer c · xI (c · xI croˆ ıt).

18-3 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . preuve de terminaison Si l’algo boucle c’est qu’on est revenu au mˆ eme I . I et I les ensembles d’indices ` a des temps d’entr´ ee et de sortie de r. On observe l’´ evolution des indices pr´ esents dans I .Algorithme du simplexe. sans changer c · xI (c · xI croˆ ıt). inchang´ e r I I I I Soit r le plus grand indice qui est entre ou sort durant la boucle.

et yr < 0. avec yi ≥ 0 pour i < r. I et I les ensembles d’indices ` a des temps d’entr´ ee et de sortie de r. inchang´ e r I I I I Soit r le plus grand indice qui est entre ou sort durant la boucle. P Comme r sort de I : c = i∈I yi Li . preuve de terminaison Si l’algo boucle c’est qu’on est revenu au mˆ eme I .Algorithme du simplexe. On observe l’´ evolution des indices pr´ esents dans I . 18-4 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . sans changer c · xI (c · xI croˆ ıt).

ce qui est le cas pour j ∈ I \ I . 18-5 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . Lj u < 0 d` es que bj − Lj u = 0. On observe l’´ evolution des indices pr´ esents dans I . comme r entre dans I . on a pour j < r. Soit u la direction de l’arˆ ete s´ electionn´ ee lors du traitement de I : alors Li u = 0 pour i ∈ I \ {r} et. sans changer c · xI (c · xI croˆ ıt). preuve de terminaison Si l’algo boucle c’est qu’on est revenu au mˆ eme I . P Comme r sort de I : c = i∈I yi Li . I et I les ensembles d’indices ` a des temps d’entr´ ee et de sortie de r. avec yi ≥ 0 pour i < r. et yr < 0. inchang´ e r I I I I Soit r le plus grand indice qui est entre ou sort durant la boucle.Algorithme du simplexe.

sans changer c · xI (c · xI croˆ ıt). On observe l’´ evolution des indices pr´ esents dans I . Ceci contredit le fait que suivant le u choisi on am´ eliore l’objectif: (cu > 0). I et I les ensembles d’indices ` a des temps d’entr´ ee et de sortie de r. et yr < 0. inchang´ e r I I I I Soit r le plus grand indice qui est entre ou sort durant la boucle. i∈I yi Li u + yr Lr u < 0. Soit u la direction de l’arˆ ete s´ electionn´ ee lors du traitement de I : alors Li u = 0 pour i ∈ I \ {r} et. P P D’o` u cu = i∈I yi Li u = i<r. avec yi ≥ 0 pour i < r. on a pour j < r. preuve de terminaison Si l’algo boucle c’est qu’on est revenu au mˆ eme I . ce qui est le cas pour j ∈ I \ I .Algorithme du simplexe. 18-6 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . Lj u < 0 d` es que bj − Lj u = 0. comme r entre dans I . P Comme r sort de I : c = i∈I yi Li .

Mieux on peut montrer que si on perturbe al´ eatoirement des donn´ ees arbitraires... 19-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . et il existe des exemples pour lesquels le simplexe visite effectivement un nombre exponentiel de sommets. complexit´ e Puisque le nombre de voisins d’un sommet est n(m − 1) au plus. chaque ´ etape a un coˆ ut polynomial.. On peut montrer qu’en moyenne sur des probl` emes al´ eatoires l’algorithme est polynomial (Average case analysis). `m´ Le nombre de sommets peut ˆ etre exponentiel (jusqu’` a n ) en m et n.. (Worst case analysis).Algorithme du simplexe. l’algorithme reste polynomial (Smooth analysis). On constate que cela ne se produit quasiment jamais en pratique.

contrairement ` a ce qui se passe pour les probl` emes de flots. le probl` eme devient dur si on veut des solutions enti` eres.Programmation lin´ eaire.. algorithmes polynomiaux.. Attention toutefois: il y a des algorithmes polynomiaux si on cherche les optimaux ` a coordonn´ ees dans R. De fait il existe des algorithmes polynomiaux pour la programmation lin´ eaire: notamment les m´ ethodes de l’ellipsoide et du point int´ erieur. 20-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . On verra que. Le simplexe n’est pas polynomial mais presque.

21-1 .

Cours 4: Programmation lin´ eaire • Position du probl` eme • Algorithme du simplexe g´ en´ erique • Dualit´ e. 22-1 Gilles Schaeffer INF-550-4: Programmation lin´ eaire . .Il existe d’excellente boites noires pour r´ esoudre les LP.Mod´ elisation par LP (en PC). • D´ eg´ en´ erescence et terminaison de l’algorithme Retenir: . Thm Primal-Dual.