Optimisation en nombres entiers
MTH8415S. Le Digabel, Polytechnique Montr´eal
H2020
Plan
1. Introduction 2. Mod´elisation
3. Algorithme d’´enum´eration implicite
4. Probl`eme du sac `a dos
5. R´esolution avec un solveur : Probl`eme d’affectation
g´en´eralis´ee (GAP) 6. Extensions R´ef´erences
1. Introduction
2. Mod´elisation
3. Algorithme d’´enum´eration implicite 4. Probl`eme du sac `a dos
5. R´esolution avec un solveur : Probl`eme d’affectation g´en´eralis´ee (GAP)
6. Extensions R´ef´erences
Types de probl`
emes
Probl`eme d’optimisation lin´eaire ou non lin´eaire :
I En nombres entiers : Toutes les variables doivent ˆetre enti`eres (x ∈ Zn)
I En variables binaires : Toutes les variables doivent ˆetre binaires (x ∈ {0, 1}n)
I Mixte : Certaines variables peuvent ˆetre enti`eres ou binaires, les autre continues.
Dans ce cours, on se concentre sur les probl`emes lin´eaires en nombres entiers et en variables binaires
Mod`
ele de probl`
eme lin´
eaire en nombres entiers
(PLNE)
max x c > x s.c. Ax ≥ b x ∈ Zn avec c ∈ Rn, b ∈ Rm, A ∈ Rm×nI Relaxation continue : Remplacer la contrainte x ∈ Znpar
x ∈ Rn. On obtient un probl`eme lin´eaire (PL)
I La valeur de la solution de la relaxation est une borne sup´erieure sur la valeur de la solution du PLNE
I Tout point r´ealisable x ∈ Zn avec Ax ≥ b donne une borne inf´erieuresur la valeur de la solution du PLNE
Complexit´
e
I Un PLNE est souvent beaucoup plus difficile `a r´esoudre que sa relaxation continue
I Il arrive mˆeme que ce soit impossible `a faire dans un temps raisonnable : Voir le¸con #8(th´eorie de la complexit´e) : Le PLNE estN P-difficile
Id´
ees pour la r´
esolution
I Il arrive parfois que la solution de la relaxation soit enti`ere, i.e. les coordonn´ees du point extrˆeme optimal sont enti`eres I Dans ce cas, cette solution du PL est aussi la solution du
PLNE, car elle a donn´e `a la fois une borne sup´erieure et une borne inf´erieure
I Tous les probl`emes de flot sur un r´eseau ont une solution enti`ere si les donn´ees sont enti`eres
I En g´en´eral, arrondir la solution du PL ne fonctionne pas car une solution arrondie peut :
I Ne pas ˆetre r´ealisable pour le PLNE
Enveloppe convexe
I L’ensemble r´ealisable est l’intersection d’un poly`edre (en noir) et des points entiers dans ce poly`edre I L’enveloppe convexe(en
vert) est donn´ee par d’autres contraintes, mais d´efinit le mˆeme ensemble r´ealisable I La solution de la relaxation
correspondra alors `a la solution optimale du PLNE I Probl`eme. . .
1. Introduction
2. Mod´elisation
3. Algorithme d’´enum´eration implicite 4. Probl`eme du sac `a dos
5. R´esolution avec un solveur : Probl`eme d’affectation g´en´eralis´ee (GAP)
6. Extensions R´ef´erences
Introduction
Le but de cette section est de montrer des astuces afin que
certains cas puissent se mod´eliser `a l’aide d’un probl`eme lin´eaire en variables binaires
Ces cas sont :
I Conditions logiques
I Coˆut fixe
I S´election de k contraintes parmi m et de k variables parmi n I P´enalit´e pour ne pas respecter une contrainte
I Intervalles non connexes
Conditions logiques
I On ne peut pas exprimer de conditions logiques directement
(avec des si, sinon, alors, etc.), sinon le mod`ele n’est plus lin´eaire
I Les exemples suivants consid`erent des variables binaires I La condition x = 1 ⇔ y = 1 se mod´elise `a l’aide de la
contrainte x = y
I Pour les autres exemples, il est utile de se baser sur une table des valeurs possibles afin de d´eterminer les situations `a ´
Conditions logiques : x = 1 ⇒ y = 1
La ligne en rouge dans la table suivante correspond au cas `a ´eliminer : x y 0 0 0 1 1 0 1 1
On ajoute donc la contrainte
Conditions logiques : x = 0 ⇒ y = 1
La ligne en rouge correspond au cas `a ´eliminer :x y
0 0
0 1
1 0
1 1
On ajoute donc la contrainte
Conditions logiques : (x = 1 et y = 1) ⇒ z = 1
La ligne en rouge correspond au cas `a ´eliminer :x y z x + y − z 0 0 0 0 0 0 1 −1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 2 1 1 1 1
On ajoute donc la contrainte
Conditions logiques : (x = 1 ou y = 1) ⇒ z = 1
Les lignes en rouge correspondent aux cas `a ´eliminer :x y z −x + y − z x − y − z x + y − z 0 0 0 0 0 0 0 0 1 −1 −1 −1 0 1 0 1 −1 1 0 1 1 0 −2 0 1 0 0 −1 1 1 1 0 1 −2 0 0 1 1 0 0 0 2 1 1 1 −1 −1 1
On ajoute donc les contraintes −x + y − z ≤ 0 x − y − z ≤ 0 x + y − z ≤ 1
Mod´
elisation d’un coˆ
ut fixe
I Un objectif `a minimiser contient le terme Cx avec C un coˆut proportionnel `a la valeur de x
I On veut ajouter un coˆut fixe F lorsque x > 0 I On introduit une variable binaire y et :
I On ajoute le terme F y `a l’objectif : Cx → Cx + F y
I On ajoute la contrainte
x ≤ M y avec M une borne sup´erieure sur x
I S’il est avantageux d’avoir x > 0, alors automatiquement y vaudra 1 et on paiera le coˆut fixe. Sinon, y sera
S´
election de k contraintes parmi m
I On doit satisfaire au moins k contraintes parmi les m
contraintes du syst`eme d’in´egalit´es Ax ≤ b avec x, b ∈ Rn et
A ∈ Rm×n
I On introduit m variables binaires yi, i = 1, 2, . . . , m. On aura
yi = 1 si on permet `a la contrainte i d’ˆetre viol´ee, 0 sinon
I Les m in´egalit´e deviennent
Ax ≤ b → Ax ≤ b + M y
avec y ∈ {0, 1}m et M ∈ R suffisamment grand
I Puis, on ajoute la contrainte
m
P
i=1
yi≤ m − k (au moins k
S´
election de k variables parmi n
I On a n variables xi, i = 1, 2, . . . , n, telles que 0 ≤ x ≤ u,
avec u ∈ Rn
I On veut qu’au plus k des n variables puissent avoir une valeur strictement positive
I On introduit les n variables binaires yi, i = 1, 2, . . . , n, telles
que si yi= 1, xi > 0, et sinon xi= 0
I On change les bornes 0 ≤ xi ≤ ui → 0 ≤ xi ≤ uiyi,
i = 1, 2, . . . , n
I Puis, on ajoute la contrainte
n
P
i=1
P´
enalit´
e pour ne pas respecter une contrainte
I Pour un probl`eme de minimisation, on veut ajouter unep´enalit´e P si la contrainte a>x ≤ b est viol´ee, avec a, x ∈ Rn et b ∈ R
I On introduit la variable binaire y qui vaut 1 si la contrainte est viol´ee, et 0 sinon
I On ajoute le terme P y dans l’objectif I On modifie la contrainte :
a>x ≤ b → a>x ≤ b + M y
Intervalles non connexes (1)
I On veut que la variable x ∈ R soit ´egale `a 0 ou bien dans l’intervalle [`; u], avec `, u ∈ R
I On introduit la variable binaire y qui vaut 1 si x ∈ [`; u], et x = 0 sinon, en introduisant les contraintes
Intervalles non connexes (2)
I On veut que la variable x ∈ R soit ´egale `a 0, ou dans l’intervalle [200; 500], ou dans l’intervalle [700; 1000] I On introduit deux variables binaires y1, y2 et deux variables
continues x1, x2, et on ajoute les contraintes suivantes au
probl`eme : x = x1+ x2 y1+ y2 ≤ 1 200y1≤ x1 ≤ 500y1 700y2≤ x2 ≤ 1000y2 x1, x2 ∈ R y1, y2 ∈ {0, 1}
Intervalles non connexes (3)
I La variable x ∈ R ne peut prendre qu’une valeur comprise
dans l’ensemble {2, 3, 5, 7}
I On introduit 4 variables binaires y1, y2, y3, y4 et on ajoute les
contraintes x = 2y1+ 3y2+ 5y3+ 7y4 y1+ y2+ y3+ y4 = 1 y1, y2, y3, y4 ∈ {0, 1}
Fonctions lin´
eaires par morceaux (1/3)
On veut mod´eliser la fonction continue lin´eaire par morceaux suivante : f (x) = 0.5x + 5 si 0 ≤ x < 10 2x − 10 si 10 ≤ x < 15 0.2x + 17 si 15 ≤ x ≤ 40 5 7 9 11 13 15 17 19 21 23 25 0 5 10 15 20 25 30 35 40
Fonctions lin´
eaires par morceaux (2/3)
I On introduit trois variables continues x1, x2, x3 ∈ R et deux
variables binaires y1, y2∈ {0, 1}
I On ajoute les contraintes suivantes : 10y1 ≤ x1≤ 10 5y2 ≤ x2 ≤ 5y1 0 ≤ x3 ≤ 25y2
I La fonction par morceaux pourra s’exprimer par
fx = 5 + 0.5x1+ 2x2+ 0.2x3
Fonctions lin´
eaires par morceaux (3/3) : V´
erification
I Si y1= y2= 0 : I 0 ≤ x1≤ 10, x2= x3= 0 I x = x1∈ [0; 10] I fx= 5 + 0.5x1= 0.5x + 5 I Si y1= 0 et y2 = 1 : Impossible car 5 ≤ x2≤ 0 I Si y1= 1 et y2 = 0 : I x1= 10, x2∈ [0; 5], x3= 0 I x = 10 + x2∈ [10; 15] I fx= 5 + 5 + 2x2= 10 + 2x2= 10 + 2(x − 10) = 2x − 10 I Si y1= y2= 1 : I x1= 10, x2= 5, x3∈ [0; 25] I x = 15 + x3∈ [15; 40] I fx= 5 + 5 + 10 + 0.2x3= 20 + 0.2(x − 15) = 0.2x + 171. Introduction 2. Mod´elisation
3. Algorithme d’´enum´eration implicite
4. Probl`eme du sac `a dos
5. R´esolution avec un solveur : Probl`eme d’affectation g´en´eralis´ee (GAP)
6. Extensions R´ef´erences
Algorithme d’´
enum´
eration implicite
I Branch and Bound(B&B) [Land and Doig, 1960]
I L’algorithme est exact et garantit l’obtention de la solution optimale, mais en pratique cela peut prendre ´enorm´ement de temps
I R´esolution d’une s´erie de probl`emes lin´eaires, le premier ´etant la relaxation PL du PLNE
I Ces diff´erentes r´esolutions sont organis´ees dans unarbre de branchement
I A chaque r´` esolution, il y a deux ´etapes principales :
´
B&B : ´
Evaluation et s´
eparation (maximisation)
I Evaluation : R´´ esoudre la relaxation continue courante et end´eduire :
I Une borne sup´erieure
I Une borne inf´erieure, si possible. Par exemple si la solution de la relaxation courante est enti`ere, ou bien avec une heuristique I S´eparation :
I S´eparer (brancher) le probl`eme courant en plusieurs sous-probl`emes (typiquement deux)
I Par exemple : Si la relaxation courante donne xi= 2.3, cr´eer
deux sous-probl`emes avec la contrainte xi≤ 2 et xi≥ 3,
B&B : ´
Elagation
I L’arbre de branchement se construit au fur et `a mesure I Il existe plusieurs strat´egies pour le parcourir : Largeur
d’abord,profondeur d’abord, etc.
I On met `a jour en tout temps la solution et la meilleure valeur connue du PLNE
I A chaque nœud de cet arbre, on maintient des bornes` inf´erieures et sup´erieures. Chaque sous-probl`eme de ce nœud ne pourra g´en´erer de solutions en dehors de ces bornes I Ainsi, on peut d´ecider de ne pas explorer certaines parties de
l’arbre car on sait d´ej`a qu’on ne pourra pas faire mieux que la meilleure valeur connue jusqu’`a pr´esent : Principe de
B&B : Exemple
R´esoudre le PLNE avec un algorithme de B&B : max x1,x2 f (x1, x2) = 2x1+ 3x2 s.c. 4x1+ 12x2 ≤ 33 10x1+ 4x2 ≤ 35 x1, x2∈ N
B&B : Exemple : Premi`
ere relaxation
I Evaluation : R´´ esoudre la relaxation lin´eaire du PLNE :
I La solution du PL x = (2.769, 1.826) pour f (x) = 11.019 n’est pas enti`ere : ce n’est donc pas la solution optimale du probl`eme
I La valeur optimale (11.019) nous donne une borne sup´erieure pour la valeur optimale du PLNE, que l’on peut arrondir `a 11 car tous les coˆuts sont entiers
I S´eparation : On s´epare le probl`eme original en deux probl`emes.
I Ce branchement peut se faire sur x1 ou x2
I On choisit (arbitrairement) x1et on ajoute une nouvelle
B&B : Exemple : Probl`
emes I et II
Prob. I : max x1,x2 2x1+ 3x2 s.c. 4x1+ 12x2 ≤ 33 10x1+ 4x2 ≤ 35 x1 ≤ 2 x1, x2≥ 0 Prob. II : max x1,x2 2x1+ 3x2 s.c. 4x1+ 12x2 ≤ 33 10x1+ 4x2 ≤ 35 x1 ≥ 3 x1, x2≥ 0B&B : Exemple : Probl`
emes III et IV
Le deuxi`eme branchement sur x2, sous le nœud du probl`eme I,
donne les probl`emes III et IV suivants :
Prob. III : max
x1,x2 2x1+ 3x2 s.c. 4x1+ 12x2 ≤ 33 10x1+ 4x2 ≤ 35 x1 ≤ 2 x2 ≤ 2 x1, x2 ≥ 0 Prob. IV : max x1,x2 2x1+ 3x2 s.c. 4x1+ 12x2 ≤ 33 10x1+ 4x2 ≤ 35 x1 ≤ 2 x2 ≥ 3 x1, x2 ≥ 0
B&B : Exemple : Fin
I Nous ne s´eparerons pas le Probl`eme III puisque sa solution optimale est enti`ere
I Nous pourrions s´eparer le Probl`eme II (en ajoutant la contrainte x2 ≤ 1 ou x2 ≥ 2) mais c’est inutile :
I Brancher sous le Prob. II ne peut que mener `a une solution de valeur de l’objectif ≤ 9
I Puisque nous avons d´ej`a un point entier de valeur 10, il n’y a donc pas de meilleur point entier dans l’ensemble r´ealisable du Prob. II
I Arrˆet de l’algorithme : il n’y a plus de nœud `a r´esoudre : La solution optimale est obtenue : x∗ = (2, 2) avec f (x∗) = 10
1. Introduction 2. Mod´elisation
3. Algorithme d’´enum´eration implicite
4. Probl`eme du sac `a dos
5. R´esolution avec un solveur : Probl`eme d’affectation g´en´eralis´ee (GAP)
6. Extensions R´ef´erences
Mod`
ele
max x1,x2,...,xn n X i=1 uixi s.c. n P i=1 wixi ≤ W x ∈ {0, 1}nI Chaque variable correspond `a un objet que l’on prend ou pas dans le sac
I ui> 0 : Utilit´e de l’objet i ; wi > 0 : Poids de l’objet i
I W : Capacit´e du sac (telle que W <Pn
i=1wi)
I On suppose que les objets sont ordonn´es selon les ratios ui/wi
d´ecroissants : u1 w1 ≥ u2 w2 ≥ . . . ≥ un wn
Relaxation (borne sup.)
Il n’est pas n´ecessaire de r´esoudre le PL avec une m´ethode g´en´erique car la solution peut ˆetre obtenue avec la simple proc´edure suivante :
1. Sachant que les objets sont ordonn´es selon des ui/wi
d´ecroissants, trouver l’indice k tel quePk
i=1wi≤ W et Pk+1 i=1wi> W 2. Poser xi = 1 pour 0 ≤ i ≤ k xk+1= W −Pk i=1wi wk+1 xi = 0 pour k + 2 ≤ i ≤ n
La valeur de la relaxation (borne sup.) est z = $ k X i=1 ui+ uk+1xk+1 %
Heuristique gloutonne (borne inf.)
1. Trouver l’indice k tel que Pki=1wi ≤ W etPk+1i=1 wi > W
2. Poser
xi= 1 pour 0 ≤ i ≤ k
xi= 0 pour k + 1 ≤ i ≤ n
3. Am´elioration : S’il existe un indice ` ∈ [k + 1; n] tel que
Pk
i=1wi+ w` ≤ W , alors poser x` = 1
Cette heuristique donne un point r´ealisable pour le sac `a dos, et donc une borne inf´erieure `a sa valeur optimale. Cette borne est z = k P i=1 ui ou k P i=1 ui+ u` si ` existe
R´
esolution par B&B sur exemple
On consid`ere l’instance suivante :max
x∈{0,1}520x1+ 17x2+ 14x3+ 27x4+ 16x5
s.c. 7x1+ 6x2+ 5x3+ 10x4+ 7x5 ≤ 22
o`u les ratios ui/wi sont bien ordonn´es :
2.86 > 2.83 > 2.8 > 2.7 > 2.29
Note : La r´esolution par programmation dynamique sera vue `a la
Exemple B&B : nœud racine
I La premi`ere relaxation donne : x1 = x2= x3 = 1, x4 = 0.4,
x5= 0, pour z = b61.8c = 61
I La premi`ere borne inf. est obtenue avec x1= x2 = x3 = 1,
x4= x5 = 0, pour z = 51
I On branche ensuite sur la variable fractionnaire x4 avec
x4= 0 et x4 = 1
I Les ac´etates suivantes d´ecrivent une exploration en profondeur d’abord, puis en largeur d’abord
1. Introduction 2. Mod´elisation
3. Algorithme d’´enum´eration implicite 4. Probl`eme du sac `a dos
5. R´esolution avec un solveur : Probl`eme d’affectation
g´en´eralis´ee (GAP)
6. Extensions R´ef´erences
Pr´
esentation du GAP [Wolsey, 1998]
I On assigne des tˆaches `a des individusI Chaque tˆache consomme une ressource (temps, argent, etc.)
I La quantit´e de ressource consomm´ee sera diff´erente selon l’individu qui aura cette tˆache
I Chaque tˆache doit ˆetre accomplie par un (et seulement un) individu
I Un individu peut ˆetre assign´e `a plus d’une tˆache pourvu qu’il ait suffisamment de ressources `a sa disposition
I Il y a un profit associ´e `a l’affectation d’une tˆache `a un individu. Ce profit est diff´erent pour chacun
I On souhaite trouver l’affectation optimale qui respecte les contraintes d’usage des ressources
Param`
etres et variables
I Indices :I i ∈ I = {1, 2, . . . , m} (tˆaches)
I j ∈ J = {1, 2, . . . , n} (individus) I Param`etres :
I cij : Profit obtenu quand on associe la tˆache i `a l’individu j
I aij : Ressource consomm´ee quand on associe la tˆache i `a
l’individu j
I bj : Ressource disponible pour l’individu j
I Variables :
Mod`
ele
max x X i∈I X j∈J cijxij s.c. P j∈J xij = 1 i ∈ I P i∈I aijxij ≤ bj j ∈ J xij ∈ {0, 1} i ∈ I, j ∈ JR´
esolution avec le solveur Excel (1)
I Voir fichier GAP.xlsx
I Le processus de solution peut ˆetre relativement long (' 10 sec)
I On peut l’acc´el´erer en ajoutant des contraintes qui ´eliminent des solutions que l’ont sait irr´ealisables
R´
esolution avec le solveur Excel (2)
I Puisqu’un employ´e ne peut prendre en charge plus d’une tˆache qui demande plus de la moiti´e de ses ressources, nous pouvons ajouter les contraintes suivantes :
x11+ x21+ x41+ x71+ x81+ x91+ x10,1 ≤ 1 x22+ x32+ x62+ x72+ x82+ x10,2 ≤ 1 x43+ x53+ x63+ x73+ x83+ x93+ x10,3 ≤ 1 x14+ x44+ x64+ x74+ x94+ x10,4 ≤ 1 x15+ x25+ x65+ x85 ≤ 1
I La solution du nouveau probl`eme peut ˆetre obtenue en ' 2 secondes
R´
esolution avec le solveur Excel (3)
I On ´etend le mˆeme principe afin d’ajouter de nouvelles contraintes que l’on sait que la solution doit satisfaire I Ainsi, pour chaque employ´e, on s´electionne des ensembles de
tˆaches qui ne peuvent s’effectuer ensemble
I La solution du nouveau probl`eme devient instantan´ee
Ces in´egalit´es sont donc cruciales pour une r´esolution efficace. Ce sont desin´egalit´es valides, `a la base des algorithmes de type
1. Introduction 2. Mod´elisation
3. Algorithme d’´enum´eration implicite 4. Probl`eme du sac `a dos
5. R´esolution avec un solveur : Probl`eme d’affectation g´en´eralis´ee (GAP)
6. Extensions
Extensions
I Th´eorie poly´edrale (faces, facettes, etc.) I Dualit´e lagrangienne
I Familles de coupes / in´egalit´es valides (coupes de Chv´atal-Gomory, coupes disjonctives, etc.)
I Algorithme Branch and cut
I Cas non-lin´eaire I M´etaheuristiques I Th´eorie des graphes I Solveurs :
I OL entier/binaire/mixte : CPLEX, Gurobi, etc.
1. Introduction 2. Mod´elisation
3. Algorithme d’´enum´eration implicite 4. Probl`eme du sac `a dos
5. R´esolution avec un solveur : Probl`eme d’affectation g´en´eralis´ee (GAP)
6. Extensions
R´
ef´
erences I
Audet, C. (2001).
Notes de cours, MTH6404, Programmation en nombres entiers. Land, A. and Doig, A. (1960).
An Automatic Method of Solving Discrete Programming Problems.
Econometrica, 28(3) :497–520.
Wolsey, L. (1998). Integer programming.
Wiley-Interscience series in discrete mathematics and optimization. J. Wiley & sons, New York (N.Y.), Chichester, Weinheim.