Introduction à la programmation en variables entières Cours 3 P. Pesneau pierre.pesneau@math.u-bordeaux1.fr Université Bordeaux 1 Bât A33 - Bur 265
Sommaire Arbre d énumération 1 Arbre d énumération 2 3
Approche des problèmes combinatoires Reconnaître les problèmes faciles. Exploiter la frontière de complexité : hypothèses simplificatrices sur les données. décomposition. Calculer (se contenter) de solutions approchées. Développer des énumérations intelligentes basées sur des estimations de la valeur optimale.
Arbre d énumération L arbre est généralement représenté avec sa racine en heut et son feuillage en bas. La racine de l arbre représente le problème initial. Une branche représente une restriction spécifique sur les solutions Un nœud intermédiaire représente un sous-problème, c est-à-dire le problème initial restreint au sous-ensemble de solutions définit par les branches menant à ce nœud. Une feuille représente un sous-problème conquis (un sous-problème pour lequel on a une solution optimale).
Règle de branchement Pour un problème d optimisation combinatoire donné, l arbre d énumération n est pas unique. Il dépend de la règle de branchement choisie. Une règle de branchement définit : le type de restriction que l on va appliquer aux branche de l arbre. l ordre dans lequel on va considérer ces restrictions.
Règle de branchement Soit X 0 l espace des solutions associé à un nœuds. Un branchement doit diviser X en sous-ensembles X 1,...,X k tels que : X i X j pour i,j = 0,...,k, X 0 = k i=1 X i. Pour qu une règle de branchement soit efficace, il est préférable qu elle satisfasse les conditions suivantes : X i X j = pour i,j = 1,...,k, k ne doit pas être trop grand (au pire en O(n)). Si k = 2, on dit qu on a un arbre de branchement binaire.
Exemples d arbres d énumération Problème de sac-à-dos : Règle de branchement : On choisit un objet et on décide ou non de le prendre. On considère les objets dans l ordre décroissant de leur utilité. Problème du voyageur de commerce : Règle de branchement 1 : On choisit une position dans le circuit à laquelle on n a pas affecté de ville et on y place les differentes villes possibles. On considère les positions dans l ordre croissant. Règle de branchement 2 : On choisit deux villes i et j et on décide ou non si l on va directement de la ville i à la ville j. On considère les paires de villes dans l ordre croissant de leur distances.
Sommaire Arbre d énumération 1 Arbre d énumération 2 3
Algorithme de Appelé aussi algorithme de séparation et évaluation. Le principe de la méthode consiste à construire nœud par nœud l arbre d énumération tout en faisant usage de bornes (primales et duales) afin d éviter la génération de tous les nœuds de l arbre. Mécanismes : Séparer (Brancher, Branch) : Diviser les problèmes en sous-problèmes ( diviser pour règner ). Evaluer (Borner, Bound) : Calculer une estimation de la solution optimale d un sous-problème. Le calcul d une bonne solution réalisable (borne primale) est un élément qui peut se révéler important.
Du bon usage des bornes Borne primale : toute solution réalisable va donner une borne primale sur la solution optimale du problème initial. Borne duale : à chaque sous-problème (nœud de l arbre d énumération), on va calculer une borne duale (une estimation) de la solution optimale du sous-problème, c est-à-dire sur l ensemble des solutions satisfaisant aux restrictions imposées par l arbre de d énumération.
Du bon usage des bornes A chaque étape de l algorithme, on va traiter un nœud de l arbre : on va créer les nœuds fils du nœud dans l arbre d énumération et on va évaluer chacun de ces nœuds fils. La borne duale associée à chaque nœud va donner une indication du nœud où pourrait se trouver la solution optimale. Elle donne donc un ordre dans lequel traiter les nœuds. La combinaison de bornes duales et de bornes primales va nous permettre d éviter de traiter tous les nœuds : un nœud dont la borne duale est moins bonne que la borne primale (plus grande pour un problème de minimisation, plus petite pour un problème de maximisation) ne peut pas contenir la solution optimale. Il n est donc pas nécessaire de le traiter.
Evaluation des nœuds Une bonne évaluation des nœuds est importante : elle va permettre de bien organiser l ordre de traitement des nœuds. plus cette évaluation sera précise, plus elle permettra de couper l arbre d énumération. mais attention à ce que cette évaluation ne soit pas trop longue à calculer. Pour cela la règle de branchement d un algorithme de est très liée à l évaluation des nœuds : Les restrictions imposées par la règle de branchement doivent avoir un impact non négligeable sur l évaluation des nœuds fils. De plus, un nœud dont on connaît la solution optimale (soit parce que le nœud est réduit à cette solution, soit parce que la borne duale est également réalisable) n a plus besoin d être traité.
Exemple Arbre d énumération
Sommaire Arbre d énumération 1 Arbre d énumération 2 3
Comment implémenter un en programmation linéaire en nombres entiers? Z PLNE = max{cx : Ax b,x 0,x Z}, Evaluation : relaxation linéaire du PLNE. Revient à résoudre un PL. Règle de branchement : Choisir une variable ˆx i fractionnaire dans la solution de la relaxation linéaire. Créer deux sous-problèmes : Le premier en ajoutant la contrainte x i ˆx i, Le second en ajoutant la contrainte x i ˆx i. S il y a plusieurs variables fractionnaires, choisir, par exemple, la plus fractionnaire.
Exemple Arbre d énumération max 17x 1 + 12x 2 t.q. 10x 1 + 7x 2 40 x 1 + x 2 5 x 1, x 2 0 x 1, x 2 N
Autres possibilités Evaluation : Relaxation linéaire (bien choisir sa formulation) Autre type de relaxation Règles de branchement : Variable la plus fractionnaire Brancher sur des contraintes Parcours de l arbre : meilleure borne (limiter le nombre de nœuds) parcours en profondeur (émergence de solution entières + économie pour la réoptimisation) Usage d heuristique : au départ à chaque nœud de l arbre
Qualité de formulation d un PLNE Contrairement à la PL, un problème entier peut généralement se formuler de differentes manières. Une bonne formulation est une formulation pour laquelle le polyèdre associé à la relaxation linéaire est serré. Avec une bonne formulation, la relaxation linéaire du problème donne une bonne borne duale et eventuellement une bonne approximation de la solution entière (heuristique d arrondi). Attention, une formulation trop précise, peut être coûteuse à calculer (trop de contraintes, trop de variables).