4. Programmation en nombres entiers - univ-reunion.fr

38
IFT1575 Modèles de recherche opérationnelle (RO) 4. Programmation en nombres entiers a. Modélisation

Transcript of 4. Programmation en nombres entiers - univ-reunion.fr

Page 1: 4. Programmation en nombres entiers - univ-reunion.fr

IFT1575 Modèles de recherche opérationnelle (RO)

4. Programmation en nombres entiers

a. Modélisation

Page 2: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 2

Terminologie de base

� Programmation en nombres entiers = Programmation linéaire avec certaines variables contraintes à prendre des valeurs entières

� Programmation non linéaire en nombres entiers = Programmation non linéaire (sec. 7) avec certaines variables entières

� Programmation pure en nombres entiers = toutes les variables sont entières

� Programmation (mixte) en nombres entiers = certaines variables sont entières

� Programmation 0-1 (binaire) = les variables entières sont à valeurs 0 ou 1 (binaires)

Page 3: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 3

Exemple : California Mfg (H&L, 11.1)

� Choisir de nouveaux emplacements pour construire des usines et des entrepôts

� Deux emplacements : LA et SF� On ne peut construire un entrepôt que dans une ville où l’on a aussi une usine

� On ne peut construire plus d’un entrepôt� On associe à chaque construction (d’une usine ou d’un entrepôt dans chacun des lieux envisagés)� Sa valeur estimée� Son coût de construction

� Objectif : maximiser la valeur totale estimée, en ne dépassant pas une limite maximum sur les coûts

Page 4: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 4

Exemple (suite)

10-Limite maximum

244. Entrepôt à SF

563. Entrepôt à LA

352. Usine à SF

691. Usine à LA

Coût de construction (millions $)

Valeur estimée (millions $)

Page 5: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 5

Modèle California Mfg

� Variables :

� Objectif : maximiser la valeur estimée totale

� Contraintes fonctionnelles� Limite maximum sur les coûts de construction

� On ne peut construire plus d’un entrepôt

