Vous êtes sur la page 1sur 83

Optimisation en nombres entiers

Michel Bierlaire
michel.bierlaire@epfl.ch

EPFL - Laboratoire Transport et Mobilite - ENAC

Optimisation en nombres entiers p. 1/83


Dfinitions

Optimisation en nombres entiers


Un problme doptimisation en nombres entiers est un problme
doptimisation dont toutes les variables sont contraintes ne prendre que des
valeurs entires.

Variables discrtes : nombre dobjets considrer, nombre


dactions effectuer, etc.
Nombres de vlos installer sur le campus.
Nombres douvriers affecter un chantier.
Variables binaires (0/1) : oui/non, allumer/teindre, etc.
Utiliser la voiture ou pas.
Construire un pont ou pas.
Allumer la climatisation ou pas.

Optimisation en nombres entiers p. 2/83


Dfinitions

Optimisation mixte en nombres entiers


Un problme doptimisation mixte en nombres entiers est un problme
doptimisation dont certaines variables sont contraintes ne prendre que des
valeurs entires.

Mobilit :
Dcision binaire : acheter une seconde voiture ou non.
Dcision continue : nombre de kilomtres effectuer.
Energie :
Dcision binaire : installer une nouvelle chaudire
lectricit/gaz.
Dcision continue : quantit de gaz brler.

Optimisation en nombres entiers p. 3/83


Introduction
Problme doptimisation linaire en nombres entiers

minn cT x
xR

sous contraintes
Ax = b
x0
xN

Optimisation en nombres entiers p. 4/83


Introduction
Problme doptimisation linaire binaire

minn cT x
xR

sous contraintes
Ax = b
x0
x {0, 1}

Optimisation en nombres entiers p. 5/83


Introduction
Approche intuitive immdiate :
Ignorer les contraintes dintgralit.
Rsoudre le problme linaire.
Si la solution nest pas entire, arrondir lentier le plus proche.
En gnral, cela ne fonctionne pas !

Optimisation en nombres entiers p. 6/83


Exemple

min2 3x1 13x2


xR

sous contraintes
2x1 + 9x2 40
11x1 8x2 82
x1 , x2 0
x1 , x2 entiers

Optimisation en nombres entiers p. 7/83


Exemple : polytope des contraintes

0
0 1 2 3 4 5 6 7 8 9 10

Optimisation en nombres entiers p. 8/83


Exemple : solution du problme continu

1
Solution optimale non entire (9.2, 2.4)
0
0 1 2 3 4 5 6 7 8 9 10

Optimisation en nombres entiers p. 9/83


Exemple : contraintes dintgralit

1
Solution optimale non entire (9.2, 2.4)
0
0 1 2 3 4 5 6 7 8 9 10

Optimisation en nombres entiers p. 10/83


Exemple : voisins non admissibles

5
Voisins non admissibles
4

1
Solution optimale non entire (9.2, 2.4)
0
0 1 2 3 4 5 6 7 8 9 10

Optimisation en nombres entiers p. 11/83


Exemple : solution du problme discret

5
Voisins non admissibles
4

2
Solution optimale entire
1
Solution optimale non entire (9.2, 2.4)
0
0 1 2 3 4 5 6 7 8 9 10

Optimisation en nombres entiers p. 12/83


Problmes
Il y a 2n faons darrondir une solution non entire. Laquelle
choisir ?
Arrondir une solution non entire peut gnrer une solution non
admissible.
La solution arrondie peut se trouver trs loin de la solution
optimale.

Optimisation en nombres entiers p. 13/83


Problme dinvestissement
Une socit dsire investir dans lnergie hydro-lectrique.
Les ingnieurs ont identifi 4 sites potentiels pour la
construction de barrages.
Pour chaque site, ils ont valu les cots dinvestissement, et le
bnfice attendu sur le long terme.
La socit a une capacit dinvestissement de 1400 kCHF.
Quels barrages doit-elle construire ?

Barrage Cot Bnfice Rendement


1 500 1600 3.20
2 700 2200 3.14
3 400 1200 3.00
4 300 800 2.67

Optimisation en nombres entiers p. 14/83


