Optimisation en nombres entiers Recherche Opérationnelle GC-SIE
Branch & bound
Michel Bierlaire3 Algorithmes On distingue 3 types dalgorithmes 1. Algorithmes exacts – Ils trouvent la solution optimale – Ils peuvent prendre un nombre exponentiel ditérations 2. Algorithmes dapproximation – Ils produisent une solution sous-optimale. – Ils produisent une mesure de qualité de la solution. – Ils ne prennent pas un nombre exponentiel ditérations.
Branch & boundMichel Bierlaire4 Algorithmes 3. Algorithmes heuristiques – Ils produisent une solution sous-optimale. – Ils ne produisent pas de mesure de qualité de la solution. – En général, ils ne prennent pas un nombre exponentiel ditérations. – On observe empiriquement quils trouvent une bonne solution rapidement.
Branch & boundMichel Bierlaire5 Relaxation Soit un programme linéaire mixte en nombres entiers min c T x + d T y + e T z s.c. Ax + By + Cz = b x,y,z 0 y entier z {0,1}
Branch & boundMichel Bierlaire6 Relaxation Le programme linéaire min c T x + d T y + e T z s.c. Ax + By + Cz = b x,y 0 0 z 1 est appelé sa relaxation linéaire.
Branch & boundMichel Bierlaire7 Branch & Bound Idées : Diviser pour conquérir Utilisation de bornes sur le coût optimal pour éviter dexplorer certaines parties de lensemble des solutions admissibles.
Branch & boundMichel Bierlaire8 Branch & Bound Branch Soit F lensemble des solutions admissibles dun problème min c T x s.c. x F On partitionne F en un une collection finie de sous-ensembles F 1,…,F k. On résout séparément les problèmes min c T x s.c. x F i Par abus de langage, ce problème sera appelé F i également.
Branch & boundMichel Bierlaire9 Branch & Bound Représentation : F F1F1 F2F2 FkFk
Branch & boundMichel Bierlaire10 Branch & Bound A priori, les sous-problèmes peuvent être aussi difficiles que le problème original. Dans ce cas, on applique le même système. On partitionne le/les sous- problèmes.
Branch & boundMichel Bierlaire11 Branch & Bound F F1F1 F2F2 FkFk F 21 F 22 F 2m F 211 F 212 F 21n
Branch & boundMichel Bierlaire12 Branch & Bound Bound : On suppose que pour chaque sous- problème min c T x s.c. x F i on peut calculer efficacement une borne inférieure b(F i ) sur le coût optimal, i.e. b(F i ) min x F i c T x Typiquement, on utilise la relaxation linéaire pour obtenir cette borne
Branch & boundMichel Bierlaire13 Branch & Bound Algorithme général : A chaque instant, on maintient – une liste de sous-problèmes actifs, – le coût U de la meilleure solution obtenue jusqualors. – Valeur initiale de U : soit, soit c T x pour un x admissible connu.
Branch & boundMichel Bierlaire14 Branch & Bound Algorithme général (suite): Une étape typique est : 1. Sélectionner un sous-problème actif F i 2. Si F i est non admissible, le supprimer. Sinon, calculer b(F i ). 3. Si b(F i ) U, supprimer F i. 4. Si b(F i ) < U, soit résoudre F i directement, soit créer de nouveaux sous-problèmes et les ajouter à la liste des sous- problèmes actifs.
Branch & boundMichel Bierlaire15 Branch & Bound Soit le problème F en forme canonique min x 1 – 2x 2 s.c. -4x 1 + 6x 2 9 x 1 + x 2 4 x 1, x 2 0 x 1, x 2 entiers
Branch & boundMichel Bierlaire16 Branch & Bound b(F i ) sera le coût optimal de la relaxation linéaire. Si la solution de la relaxation est entière, pas besoin de partitionner le sous- problème. Sinon, on choisit un x* i non entier, et on crée deux sous-problèmes en ajoutant les contraintes : x i x* i et x i x* i Ces contraintes sont violées par x*.
Branch & boundMichel Bierlaire17 Branch & Bound U = + Liste des sous-problèmes actifs : {F} Solution de la relax. de F : x* = (1.5,2.5) b(F) = -3.5 Création des sous-problèmes en rajoutant les contraintes x 2 x* 2 = 2 x 2 x* 2 = 3
Branch & boundMichel Bierlaire18 Branch & Bound F1F1 F2F2 min x 1 – 2x 2 s.c. -4x 1 + 6x 2 9 x 1 + x 2 4 x 1, x 2 0 x 2 3 x 1, x 2 entiers min x 1 – 2x 2 s.c. -4x 1 + 6x 2 9 x 1 + x 2 4 x 1, x 2 0 x 2 2 x 1, x 2 entiers Liste des sous-problèmes actifs : {F,F 1,F 2 }
Branch & boundMichel Bierlaire19 Branch & Bound 1 - 4x 1 +6x 2 9 x 1 +x 2 4 x 2 3 x 2 2 F 1 non admissible Liste des sous-problèmes actifs : {F,F 2 } (0.75,2)
Branch & boundMichel Bierlaire20 Branch & Bound U = + Liste des sous-problèmes actifs : {F,F 2 } Solution de la relax. de F 2 : x* = (0.75,2) b(F 2 ) = Création des sous-problèmes en rajoutant les contraintes x 1 x* 1 = 0 x 1 x* 1 = 1
Branch & boundMichel Bierlaire21 Branch & bound F 21 F 22 min x 1 – 2x 2 s.c. -4x 1 + 6x 2 9 x 1 + x 2 4 x 1, x 2 0 x 2 2 x 1 1 x 1, x 2 entiers min x 1 – 2x 2 s.c. -4x 1 + 6x 2 9 x 1 + x 2 4 x 1, x 2 0 x 2 2 x 1 0 x 1, x 2 entiers
Branch & boundMichel Bierlaire22 Branch & Bound 1 - 4x 1 +6x 2 9 x 1 +x 2 4 x 2 2 Liste des sous-problèmes actifs : {F,F 2,F 21,F 22 } x 1 0 x 1 1 F 21 (1,2) F 22 (0,1.5)
Branch & boundMichel Bierlaire23 Branch & Bound U = + Liste des sous-problèmes actifs : {F,F 2, F 21, F 22 } Solution de la relax. de F 21 : x* = (1,2) (1,2) est solution de F 21 b(F 21 ) = -3 U = -3
Branch & boundMichel Bierlaire24 Branch & Bound U = -3 Liste des sous-problèmes actifs : {F, F 2, F 22 } Solution de la relax. de F 22 : x* = (0,1.5) b(F 22 ) = -3 U Liste des sous-problèmes actifs : {F, F 2 } Solution de F 2 = (1,2) Solution de F = (1,2).
Branch & boundMichel Bierlaire25 Branch & Bound F F1F1 F2F2 F 21 F 22 Non adm. x* = (0.75,2) b(F 2 ) = x 2 3 x 2 2 x 1 0 x 1 1 x* = (1,2) b(F 21 ) = -3 x* = (0,1.5) b(F 22 ) = -3 x* = (1.5,2.5) b(F) = -3.5
Branch & boundMichel Bierlaire26 Branch & Bound Problème binaire du sac à dos Deux simplifications 1. Les variables sont binaires. 2. La relaxation linéaire peut être résolue efficacement par un algorithme glouton: prendre dabord les articles à meilleur rendement, jusquà atteindre la capacité.
Branch & boundMichel Bierlaire27 Branch & Bound Une société dispose de F à investir. Les experts proposent 4 investissements possibles Bénéfice Inv Inv Inv Inv. 1 RendementCoût
Branch & boundMichel Bierlaire28 Branch & Bound Relaxation de F (U=- ) : Bénéfice Inv Inv Inv Inv. 1 RendementCoût Relaxation de F : x*=(1,1,0.5,0) b(F) = > U (! On maximise) F 1 : x 3 = 1 F 2 : x 3 =
Branch & boundMichel Bierlaire29 Branch & Bound F F2F2 F1F1 x 3 =1x 3 =0
Branch & boundMichel Bierlaire30 Branch & Bound Relaxation de F 1 (U=- ) : Bénéfice Inv Inv Inv Inv. 1 RendementCoût 1 1 5/7 0 Relaxation de F 1 : x*=(1,5/7,1,0) b(F 1 ) = > U F 11 : x 2 = 0 F 12 : x 2 = 1
Branch & boundMichel Bierlaire31 Branch & Bound F F2F2 F1F1 F 11 F 12 x 3 =1x 3 =0 x 2 =0 x 2 =1
Branch & boundMichel Bierlaire32 Branch & Bound Relaxation de F 11 (U=- ) : Bénéfice Inv Inv Inv Inv. 1 RendementCoût Relaxation de F 11 : x*=(1,0,1,1) b(F 11 ) = > U U =
Branch & boundMichel Bierlaire33 Branch & Bound F F2F2 F1F1 F 11 F 12 x 3 =1x 3 =0 x 2 =0 x 2 =
Branch & boundMichel Bierlaire34 Branch & Bound Relaxation de F 12 (U 11 = ) : Bénéfice Inv Inv Inv Inv. 1 RendementCoût 3/ Relaxation de F 12 : x*=(3/5,1,1,0) b(F 12 ) = > U F 121 : x 1 = 0 F 122 : x 1 = 1
Branch & boundMichel Bierlaire35 Branch & Bound F F2F2 F1F1 F 11 F 12 F 121 F 122 x 3 =1x 3 =0 x 2 =0 x 2 =1 x 1 =0x 1 =
Branch & boundMichel Bierlaire36 Branch & Bound Relaxation de F 121 (U 11 = ) : Bénéfice Inv Inv Inv Inv. 1 RendementCoût Relaxation de F 121 : x*=(0,1,1,1) b(F 121 ) = > U U =
Branch & boundMichel Bierlaire37 Branch & Bound F F2F2 F1F1 F 11 F 12 F 121 F 122 x 3 =1x 3 =0 x 2 =0 x 2 =1 x 1 =0x 1 =
Branch & boundMichel Bierlaire38 Branch & Bound Relaxation de F 122 (U 121 = ) : Bénéfice Inv Inv Inv Inv. 1 RendementCoût ? Relaxation de F 122 : non admissible Supprimer F 122
Branch & boundMichel Bierlaire39 Branch & Bound F F2F2 F1F1 F 11 F 12 F 121 F 122 x 3 =1x 3 =0 x 2 =0 x 2 =1 x 1 =0x 1 =
Branch & boundMichel Bierlaire40 Branch & Bound Relaxation de F 2 (U 121 = ) : Bénéfice Inv Inv Inv Inv. 1 RendementCoût /3 Relaxation de F 2 : x*=(1,1,0,2/3) b(F 2 ) = > U F 21 : x 4 = 0 F 22 : x 4 = 1
Branch & boundMichel Bierlaire41 Branch & Bound F F2F2 F1F1 F 21 F 22 F 11 F 12 F 121 F 122 x 3 =1x 3 =0 x 2 =0 x 2 =1 x 1 =0x 1 =1 x 4 =0x 4 =
Branch & boundMichel Bierlaire42 Branch & Bound Relaxation de F 21 (U 121 = ) : Bénéfice Inv Inv Inv Inv. 1 RendementCoût Relaxation de F 21 : x*=(1,1,0,0) b(F 21 ) = U Supprimer F 21
Branch & boundMichel Bierlaire43 Branch & Bound F F2F2 F1F1 F 21 F 22 F 11 F 12 F 121 F 122 x 3 =1x 3 =0 x 2 =0 x 2 =1 x 1 =0x 1 =1 x 4 =0x 4 =
Branch & boundMichel Bierlaire44 Branch & Bound Relaxation de F 22 (U 121 = ) : Bénéfice Inv Inv Inv Inv. 1 RendementCoût 1 0 6/7 1 Relaxation de F 22 : x*=(1,6/7,0,1) b(F 22 ) = > U F 221 : x 2 = 0 F 222 : x 2 = 1
Branch & boundMichel Bierlaire45 Branch & Bound F F2F2 F1F1 F 21 F 22 F 11 F 12 F 121 F 122 F 221 F 222 x 3 =1x 3 =0 x 2 =0 x 2 =1 x 1 =0x 1 =1 x 4 =0x 4 =1 x 2 =0x 2 =
Branch & boundMichel Bierlaire46 Branch & Bound Relaxation de F 221 (U 121 = ) : Bénéfice Inv Inv Inv Inv. 1 RendementCoût Relaxation de F 221 : x*=(1,0,0,1) b(F 221 ) = U Supprimer F 221
Branch & boundMichel Bierlaire47 Branch & Bound F F2F2 F1F1 F 21 F 22 F 11 F 12 F 121 F 122 F 221 F 222 x 3 =1x 3 =0 x 2 =0 x 2 =1 x 1 =0x 1 =1 x 4 =0x 4 =1 x 2 =0x 2 =
Branch & boundMichel Bierlaire48 Branch & Bound Relaxation de F 222 (U 121 = ) : Bénéfice Inv Inv Inv Inv. 1 RendementCoût 4/ Relaxation de F 222 : x*=(4/5,1,0,1) b(F 222 ) = U F 2221 : x 1 = 0 F 2222 : x 1 = 1
Branch & boundMichel Bierlaire49 Branch & Bound Relaxation de F 222 (U 121 = ) : Bénéfice Inv Inv Inv Inv. 1 RendementCoût ? Relaxation de F 2221 : x*=(0,1,0,1) b(F 2221 ) = U F 2222 non admissible
Branch & boundMichel Bierlaire50 Branch & Bound F F2F2 F1F1 F 21 F 22 F 11 F 12 F 121 F 122 F 221 F 222 x 3 =1x 3 =0 x 2 =0 x 2 =1 x 1 =0x 1 =1 x 4 =0x 4 =1 x 2 =0x 2 =
Branch & boundMichel Bierlaire51 Branch & Bound Notes : Seuls 7 combinaisons ont été considérées (F 11,F 121,F 122,F 21,F 221,F 2221,F 2222 ) Une énumération complète aurait considéré 2 4 =16 combinaisons