=

)( approuvée pasest n' décision la si0

)( approuvéeest décision la si1

nonj

ouijxj

4321 4659 max xxxxZ +++=

102536 4321 ≤+++ xxxx

143 ≤+ xx

Page 6: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 6

Modèle California Mfg (suite)

� Contraintes fonctionnelles (suite)� Entrepôt à LA seulement si usine à LA

� Entrepôt à SF seulement si usine à SF

� Contraintes 0-1 (intégralité)

� Ou encore

13 xx ≤

24 xx ≤

{ } 4,3,2,1 ,1,0 =∈ jxj

4,3,2,1 entier, et 10 =≤≤ jxx jj

Page 7: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 7

Modèle California Mfg : résumé

entier4321

4321

4321

42

31

43

4321

4321

,,,

0,,,

1,,,

0

0

1

102536

4659max

xxxx

xxxx

xxxx

xx

xx

xx

xxxx

xxxxZ

≥≤≤+−≤+−≤+≤+++

+++=

Page 8: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 8

Modélisation avec Excel

� On applique la même approche que pour la PL

� Excel Solver permet deux types de contraintes particulières pour modéliser les variables entières :� bin : pour représenter les variables 0-1

� ent : pour représenter les variables entières générales

� Excel Solver résout les modèles de programmation en nombres entiers par l’algorithme de branch-and-bound (voir plus loin)

� Voir l’exemple California Mfg

Page 9: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 9

Utilisation des variables binaires

� Le modèle illustre deux cas classiques d’utilisation des variables binaires� Alternatives mutuellement exclusives : on ne peut construire plus d’un entrepôt

� Décisions contingentes : on ne peut construire un entrepôt que là ou on a construit une usine

� Voyons d’autres exemples utilisant des variables 0-1

143 ≤+ xx

13 xx ≤24 xx ≤

Page 10: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 10

Contraintes mutuellement exclusives

� Prenons l’exemple de deux contraintes

� L’une ou l’autre des deux contraintes doit être satisfaite, mais pas les deux simultanément!

� Soit M un très grand nombre; le système précédent est équivalent à

164soit

1823soit

21

21

≤+

≤+

xx

xx

164

1823soit

164

1823soit

21

21

21

21

≤+

+≤+

+≤+

≤+

xx

Mxx

Mxx

xx

Page 11: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 11

Contraintes mutuellement exclusives

� En introduisant une variable binaire y, on obtient un système équivalent

� La signification de cette variable est :� y = 1, si la première contrainte est satisfaite

� y= 0, si la deuxième contrainte est satisfaite

� C’est un autre exemple d’alternatives mutuellement exclusives

Myxx

yMxx

+≤+

−+≤+

164

)1(1823

21

21

Page 12: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 12

Contraintes mutuellement exclusives

� On aurait pu aussi introduire deux variables binaires� y1 = 1, si la première contrainte est satisfaite

� y2 = 1, si la deuxième contrainte est satisfaite

� On doit avoir y1 + y2 = 1

� Pour se ramener au modèle précédent, il suffit de poser y1 = y et y2 = 1-y

� C’est un cas particulier de la situation suivante : Kparmi N contraintes doivent être satisfaites

� Dans ce cas plus général, on introduit N variables binaires

Page 13: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 13

K contraintes parmi N

� Soit les N contraintes :

� On introduit alors N variables binaires : yj= 1, si la jème contrainte est satisfaite

� Il reste à spécifier que seulement K de ces contraintes peuvent être satisfaites :

Njdxxxf jnj ,...,2,1 ,),...,,( 21 =≤

NjyMdxxxf jjnj ,...,2,1 ),1(),...,,( 21 =−+≤

∑=

=N

j

j Ky1

Page 14: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 14

Fonction ayant N valeurs possibles

� Soit la contrainte :

� On introduit alors N variables binaires : yj = 1, si la fonction vaut dj

� La contrainte s’écrit alors ainsi :

2 121 ou ...ou ou ),...,,( Nn dddxxxf =

=

=

=

=N

j

j

N

j

jjn

y

ydxxxf

1

1

21

1

),...,,(

Page 15: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 15

Fonction ayant N valeurs possibles

� Exemple Wyndor Glass

� Supposons que le temps de production maximum àl’usine 3 n’est pas toujours 18h, mais pourrait être également 6h ou 12h

� Cette contrainte s’écrit alors :

� On introduit alors 3 variables binaires :

1

1812623

321

32121

=++

++=+

yyy

yyyxx

21 18ou ...ou 12ou 623 =+ xx

Page 16: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 16

Objectif avec coûts fixes

� Supposons que le coût associé à un produit j est composé de deux parties :� Un coût fixe initial kj encouru dès qu’une unité de j est produite

� Un coût cj proportionnel au nombre d’unités de j produites

� Le coût total associé à la production de xj unités est:

{0 si00 si

)( =>+=

j

jjjj

jj

xxxck

xf

Page 17: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 17

Objectif avec coûts fixes

� Supposons que l’objectif consiste à minimiser la somme de n fonctions avec coûts fixes :

� On introduit alors n variables binaires :

� L’objectif s’écrit alors ainsi :

∑=

=n

j

jj xfZ1

)( min

{0 si0 0 si1

=>=

j

j

j

xx

y

∑=

+=n

j

jjjj ykxcZ1

)( min

Page 18: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 18

Objectif avec coûts fixes

� Mais comment représenter la relation entre xj et yj ?

� Les valeurs de yj et de xj dépendent l’une de l’autre : il s’agit d’un exemple de décisions contingentes

� On doit donc avoir une contrainte qui précise que xjvaut 0 si yj = 0

� Mais contrairement à la situation dans notre exemple California Mfg, les deux variables ne sont pas binaires: xj peut être quelconque

� Que faire ?...

Page 19: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 19

Objectif avec coûts fixes

� Soit Mj une borne supérieure sur la valeur de xj� On écrit la relation entre les deux variables ainsi :

� Alors :� Si yj= 0, alors xj = 0

� Si yj= 1, alors xj≤Mj� Si xj > 0, alors yj= 1

� Si xj = 0, alors toute solution optimale satisfait yj= 0 lorsque kj > 0 (si kj = 0 , la variable yj est inutile)

jjj yMx ≤

Page 20: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 20

Objectif avec coûts fixes

Les contraintes originales du problème

jjj yMx ≤

∑=

+=n

j

jjjj ykxcZ1

)( min

{ } njyj ,...,2,1 ,1,0 =∈

Page 21: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 21

Variables entières en variables 0-1

� Soit x une variable entière générale bornée :

� Soit N l’entier tel que

� La représentation binaire de x est

� Intérêt de cette transformation : les méthodes de programmation 0-1 souvent plus efficaces que les méthodes de programmation en nombres entiers

� Mais… augmentation du nombre de variables!

ux ≤≤0122 +<≤ NN u

∑=

=N

j

j

j yx0

2

Page 22: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 22

Exemple 1

� Trois types de produits

� Deux usines

� Profit/unité de produit (1000 $)

� Ventes potentielles par produit (unités/semaine)

� Capacité de production par usine (h/semaine)

� Pas plus de deux produits peuvent être fabriqués

� Une seule des deux usines doit être exploitée

Page 23: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 23

Exemple 1 (suite)

957Ventes potentielles

(/semaine)

375Profit/unité

(1000 $)

40264Usine 2

30243Usine 1

Capacité de production (h/semaine)

Produit 3

tps production (h/unité)

Produit 2

tps production (h/unité)

Produit 1

tps production (h/unité)

Page 24: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 24

Exemple 1 (suite)

� Variables :

nombre d’unités fabriquées du produit j

� Pour représenter la contrainte « Pas plus de deux produits », on doit introduire des variables 0-1 :

� Pour représenter la contrainte « Une seule des deux usines », on doit ajouter une variable 0-1 :

=jx

{0 si0 0 si1

=>=

j

j

j

xx

y

{sinon0

choisieest 1 usinel' si1 4 =y

Page 25: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 25

Exemple 1 (suite)

� Objectif :

� Ventes potentielles :

� Pas plus de deux produits :

� Relation entre variables continues et variables 0-1 :

321 375 max xxxZ ++=

9,5,7 321 ≤≤≤ xxx

2321 ≤++ yyy

332211 9,5,7 yxyxyx ≤≤≤

Page 26: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 26

Exemple 1 (suite)

� Une seule des deux usines :

� En utilisant la variable 0-1 (et M très grand) :

40264soit

30243soit

321

321

≤++

≤++

xxx

xxx

4321

4321

40264

)1(30243

Myxxx

yMxxx

+≤++

−+≤++

Page 27: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 27

Exemple 1 : résumé

4321

4321

40264

)1(30243

Myxxx

yMxxx

+≤++

−+≤++

321 375 max xxxZ ++=

332211 9,5,7 yxyxyx ≤≤≤

2321 ≤++ yyy

0,, 321 ≥xxx

{ } 4,3,2,1 ,1,0 =∈ jy j

Page 28: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 28

Exemple 2

� Trois types de produits

� Cinq annonces publicitaires

� Maximum de trois annonces/produit

4333

2232

-1011

0000

Produit 3

profit, millions $

Produit 2

profit, millions $

Produit 1

profit, millions $

Nombre d’annonces

Page 29: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 29

Exemple 2 : premier modèle ?

� Variables :

nombre d’annonces du produit i

� L’hypothèse de proportionnalité est violée!

� On ne peut représenter l’objectif sous forme linéaire uniquement avec ces variables!

� Nous verrons deux modèles possibles pour contourner cette difficulté

=ix

Page 30: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 30

Exemple 2 : premier modèle

� Variables :

� Objectif :

� Exactement cinq annonces

� Définition des variables 0-1

==

sinon0

si1 jxy

i

ij

3332312322131211 423233 max yyyyyyyyZ ++−++++=

∑∑= =

=3

1

3

1

5i j

ijjy

3,2,1 ,13

1

=≤∑=

iyj

ij

Page 31: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 31

Exemple 2 : deuxième modèle

� Variables :

� Cette définition implique :

� Ou encore :

≥=

sinon0

si1 jxy

i

ij

1,1,13

0,1,12

0,0,11

0,0,00

321

321

321

321

===⇒=

===⇒=

===⇒=

===⇒=

iiii

iiii

iiii

iiii

yyyx

yyyx

yyyx

yyyx

2,1,3,2,1,)1( ==≤+ jiyy ijji

Page 32: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 32

Exemple 2 : deuxième modèle (suite)

� Supposons que x1 = 3 (3 annonces pour le produit 1)

� Le profit associé à cette valeur doit être 3

� Mais x1 = 3 veut dire que chaque variable binaire associée au produit 1 vaut 1

� Comment comptabiliser correctement la contribution de ces trois variables au profit ?

� Solution : le profit associé à la variable yij est cij+1-cij� Dans notre exemple, le profit associé à

� y11 est 1-0 = 1

� y12 est 3-1 = 2

� y13 est 3-3 = 0

Page 33: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 33

Exemple 2 : deuxième modèle (suite)

� Objectif :

� Exactement cinq annonces

� Définition des variables 0-1

33323123221211 2322 max yyyyyyyZ ++−+++=

∑∑= =

=3

1

3

1

5i j

ijy

2,1,3,2,1,)1( ==≤+ jiyy ijji

Page 34: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 34

Exemple 3

� Une compagnie aérienne veut affecter trois équipages à des séquences de vols

� Il y a un coût associé à chaque séquence de vols

� La compagnie cherche à minimiser les coûts d’affectation des équipages aux séquences de façon à assurer le service sur chacun de ses vols

� Exemple : 11 vols et 12 séquences de vols

Page 35: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 35

Exemple 3 (suite)

989987576432Coût

1111111

111110

1119

11118

111117

1116

11115

111114

11113

11112

11111

121110987654321Vol

Page 36: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 36

Exemple 3 (suite)

� Variables :

� Objectif :

� Affecter trois équipages

=

sinon0

affectéeest volsde séquence la si1 jxj

121110987

654321

989987

576432 max

xxxxxx

xxxxxxZ

+++++

+++++=

∑=

=12

1

3j

jx

Page 37: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 37

Exemple 3 (suite)

� Le service doit être assuré sur chacun des vols :

� … Et ainsi de suite (voir détails dans H&L, sec. 11.4)

1

1

1

1

1210974

12963

11852

10741

≥++++

≥+++

≥+++

≥+++

xxxxx

xxxx

xxxx

xxxx

Page 38: 4. Programmation en nombres entiers - univ-reunion.fr

4. Programmation entiers 38

Exemple 3 (suite)

� C’est un exemple de problème de recouvrement d’ensemble� I : un ensemble d’objets (ici, les vols)

� J : une collection de sous-ensembles de I (ici, les séquences de vols)

� : les sous-ensembles dans J qui contiennent i

� Variables

� Contraintes :

� Partitionnement d’ensemble :

IiJi ∈,

=

sinon0

choisiest ensemble-sous le si1 jxj

IixJij

j ∈≥∑∈

,1Iix

Jij

j ∈=∑∈

,1