Problme dinvestissement
Modlisation :
Variables de dcision: x1 , x2 , x3 , x4 .
(
1 si le barrage i est choisi,
xi =
0 sinon.

Fonction objectif : maximiser le bnfice

max 16x1 + 22x2 + 12x3 + 8x4

Contrainte : capacit dinvestissement

5x1 + 7x2 + 4x3 + 3x4 14

Optimisation en nombres entiers p. 15/83


Problme dinvestissement
Problme linaire continu :

max4 16x1 + 22x2 + 12x3 + 8x4


xR

sous contraintes

5x1 + 7x2 + 4x3 + 3x4 14

x1 , x2 , x3 , x4 0.
Solution optimale :

x1 = 2.8, x2 = 0, x3 = 0, x4 = 0.

Optimisation en nombres entiers p. 16/83


Problme dinvestissement
Solution optimale :

x1 = 2.8, x2 = 0, x3 = 0, x4 = 0.

Dcision : ne construire que le barrage 1.


Cot : 500 kCHF
Somme non investie : 900 kCHF
Bnfice : 1600 kCHF

Optimisation en nombres entiers p. 17/83


Problme dinvestissement
Problme linaire continu 2 :

max4 16x1 + 22x2 + 12x3 + 8x4


xR

sous contraintes

5x1 + 7x2 + 4x3 + 3x4 14

0 x1 , x2 , x3 , x4 1.
Solution optimale :

x1 = 1, x2 = 1, x3 = 0.5, x4 = 0.

Optimisation en nombres entiers p. 18/83


Problme dinvestissement
Solution optimale :

x1 = 1, x2 = 1, x3 = 0.5, x4 = 0.

Dcision : construire les barrages 1 et 2.


Barrage 3 : plus assez dargent pour le construire.
Cot : 1200 kCHF
Somme non investie : 200 kCHF
Bnfice : 3800 kCHF

Optimisation en nombres entiers p. 19/83


Problme dinvestissement
Problme linaire discret :

max4 16x1 + 22x2 + 12x3 + 8x4


xR

sous contraintes

5x1 + 7x2 + 4x3 + 3x4 14

x1 , x2 , x3 , x4 {0, 1}
Solution optimale :

x1 = 0, x2 = 1, x3 = 1, x4 = 1.

Optimisation en nombres entiers p. 20/83


Problme dinvestissement
Solution optimale :

x1 = 0, x2 = 1, x3 = 1, x4 = 1.

Dcision : construire les barrages 2, 3 et 4.


Cot : 1400 kCHF
Somme non investie : 0 kCHF
Bnfice : 4200 kCHF
Le barrage correspondant au plus haut rendement nest pas
slectionn.

Conclusion : lapproche intuitive ne fonctionne pas.

Optimisation en nombres entiers p. 21/83


Conditions doptimalit
Il nest pas possible de caractriser la solution optimale dun
problme doptimisation en nombres entiers.
Autrement dit, il ny a pas de conditions doptimalit pour
loptimisation discrte.
Cela complique considrablement la rsolution du problme.
Il y a essentiellement deux manires daborder le problme.

Optimisation en nombres entiers p. 22/83


Algorithmes
1. Mthodes exactes :
la solution optimale est fournie,
mais le temps ncessaire pour la trouver est une fonction
exponentielle de la taille du problme.
2. Mthodes heuristiques :
une bonne solution est fournie,
aucune garantie doptimalit,
aucune mesure de qualit de la solution,
performances values empiriquement sur des problmes
connus.

Optimisation en nombres entiers p. 23/83


Branch & bound
Ides :
Parcours systmatique de lensemble admissible.
Diviser pour conqurir.
Utilisation de bornes sur le cot optimal pour liminer des
rgions admissibles sans les explorer.

Optimisation en nombres entiers p. 24/83


Branch
Soit le problme doptimisation P

min f (x)

sous contraintes
xF
F est lensemble des solutions admissibles.
Soit une partition de F

F = F1 . . . FK .

Soit xk la solution optimale du problme Pk

min f (x)

sous contraintes
x Fk

Optimisation en nombres entiers p. 25/83


Branch
Pour tout k , xk est admissible pour le problme P .
Soit i tel que
f (xi ) f (xk ), k = 1, . . . , K.
Alors, xi est la solution optimale du problme P .
Motivation : chaque sous-problme est plus simple que le
problme initial.

P1 P2 ... PK

Optimisation en nombres entiers p. 26/83


Branch
Et chaque problme peut nouveau tre partitionn.
P

P1 P2 ... PK

P21 P22 P23 ...

P231 P232 P233 ...

Optimisation en nombres entiers p. 27/83


Branch
Le nombre de sous-problmes devient vite trs grand.
Il faut viter de passer toutes les combinaisons possibles en
revue.
Ide : utiliser des bornes.

Optimisation en nombres entiers p. 28/83


Bound
Soit le sous-problme Pk
min f (x)
sous contraintes
x Fk
On suppose que lon peut calculer facilement une borne
infrieure bk
bk f (x), x Fk .
Soit y F une solution admissible du problme P .
Si
f (y) bk f (x), x Fk ,
alors cela ne vaut pas la peine de rsoudre le problme Pk .

Optimisation en nombres entiers p. 29/83


Algorithme de branch & bound
A chaque instant on maintient
une liste de sous-problmes actifs {P1 , P2 , . . .},
la valeur U = f (y) de la meilleure solution admissible obtenue
jusque l.
Initialisation :
soit U = +,
soit U = f (x) avec x admissible connu.

Optimisation en nombres entiers p. 30/83


Algorithme de branch & bound
Itration:
Soit Pk un sous-problme actif.
Si Pk est non admissible, le supprimer de la liste.
Sinon, calculer la borne bk .
Si U bk , supprimer Pk de la liste.
Sinon,
soit rsoudre Pk directement,
soit partitionner Fk et crer de nouveaux sous-problmes,
qui sont ajouts la liste.

Optimisation en nombres entiers p. 31/83


Exemple : problme daffectation
Sur un chantier, il faut affecter 4 ouvriers 4 tches.
Louvrier i effectue la tche j en cij heures :
Ouvrier Tche 1 Tche 2 Tche 3 Tche 4
A 9 2 7 8
B 6 4 3 7
C 5 8 1 8
D 7 6 9 4
Comment rpartir les tches pour que le nombre total dheures
soit le plus petit possible ?

Optimisation en nombres entiers p. 32/83


Exemple : problme daffectation
Modlisation :
Variables de dcision :
(
1 si louvrier i effectue la tche j,
xij =
0 sinon.

Fonction objectif :
X
min cij xij
ij

Optimisation en nombres entiers p. 33/83


Exemple : problme daffectation
Contraintes:
1. Chaque ouvrier doit effectuer exactement une tche :
X
xij = 1 i.
j

2. Chaque tche doit tre effectue par exactement un


ouvrier : X
xij = 1 j.
i

Optimisation en nombres entiers p. 34/83


Exemple : problme daffectation

Ouvrier Tche 1 Tche 2 Tche 3 Tche 4


A 9 2 7 8
B 6 4 3 7
C 5 8 1 8
D 7 6 9 4
Calcul de la borne :
La tche la plus rapide pour A prend 2 heures.
La tche la plus rapide pour B prend 3 heures.
La tche la plus rapide pour C prend 1 heure.
La tche la plus rapide pour D prend 4 heures.
Impossible de faire mieux que 10 heures.

Optimisation en nombres entiers p. 35/83


Exemple : problme daffectation
Problmes actifs : {P0 }
U = +
b0 = 10 < U : on partitionne P0 .
P01 : on dcide que A effectue la tche 1,
P02 : on dcide que A effectue la tche 2,
P03 : on dcide que A effectue la tche 3,
P04 : on dcide que A effectue la tche 4.
Chacun de ces problmes revient affecter 3 ouvriers 3
tches.
Ils sont chacun plus simples que P0 .
Notation : Pk [bk ]

Optimisation en nombres entiers p. 36/83


Exemple : problme daffectation
U = +
P0 [10]

P01 [?] P02 [?] P03 [?] P04 [?]

Optimisation en nombres entiers p. 37/83


Exemple : problme daffectation
Calcul des bornes.
Ouvrier Tche 1 Tche 2 Tche 3 Tche 4
A 9 2 7 8
B 6 4 3 7
C 5 8 1 8
D 7 6 9 4

La tche la plus rapide pour B prend 3 heures.


La tche la plus rapide pour C prend 1 heure.
La tche la plus rapide pour D prend 4 heures.

b01 = 9+8 = 17
b02 = 2+8 = 10
b03 = 7+8 = 15
b04 = 8+8 = 16

Optimisation en nombres entiers p. 38/83


Exemple : problme daffectation
U = +
P0 [10]

P01 [17] P02 [10] P03 [15] P04 [16]

Optimisation en nombres entiers p. 39/83


Exemple : problme daffectation
Problmes actifs : {P0 , P01 , P02 , P03 , P04 }
U = +
P02 est le plus prometteur car associ la meilleure borne.
On partitionne P02
P021 : on dcide que B effectue la tche 1,
P022 : on dcide que B effectue la tche 2,
P023 : on dcide que B effectue la tche 3,
P024 : on dcide que B effectue la tche 4.
P022 est non admissible.
Chacun des autres problmes revient affecter 2 ouvriers 2
tches.

Optimisation en nombres entiers p. 40/83


Exemple : problme daffectation
U = +
P0 [10]

P01 [17] P02 [10] P03 [15] P04 [16]

P021 [?] P023 [?] P024 [?]

Optimisation en nombres entiers p. 41/83


Exemple : problme daffectation
Calcul des bornes.
Ouvrier Tche 1 Tche 2 Tche 3 Tche 4
A 9 2 7 8
B 6 4 3 7
C 5 8 1 8
D 7 6 9 4

La tche la plus rapide pour C prend 1 heure.


La tche la plus rapide pour D prend 4 heures.

b021 = 2+6+5 = 13
b023 = 2+3+5 = 10
b024 = 2+7+5 = 14

Optimisation en nombres entiers p. 42/83


Exemple : problme daffectation
U = +
P0 [10]

P01 [17] P02 [10] P03 [15] P04 [16]

P021 [13] P023 [10] P024 [14]

Optimisation en nombres entiers p. 43/83


Exemple : problme daffectation
Problmes actifs : {P0 , P01 , P02 , P03 , P04 , P021 , P023 , P024 }
U = +
P023 est le plus prometteur car associ la meilleure borne.
P0231 : on dcide que C effectue la tche 1,
P0232 : on dcide que C effectue la tche 2,
P0233 : on dcide que C effectue la tche 3,
P0234 : on dcide que C effectue la tche 4.
P0232 et P0233 sont non admissible.
Chacun des autres problmes est trivial rsoudre.
P0231 : A(2), B(3), C(1), D(4).
Temps total : 2 + 3 + 5 + 4 = 14.
P0234 : A(2), B(3), C(4), D(1).
Temps total : 2 + 3 + 8 + 7 = 20.

Optimisation en nombres entiers p. 44/83


Exemple : problme daffectation
Solution optimale de P023 trouve. Valeur : 14
Problmes actifs : {P0 , P01 , P02 , P03 , P04 , P021 , P024 }
U = 14
Notation : Pk (f (xk ))

Optimisation en nombres entiers p. 45/83


Exemple : problme daffectation
U = 14
P0 [10]

P01 [17] P02 [10] P03 [15] P04 [16]

P021 [13] P023 (14) P024 [14]

Optimisation en nombres entiers p. 46/83


Exemple : problme daffectation
On peut maintenant supprimer les sous-problmes dont la
borne est plus grande ou gale U .

Optimisation en nombres entiers p. 47/83


Exemple : problme daffectation
U = 14
P0 [10]

P01 [17] P02 [10] P03 [15] P04 [16]

P021 [13] P023 (14) P024 [14]

Optimisation en nombres entiers p. 48/83


Exemple : problme daffectation
Problmes actifs : {P0 , P02 , P021 }
U = 14
On partitionne P021
P0211 : on dcide que C effectue la tche 1,
P0212 : on dcide que C effectue la tche 2,
P0213 : on dcide que C effectue la tche 3,
P0214 : on dcide que C effectue la tche 4.
P0211 et P0212 sont non admissibles.
Chacun des autres problmes est trivial rsoudre.
P0213 : A(2), B(1), C(3), D(4).
Temps total : 2 + 6 + 1 + 4 = 13.
P0214 : A(2), B(1), C(4), D(3).
Temps total : 2 + 6 + 8 + 9 = 25.

Optimisation en nombres entiers p. 49/83


Exemple : problme daffectation
U = 13
P0 [10]

P01 [17] P02 [10] P03 [15] P04 [16]

P021 (13) P023 (14) P024 [14]

Optimisation en nombres entiers p. 50/83


Exemple : problme daffectation
U = 13
P0 [10]

P01 [17] P02 (13) P03 [15] P04 [16]

P021 (13) P023 (14) P024 [14]

Optimisation en nombres entiers p. 51/83


Exemple : problme daffectation
U = 13
P0 (13)

P01 [17] P02 (13) P03 [15] P04 [16]

P021 (13) P023 (14) P024 [14]

Optimisation en nombres entiers p. 52/83


Branch & Bound
Classe dalgorithmes avec
diffrentes mthodes pour partitionner,
diffrentes mthodes pour choisir le sous-problme traiter,
diffrentes mthodes pour calculer les bornes.

Optimisation en nombres entiers p. 53/83


Relaxation
Soit le problme doptimisation P

min f (x)

sous contraintes
g(x) 0
h(x) = 0
x Z
Le problme relax R(P ) est obtenu en ignorant les contraintes
dintgralit
min f (x)
sous contraintes
g(x) 0
h(x) = 0

Optimisation en nombres entiers p. 54/83


Branch
Soit xR la solution optimale de R(P ).
Si toutes les composantes sont entires, alors xR est aussi
solution optimale de P .
Sinon, il existe au moins une composante i non entire (xR )i .
Le problme P est alors partitionn :

P Pr
min f (x) min f (x)
sous contraintes sous contraintes
g(x) 0 g(x) 0
h(x) = 0 h(x) = 0
x Z x Z
xi (xR )i xi (xR )i

Optimisation en nombres entiers p. 55/83


Branch
Toute solution admissible de P est solution admissible soit de
P , soit de Pr . Il sagit donc bien dune partition de lensemble
admissible.
La solution xR nest pas admissible pour les relaxations des
nouveaux sous-problmes R(P ) et R(Pr ).
En effet, comme (xR )i est non entier, les contraintes

xi (xR )i et xi (xR )i

sont violes par (xR )i .


La solution optimale des problmes relaxs sera donc
diffrente de xR .

Optimisation en nombres entiers p. 56/83


Bound
Soit x la solution optimale de P .
Soit xR la solution optimale de R(P ).
On a toujours
f (xR ) f (x ).
On obtient donc une borne infrieure en rsolvant le problme
relax.
Attention : cela ne fonctionne que si on peut trouver loptimum
global de R(P ).
Cest le cas en particulier si le problme doptimisation est
linaire.

Optimisation en nombres entiers p. 57/83


Exemple
Soit le problme P0
min x1 2x2
sous contraintes
4x1 + 6x2 9
x1 + x2 4
x1 , x2 0
x1 , x2 N.
Note : (0, 0) est admissible. Donc U = 0.

Optimisation en nombres entiers p. 58/83


Exemple

0
0 1 2 3 4

Optimisation en nombres entiers p. 59/83


Exemple
Problme relax R(P0 ).
min x1 2x2
sous contraintes
4x1 + 6x2 9
x1 + x2 4
x1 , x2 0

Optimisation en nombres entiers p. 60/83


Exemple

0
0 1 2 3 4

Optimisation en nombres entiers p. 61/83


Exemple
Solution optimale de R(P0 ) : (1.5, 2.5)
Borne pour P0 : b0 = 3.5
x2 = 2.5 est non entier. Partition :

P01 P02
min x1 2x2 min x1 2x2
s.c. s.c.
4x1 + 6x2 9 4x1 + 6x2 9
x1 + x2 4 x1 + x2 4
x1 , x2 0 x1 , x2 0
x1 , x2 N x1 , x2 N
x2 2 x2 3

Optimisation en nombres entiers p. 62/83


Exemple

0
0 1 2 3 4

Optimisation en nombres entiers p. 63/83


Exemple
U =0
P0 [3.5]

P01 [?] P02 [?]


P02 est non admissible.

Optimisation en nombres entiers p. 64/83


Exemple

0
0 1 2 3 4

Optimisation en nombres entiers p. 65/83


Exemple
Problme P01 : min x1 2x2 sous contraintes

4x1 + 6x2 9
x1 + x2 4
x1 , x2 0
x2 2
x1 , x2 N.

Problme relax R(P01 ) : min x1 2x2 sous contraintes

4x1 + 6x2 9
x1 + x2 4
x1 , x2 0
x2 2

Optimisation en nombres entiers p. 66/83


Exemple

0
0 1 2 3 4

Optimisation en nombres entiers p. 67/83


Exemple
Solution optimale de R(P01 ) : (0.75, 2)
Borne pour P01 : b01 = 3.25
x1 = 0.75 est non entier. Partition :

P011 P012
min x1 2x2 min x1 2x2
s.c. s.c.
4x1 + 6x2 9 4x1 + 6x2 9
x1 + x2 4 x1 + x2 4
x1 , x2 0 x1 , x2 0
x1 , x2 N x1 , x2 N
x2 2 x2 2
x1 0 x1 1

Optimisation en nombres entiers p. 68/83


Exemple
U =0
P0 [3.5]

P01 [3.25] P02 [?]

P011 [?] P012 [?]

Optimisation en nombres entiers p. 69/83


Exemple

0
0 1 2 3 4

Optimisation en nombres entiers p. 70/83


Exemple
Problme P011 : min x1 2x2 sous contraintes

4x1 + 6x2 9
x1 + x2 4
x1 , x2 0
x2 2
x1 0
x1 , x2 N.

Problme relax R(P01 ) : min x1 2x2 sous contraintes

4x1 + 6x2 9
x1 + x2 4
x1 , x2 0
x2 2
x1 0

Optimisation en nombres entiers p. 71/83


Exemple

0
0 1 2 3 4

Optimisation en nombres entiers p. 72/83


Exemple
Solution optimale de R(P011 ) : (0, 1.5)
Borne pour P011 : b011 = 3

Optimisation en nombres entiers p. 73/83


Exemple
Problme P012 : min x1 2x2 sous contraintes

4x1 + 6x2 9
x1 + x2 4
x1 , x2 0
x2 2
x1 1
x1 , x2 N.

Problme relax R(P01 ) : min x1 2x2 sous contraintes

4x1 + 6x2 9
x1 + x2 4
x1 , x2 0
x2 2
x1 1

Optimisation en nombres entiers p. 74/83


Exemple

0
0 1 2 3 4

Optimisation en nombres entiers p. 75/83


Exemple
Solution optimale de R(P012 ) : (1, 2)
Solution entire.
Cest donc la solution optimale pour P012 .
U = 3.

Optimisation en nombres entiers p. 76/83


Exemple
U = 3
P0 [3.5]

P01 [3.25] P02 [?]

P011 [3] P012 (3)

Optimisation en nombres entiers p. 77/83


Exemple
U a t modifi.
Les sous-problmes dont la borne est plus grande ou gale
U peuvent tre supprims.

Optimisation en nombres entiers p. 78/83


Exemple
U = 3
P0 [3.5]

P01 [3.25] P02 [?]

P011 [3] P012 (3)

Optimisation en nombres entiers p. 79/83


Exemple
U = 3
P0 [3.5]

P01 (3) P02 [?]

P011 [3] P012 (3)

Optimisation en nombres entiers p. 80/83


Exemple
U = 3
P0 (3)

P01 (3) P02 [?]

P011 [3] P012 (3)

Optimisation en nombres entiers p. 81/83


Rsum
Optimisation en nombres entiers = problme difficile.
Utiliser lalgorithme du simplexe et arrondir les solutions ne
fonctionne en gnral pas.
Mthode exacte : branch & bound
Branch :
Diviser pour conqurir.
Partitionner lensemble admissible.
On obtient une srie de problmes plus simples.
Bound :
Calculer une borne infrieure pour un problme avant de le
rsoudre.
Si cette borne est moins bonne que la meilleure solution
trouve jusque l, pas besoin de rsoudre le problme.

Optimisation en nombres entiers p. 82/83


Rsum
Utilisation de la relaxation. Cest un problme continu.
Branch : liminer les solutions non entires = couper le
polytope.
Bound : solution du problme relax = borne pour le
problme non relax.
Les variantes sont nombreuses.
Exemple : utilisation de la dualit (relaxation lagrangienne).

Optimisation en nombres entiers p. 83/83