28
Programmation linéaire Université de Rennes 1 et INRIA Rennes Bretagne-Atlantique

Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

  • Upload
    vokiet

  • View
    221

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Programmation linéaire

Université de Rennes 1 et INRIA Rennes Bretagne-Atlantique

Page 2: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Historique

La programmation linéaire est dans les fondements de la rechercheopérationnelle (RO) ou aide à la décision : propose des modèles conceptuelspour analyser des situations complexes et permet aux décideurs de faire leschoix les plus efficaces.

1940 P. Blackett dirige 1re équipe de RO :prix Nobel de implantation optimalephysique (1948) de radars de surveillance

1939-45 L. Kantorovich programmation linéaire1947 G. Dantzig algorithme du simplexe

(le fondateur) " one of the top 10 algorithms of thecentury", CSE, 2 :1, 2000

2005 décès de Dantzig

Aujourd’hui : développement considérable grâce aux solveurs et langage demodélisation très performants AMPL, Gurobi, CPLEX(https://www.ampl.com).

2/28 2/28

Page 3: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Un exemple ordinaire

Une entreprise manufacture quatre produits qui lui apportent des profits de7,9,18 et 17 e respectivement. Pour se faire, elle utilise les trois ressourcesA,B,C dont elle dispose en stock 42,17,24 unités. Les ressourcesconsommées pour fabriquer une unité de chacun de ces produits sontdonnées dans le tableau ci-dessous. L’entreprise souhaite maximiser sonprofit.

produit 1 produit 2 produit 3 produit 4 stockressource A 2 4 5 7 42ressource B 1 1 2 2 17ressource C 1 2 3 3 24

bénéfice 7 9 18 17

3/28 3/28

Page 4: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Un exemple ordinaire

Notons xi la quantité cherchée du produit i .

produit 1 produit 2 produit 3 produit 4 stockressource A 2 4 5 7 42ressource B 1 1 2 2 17ressource C 1 2 3 3 24

bénéfice 7 9 18 17

Maximiser z = 7x1 + 9x2 + 18x3 + 17x4s. c. 2x1 + 4x2 + 5x3 + 7x4 ≤ 42

x1 + x2 + 2x3 + 2x4 ≤ 17x1 + 2x2 + 3x3 + 3x4 ≤ 24x1 , x2 , x3 , x4 ≥ 0

Un problème de programmation linéaire (PL) sous forme canonique.

4/28 4/28

Page 5: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Programmes linéaires (PL)

L’intérêt des programmes linéaires (PL) réside dans :

Ils modélisent convenalement un grand nombre de situations réelles.

L’existance des solveurs efficaces pour la résolution (IBM ILOG CPLEX, Gurobi,COIN, MINOS etc.).

L’existance des langages de modélisation comme "A Mathematical ProgrammingLanguage (AMPL)".

Chaque programme linéaire peut être décrit sous la forme :

Forme canonique d’un PL : Max c1x1 + · · ·+ cnxns. c. a11x1 + · · ·+ a1nxn ≤ b1

......

...am1x1 + · · ·+ amnxn ≤ bmx1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0

Un PL requiert toujours :

une fonction objectif (linéaire)

m+n contraintes (linéaires) du problème.

n variables xi , i = 1, . . . ,n

5/28 5/28

Page 6: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Un PL sous forme matricielle

Maximisern

∑j=1

cj xj

s. c.n

∑j=1

aij xj ≤ bj , i = 1, . . . ,m

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

oumax{cx | Ax ≤ b, x ≥ 0}

A =

a11 . . . a1n...

...am1 . . . amn

, x =

x1...

xn

, b =

b1...

bm

,

c = (c1 . . .cn)

c désigne le vecteur objectif,b – le vecteur membre droit,et Am×n – la matrice des contraintes.

6/28 6/28

Page 7: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Espace des solutions addmissibles

L’espace des solutions admissible/réalisables/faisables défini par lescontraintes linéaires est un polyèdre convexe P = {x | Ax ≤ b, x ≥ 0} ⊆ Rn.

P est un polyèdre convexe dans Rn (si x ∈ P, y ∈ P et 0≤ λ≤ 1 alorsλx +(1−λ)y ∈ P)

convexe non convexe

Résultat principal : L’optimum, s’il existe, est toujours atteint à un sommet dupolytope P.

7/28 7/28

Page 8: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Les sommets de P

Chacune des m+n contraintes définit un hyperplan dans Rn (ligne droitedans R2). Un sommet est l’intersection de n hyperplans. Il y a au plus Cn

n+msommets.

x1 + 3x2 ≤ 18x1 + x2 ≤ 8

2x1 + x2 ≤ 14x1 ≥ 0

x2 ≥ 0

(0,0) (7,0)

(8,0) (18,0)

(0,6)

(0,8)

(0,14)

(6,2)

(3,5) (4.8,4.4)

8/28 8/28

Page 9: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Approche naïve

Idée : On est sûr de trouver la solution optimale dans un sommet. Donc ilsuffit de parcourir tous les sommets et de prendre le meilleur.Génération d’un sommet : Choisir n parmi les m+n contraintes. Résoudre lesystème linéaire où les n contraintes choisies sont à égalité. Si le système aune solution et si cette solution satisfait les m contraintes restantes, cettesolution est un sommet de P.Problème : le nombre de sommets. Il faut résoudre

(m+nn

)systèmes linéaires.

Exemple : pour m = 400 et n = 200 il faut résoudre environ 2,5×10164

systèmes linéaires, ce qui dépasse le nombre estimé des électrons et desprotons dans l’Univers !

9/28 9/28

Page 10: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

L’algorithme du simplexe

Idée : Parcourir les sommets de P de façon plus intelligente.

Passer itérativement d’un sommet à un sommet adjacent de façon àaugmenter la valeur de la fonction à optimiser jusqu’à trouver un sommet oùle maximum est atteint.

0 140

180

180

210

10/28 10/28

Page 11: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

L’algorithme du simplexe

Initialisation : Choisir un sommet x0 ∈ P, t = 1Itération t : Soit y1, . . . ,yk tous les sommets voisins de x t (les sommetsreliés avec x t par une arête).

Si cx t > cys, s = 1, . . . ,k , stop. La solution optimale est x t .Sinon, choisir un voisin ys, tel que cys ≥ cx t . Poser x t+1 = ys etpasser à l’itération t +1.

11/28 11/28

Page 12: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Simplexe – pourquoi ça marche ?

Grâce à la convexité du polyèdre des contraintes et à la linéarité de lafonction objectif, il n’y a pas de maxima locaux.

montagne convexe montagne nonïconvexe

12/28 12/28

Page 13: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Application à un exemple

produit 1 produit 2 produit 3 produit 4 stockressource A 2 4 5 7 42ressource B 1 1 2 2 17ressource C 1 2 3 3 24

bénéfice 7 9 18 17

Maximiser z = 7x1 + 9x2 + 18x3 + 17x4

s. c. 2x1 + 4x2 + 5x3 + 7x4 ≤ 42x1 + x2 + 2x3 + 2x4 ≤ 17x1 + 2x2 + 3x3 + 3x4 ≤ 24x1 , x2 , x3 , x4 ≥ 0

Un problème de programmation linéaire sous forme canonique.

13/28 13/28

Page 14: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Les variables d’écart

7x1 + 9x2 + 18x3 + 17x4 =⇒ Max2x1 + 4x2 + 5x3 + 7x4 + x5 = 42x1 + x2 + 2x3 + 2x4 + x6 = 17x1 + 2x2 + 3x3 + 3x4 + x7 = 24x1 , x2 , x3 , x4 , x5 , x6 , x7 ≥ 0

x5 = 42 − 2x1 − 4x2 − 5x3 − 7x4x6 = 17 − x1 − x2 − 2x3 − 2x4x7 = 24 − x1 − 2x2 − 3x3 − 3x4

z = 7x1 + 9x2 + 18x3 + 17x4

Tr. 1

14/28 14/28

Page 15: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Solution de base et amélioration

Les variables x5,x6,x7 sont des variables de base et x1,x2,x3,x4 sont desvariables hors-base. La solution de base est x1 = 0, x2 = 0, x3 = 0, x4 = 0,entraînant x5 = 42, x6 = 17, x7 = 24. Le bénéfice correspondant est z = 0.Peut on faire mieux ?Choisissons x3. Si on fait croître x3 à partir de 0, les autres variableshors-base restant nulles, z croît aussi. Mais il faut que la solution resteréalisable !

x5 ≥ 0 ⇒ 42−5x3 ≥ 0 ⇒ x3 ≤ 8.4x6 ≥ 0 ⇒ 17−2x3 ≥ 0 ⇒ x3 ≤ 8.5x7 ≥ 0 ⇒ 24−3x3 ≥ 0 ⇒ x3 ≤ 8

La plus restrictive est x3 ≤ 8.

15/28 15/28

Page 16: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Changement de base

On exprime x3 et on remplace ensuite dans :

x5 = 2 − 13 x1 − 2

3 x2 + 53 x7 − 2x4

x6 = 1 − 13 x1 + 1

3 x2 + 23 x7

x3 = 8 − 13 x1 − 2

3 x2 − 13 x7 − x4

z = 144 + x1 − 3x2 − 6x7 − x4

Tr. 2

x7 est sortie de la base et x3 est entrée en base. La solution de base estx1 = x2 = x7 = x4 = 0, x5 = 2, x6 = 1, x3 = 8. Le bénéfice est z = 144.

16/28 16/28

Page 17: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Peut on faire mieux ?

la seule variable > 0 est x1. On la fait entrer en base

x5 ≥ 0 ⇒ x1 ≤ 6x6 ≥ 0 ⇒ x1 ≤ 3x3 ≥ 0 ⇒ x1 ≤ 24

d’où x1 ≤ 3. On fait sortir x6 et on obtient :

x5 = 1 + x6 − x2 + x7 − 2x4

x1 = 3 − 3x6 + x2 + 2x7

x3 = 7 + x6 − x2 − x7 − x4

z = 147 − 3x6 − 2x2 − 4x7 − x4

Tr. 3

17/28 17/28

Page 18: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

C’est la solution optimale

La solution de base associée x6 = x2 = x7 = x4 = 0, x5 = 1, x1 = 3, x3 = 7,correspond au sommet (3,0,7,0) du polyèdre des contraintes. Elle définit leplan de production suivant : on fabrique 3 unités du produit 1 et 7 unités deproduit 3. Il ne nous reste qu’une unité de la ressource A. Le bénéfice estz = 147. De plus, tous les coefficients de la dernière ligne sont négatifs, doncon ne peut pas se déplacer vers un sommet voisin en augmentant la fonctiondu profit.

18/28 18/28

Page 19: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

L’interprétation géométrique

A [0]

C [102]

I [144]

L [147]

J [145]

F [129]

B [94.5]

H [143]

K [146,5]

E [127]

D [119]

G [135]

sommet x1 x2 x3 x4 zA 0 0 0 0 0B 0 10.5 0 0 94.5C 0 0 0 6 102D 17 0 0 0 119E 11.67 0 0 2.67 127F 13 4 0 0 129G 0 3 6 0 135H 0 0 7 1 143I 0 0 8 0 144J 4 1 6 0 145K 3 0 6.5 0.5 146.5L 3 0 7 0 147

19/28 19/28

Page 20: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Convergence de l’algorithme du simplexe

On se déplace d’un sommet à un autre en augmentant la valeur de lafonction z. Le nombre de sommets et fini (au plus

(m+nn

)).

Si la fonction objectif est bornée, on va finir par trouver le maximum

Si elle ne est pas bornée, on va le détecter (pas de candidat à entrer enbase).

20/28 20/28

Page 21: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Forme matricielle

z = max{cx | Ax = b, x ≥ 0}(contraintes de type “=” après l’introduction de variables d’écart)Soit xB le vecteur de variables en base et xN le vecteur de variables horsbase. Le problème s’écrit

BxB +NxN = b, d’où

xB +B−1NxN = B−1b = b

La fonction objectif s’exprime comme

z = cBxB + cNxN = cBb+(cN − cBB−1N)xN

21/28 21/28

Page 22: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Programmes linéaires (PL) versus PL en Nombres Entiers (PLNE)

Exemple d’un PL : À l’approche des fêtes de Pâques, un artisan chocolatier décidede confectionner des oeufs en chocolat. En allant inspecter ses réserves, il constatequ’il lui reste 18 kg de cacao, 8 kg de noisettes et 14 kg de lait. Il a deux spécialités :l’oeuf Extra et l’oeuf Sublime. Un oeuf Extra nécessite 1 kg de cacao, 1 kg denoisettes et 2 kg de lait. Un oeuf Sublime nécessite 3 kg de cacao, 1 kg de noisetteset 1 kg de lait. Il fera un profit de 20 e en vendant un oeuf Extra, et de 30 e envendant un oeuf Sublime. Combien d’oeufs Extra et Sublime doit-il fabriquer pour fairele plus grand bénéfice possible ?Solution : 3 oeufs Extra, 5 oeufs Sublime, benefice 210 e.

Solution si 18,5 kg de cacao : 2,75 Extra et 5,25 Sublime et benefice=212,5 e . Cequi n’est pas admissible !. Pour rendre le problème admissible on ajoute la conrainte :Extra, Sublime : entier≥ 0. Donc, un (PLNE).

22/28 22/28

Page 23: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

L’approche graphique pour le problème du chocolatier

x1 : # d’oeufs Extrax2 : # d’oeufs Sublime

max20x1 +30x2 (1)

x1 +3x2 ≤ 18 (2)

x1 + x2 ≤ 8 (3)

2x1 + x2 ≤ 14 (4)

23/28 23/28

Page 24: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Résoudre par l’approche graphique

Maximiser z = 2x1 + x2s. c. 4x1 + 2x2 ≤ 8

x2 ≤ 2x1,x2 ≥ 0

Maximiser z = x1 + 2x2s. c. −x1 + x2 ≤ 2

x2 ≤ 3x1,x2 ≥ 0

24/28 24/28

Page 25: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

L’ACM vu comme un PL

On cherche l’arbre couvrant minimal (ACM) du graphe G = (V ,E) tel que|V |= |E |= 3. Il y 3 arbres candidats d’être l’ACM pour G (ci-dessous à gauche).Notons xj = 1 ssi ej = 1. Les trois arbres peuvent alors etre vus comme des points en3D et ils coincîdent avec les sommets v1,v2 et v3 du polytope F (ci-dessous à droite)défini par les contraintes x1 + x2 + x3 = 2,0≤ xi ≤ 1. Ainsi, un problème purementcombinatoire peut être résolu comme un PL.

25/28 25/28

Page 26: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Partition équilibrée ou le parking optimal

M. Edmons habite au 1, rue "Dantzig" sur laquelle les voitures peuvent segarer de deux cotés. Pour son anniversaire, il a invité ses amis qui viendrontavec k voitures. La longueur de la ie voiture est notée λi .Pour ne pas déranger ses voisins, M. Edmons souhaite organiser le parkingdes voitures de ses amis des deux cotés de la rue de manière à minimiser lalongueur du coté le plus long.

1. Donner le programme linéaire associé à ce problème (sans le résoudre)2. Quelles contraintes faut-il ajouter au programme précédent pour

modéliser les situations suivantes :2.1 La longueur du coté pair ne doit pas dépasser 20 mètres.2.2 Les voitures d’une longueur supérieure à 4 mètres doivent être garées du coté

impair.2.3 Si la longueur du coté pair dépasse 15 mètres, la longueur du coté impair ne doit pas

dépasser 20 mètres.

26/28 26/28

Page 27: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Modélisation des programmes linéaires

Une étudiante élégante et coquette doit se rendre par avion aux États-Unis afind’effectuer son stage d’été. Outre ses affaires professionnelles et quelques objetsindispensables, elle doit choisir un certain nombre de vêtement dans sa garde-robe.Du fait des réglementations aériennes, il s’avère qu’il ne reste plus que quatre kilosdisponibles pour ses vêtements.Une première sélection dans sa garde-robe conduit l’étudiante à retenir, en plus de larobe qu’elle a décidé de porter dans l’avion, 3 jupes, 3 pantalons, 4 hauts et 3 robes.Le poids en grammes de chaque vêtement est répertorié dans le tableau suivant.

Vêtement Jupe Pantalon Haut Robe1 2 3 1 2 3 1 2 3 4 1 2 3

Poids (g) 500 400 700 600 500 500 400 300 300 400 600 700 800

TABLE 1 : Poids des différents vêtement

L’étudiante décide que :

elle doit porter au moins une robe,

si elle porte la jupe 1 alors elle emportera également le haut 2 qui s’assortit sibien avec cette jupe,

elle ne prendra pas le haut 4 si elle emporte les hauts 1 et 2.

27/28 27/28

Page 28: Programmation linéaire - people.irisa.fr · Historique La programmation linéaire est dans les fondements de larecherche opérationnelle(RO) ouaide à la décision: propose des modèles

Modélisation des programmes linéaires

L’objectif poursuivi est de maximiser le nombre de tenues différentes qu’elle pourraporter aux États-Unis. Une robe constitue une tenue. Les autres tenues résultent decombinaisons d’un haut et d’une jupe ou d’un pantalon. Cependant, les règles del’élégance n’autorisent que certaines combinaisons indiquées par une croix dans letableau suivant.

Haut1 2 3 4

1 + + +Jupe 2 + +

3 +1 + +

Pantalon 2 +3 + +

TABLE 2 : Combinaisons autoriséesModélisation du problème sous forme d’un programme linéaire

1. Exprimer les quatre contraintes du problème2. Expression de la fonction objectif :

2.1 Formuler la fonction objectif du problème en utilisant une expression quadratique(c’est-à-dire une somme de produits de deux variables)

2.2 Rendre linéaire la fonction objectif. Pour chaque produit de la somme précédente, onutilisera une nouvelle variable binaire et deux nouvelles contraintes.

28/28 28/28