Algorithmes Branch & Bound

Slides:



Advertisements
Présentations similaires
La recherche de chemin optimal
Advertisements

Algorithmes et structures de données avancés
Introduction à l’Algorithmique
Système formel Nous avons introduit : signes de variables (x, y, z, …), de constantes (0, 1), d’opérations (+, ), de relations (=, ) Axiomes : ce sont.
A.Faÿ 1 Recherche opérationnelle Résumé de cours.
INTRODUCTION.
Ordonnancement des mouvements de deux robots
Plus rapide chemin bicritère : un problème d’aménagement du territoire
Chapitre II.Rappels mathématiques et complexité
MasterMind en spécialité i.s.n.
Génération de colonnes
S.T.S. S.I.O. 1ère année La gestion de projets
Conception et analyse des algorithmes
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Introduction à l’algorithmique
Les jeux (méthodes min-max et -)
Algorithmes Branch & Bound
Heuristiques A. Introduction B. Recherche d ’une branche
ASI 3 Méthodes numériques pour l’ingénieur
Journée thématique du GDR IFS « Réduction de modèle en IFS » ENSAM – Jeudi 18 mai 2006 Validation de l’approche de la réduction a priori - POD sur l'équation.
Programmation linéaire
GPA750 – Ordonnancement des systèmes de production aéronautique
Optimisation linéaire
Méthode des k plus proches voisins
Rappel... Solution itérative de systèmes linéaires (suite et fin).
LES ARBRES IUP 2 Génie Informatique
Structures de données IFT-2000
Inéquations du 1er degré
GPA 750 Chapitre 3 : Les méthodes d’ordonnancement génériques
GPA750 Les ateliers multigammes Chapitre 5
Programmation linéaire en nombres entiers Algorithme de la subdivision successive («Branch and Bound Algorithm»)
Courbes de Bézier.

Algorithmes d ’approximation
Deux méthodes incrémentales pour le maintien dun arbre de connexion Nicolas Thibault Christian Laforest
Optimisation en nombres entiers Recherche Opérationnelle GC-SIE.
Introduction aux problèmes d'ordonnancement sans temps-morts.
Programmation dynamique
GPA750 – Gestion de Projets
ASI 3 Méthodes numériques pour l’ingénieur

8INF8061 Conception et analyse des algorithmes Comment comparer deux problèmes?
Programmation linéaire en nombres entiers : les méthodes de troncature
Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK.
Modélisation géométrique de base

ASI 3 Méthodes numériques pour l’ingénieur
Introduction Objet de la programmation mathématique, construction d'un modèle mathématique, problème général de programmation mathématique et classification,
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Exploration systématique de graphes
Coupes efficaces pour la relaxation lagrangienne
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
INTRODUCTION.
Programmation linéaire en nombres entiers
Présentation du marché obligataire
Complexité des Problèmes Combinatoires Module IAD/RP/RO/Complexité Philippe Chrétienne.
Le problème central de l’ordonnancement (les plus longs chemins)
Arbres binaires et tables de hachage
I.A. Session 2009/2010 E.P.S.I. Bordeaux – C.S.I.I – 2 ème Année – Cours n°6.
Exploration systématique de graphes
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
Problème de double digestion
Programmation dynamique

Le Jeu et l’intelligence artificielle
Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne.
Techniques d'Optimisation Master
1 UE Intro. Optimisation L3 INFO UPSud II. Programmation linéaire en variables entières (ou mixtes)
Transcription de la présentation:

Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne

Algorithmes Branch & Bound Cadre général d ’application. Arborescence valide. Opérations sur les arborescences valides: (troncature, séparation, évaluation, ajustement) Règles de dominance Un problème d ’ordonnancement sur une machine: Minimiser la somme des retards

Cadre général d ’application Méthode très générale d ’énumération intelligemment guidée. Cadre général: Opt{f(x)xX} où: Opt= Min ou Max, X est l ’ensemble fini des solutions d ’un problème, f(x) est la valeur de la fonction objectif pour la solution x. Remarque: X est fini mais très grand (exponentiel en la taille du problème) Exemple: TSP Donnée: D=[d(i,j)] est la matrice des distances entre les n villes X est l ’ensemble des (n-1) tours (i1,i2,…,in,i1) Min{f(i1,i2,…,in,i1)=d(i1,i2)+d(i2,i3)+…+d(in-1,in)+d(in,i1)}

Principe général: Faire évoluer un recouvrement de l ’espace des solutions, (représenté par une arborescence valide) jusqu ’à ce que tous les sommets de l ’arborescence soient marqués «éliminés ». Le calcul de cette suite d ’arborescences valides utilise: 1) des fonctions d ’évaluation par excès et par défaut de sous-ensembles des solutions, 2) des régles de séparation de sous-ensembles de solutions, 3) des règles de dominance entre sous-ensembles de solutions.

Arborescence valide Notations: f*=Min{f(x)xX} est la valeur d ’une solution optimale f+ est une évaluation par excès de f* Une arborescence valide est une arborescence dont les feuilles représentent le recouvrement courant. Compte-tenu de la valeur courante de f + et de l ’évaluation par défaut de la meilleure solution associée à une feuille, certaines feuilles sont marquées « éliminées » car le sous- ensemble de solutions qu ’elles représentent ne peut contenir de solution optimale.

10 20 13 15 20 17  20 18 16 19 19 16 17 22 18  19 21   En bleu: valeur de la meilleure solution connue En rouge: borne inférieure des solutions associées au noeud Valeur de la solution optimale : 17

A est une arborescence valide pour f + si: 1) les sommets de A correspondent à des parties de X; (on note X(s) la partie de X représentée par le sommet s de A), 2) la racine r de A correspond à X (soit X(r)=X); 3) si le sommet s a pour successeurs s1, s2, … ,sj, alors: X(s)=X(s1)X(s2)  … X(sj); 4) Certains sommets de A peuvent être marqués « éliminés »; 5) Si f*< f +, alors A possède une feuille non éliminée contenant une solution optimale; 6) A toute feuille s de A est associée un nombre g(s) qui est une évaluation par défaut de la meilleure solution de X(s).

Opérations sur les arborescences valides Troncature: Eliminer une feuille. Séparation: Définir des successeurs s1, … ,sp pour une feuille s de A tels que X(s)=i {1..p}X(si); on pose alors g(si)=g(s). Evaluation: Calculer pour une feuille s une nouvelle valeur de l ’évaluation par défaut g(s) strictement plus grande. Ajustement: Calculer une solution x+ telle que f(x+)<f + et donner à f+ la valeur f(x+)

Algorithme Branch & Bound: Suite finie d ’opérations de troncature, séparation, évaluation ou ajustement - à partir de l ’arborescence réduite à sa racine (arborescence valide pour f + = + et g(X) = -  (ou mieux) - telle que toutes les feuilles de la dernière arborescence valide sont éliminées. Remarque: Pour l ’arborescence valide finale, on a nécessairement f +=f * (propriété (5) des arborescences valides). Troncatures induites par les évaluations et les ajustements. Soit A une arborescence valide et soit s une feuille de A. 1) Si g(s)>f +=f(x+) , alors on peut éliminer s. 2) Si on peut démontrer que xX(s), f(x)≥f + , alors on peut éliminer s.

Règles de dominance Les règles de dominance fournissent des conditions suffisantes pour éliminer des sommets de l ’arborescence valide en cours. Elles sont de 2 types: Soit s une feuille d ’une arborescence valide A. S ’il existe X ’ X(s) tel que xX(s),  x ’X ’: f(x ’)≤f(x) , alors on peut 1) séparer s en u et v tels que X(u)=X ’ et X(v)=X(s)\X ’, 2) éliminer v. Soient u et v deux feuilles d ’une arborescence valide A. Si xX(u),  yX(v): f(y)≤f(x) , alors on peut éliminer u.

Principe de séparation Soit s une feuille d ’une arborescence valide A. Les fils de s sont alors s1, s2, …, sk où: j{1..k}, X(sj)={x X(s)/pj(x) est vrai} Une séparation de s se fait à partir des propriétés p1, p2,..,pk de X(s) telles que: xX(s), x satisfait p1 ou p2 ou … ou pk. Remarques: 1) Souvent les propriétés p1, p2,..,pk induisent des parties 2 à 2 disjointes de X(s). 2) Souvent k=2.

Le choix du prochain sommet à séparer peut être réalisé de diverses façons, les 2 suivantes sont les plus utilisées: Profondeur: On choisit la feuille la plus récemment créée de l ’arborescence valide en cours Remarques: 1) Une pile permet d ’implémenter efficacement cette règle de choix 2) Cette règle permet d ’obtenir rapidement des solutions réalisables. Evaluation minimale: On choisit la feuille s dont l ’évaluation g(s) est minimale Remarques: 1) Une file de priorité (tas) permet d ’implémenter efficacement cette règle de choix 2) Cette règle favorise l ’obtention de bonnes solutions

Remarques générales Il est très important que la première opération soit un ajustement fournissant une bonne valeur f +=f(x+). Il faut donc concevoir une heuristique fournissant une bonne première solution x+. Si l ’on dispose à une étape donnée d ’une bonne solution x+ , il peut être intéressant de redémarrer l ’algorithme B&B sur le sous-ensemble initial de solutions: X ’={x X/f(x)<f(x+)} On peut même aller jusqu ’à faire une dichotomie sur f*

Un exemple: minimiser la somme des retards d ’un ensemble de tâches éxécutées sur une machine Données: un ensemble E ={T1,T2,…,Tn}de n tâches une machine M i, pi:durée de l ’exécution de Ti sur M di: deadline de la tâche Ti. Problème: Déterminer un séquencement de l ’exécution des n tâches sur M tel que la somme des retards des tâches soit minimale. 4 7 14 16 18

Un énoncé: 5 tâches tâche T1 T2 T3 T4 T5 durée 4 3 7 2 2 deadline 5 6 8 8 17 Un séquencement: (T1,T2,T3,T4,T5) 4 d1=5 0 + 7 d2=6 1 + 14 16 d3=d4=8 6 + 8 + 18 d5=17 1 F((T1,T2,T3,T4,T5))=

Un sommet de l’arborescence correspond à une liste fixée D=(T(i1), … T(ir)) des r dernières tâches du séquencement : la tâche T(ir) est exécutée à -p(T(ir)), la tâche T(ir-1) est exécutée à -[p(T(ir))+p(T(ir-1))], …….. la tâche T(i1) est exécutée à -[p(T(ir))+…+p(T(i1))], où  = ∑i=1 n p(Ti). Les (n-r) premières tâches ne sont pas arbitrées  temps D La racine correspond à la liste vide : D = () . Séparation: On sépare le sommet associé à D sur la dernière tâche de la partie non encore arbitrée : si D= (T(i1), … T(ir)), alors le sommet est séparé en les n-r sommets associés à (Tj)D, j  {i1, … ir}.

Evaluation par défaut. Soit D la liste des dernières tâches associée à une feuille s. L ’évaluation g(s) est la somme des retards des tâches de D. Première règle de dominance: Soit s une feuille caractérisée par la liste D. Soit Tk une tâche n ’appartenant pas à D. Si dk≥ -p(D), alors les séquencements caractérisés par la liste (Tk).D sont dominants dans X(s).  -p(D) D Tk  -p(D) D

Si une feuille s est caractérisée par la liste D, on note T(D) l ’ensemble des tâches de D et R(D) le retard lié aux tâches de D. Deuxième règle de dominance Considérons deux feuilles s1 et s2 caractérisées par les listes respectives D1 et D2. Si R(D2)≥ R(D1) et T(D2) T(D1) alors s1 domine s2. On part d ’un séquencement quelconque U de X(s2); On construit un meilleur séquencement V de X(s1). Si F est une sous-ensemble de tâches et si x est un séquencement , on note Rx(F) la somme des retards des tâches de F dans le séquencement x.

D2  séquencement U de X(s2)  D1  séquencement V associé de X(s1) Les tâches rouges (de E \ T(D1) ) sont soit ordonnancées à la même date ; soit avancées; donc RV(E \ T(D1) ) ≤ RU(E \ T(D1) ) . RU(E)= R(D2) + RU(T(D1) \ T(D2)) + RU(E \ T(D1) ). RV(E)=R(D1) + RV(E \ T(D1) ) . Il en résulte que V est meilleur que U.

() (1) (5) (2) (3) (4) (4,5) * (1,5) * (2,5) * (3,5) * * (2,4,3,5) tâche T1 T2 T3 T4 T5 durée 4 3 7 2 2 deadline 5 6 8 8 17  = 18 () (1) 13 (5) 1 (2) 12 (3) 10 (4) 10 (4,5) 9 * (1,5) 12 * (2,5) 11 * (3,5) 9 * * (2,4,3,5) 11 (3,4,5) 15 (1,3,5) 13 (1,4,5) 18 (2,4,5) 17 (2,3,5) 12 (4,3,5) 10 (1,4,3,5) 12 * (1,2,4,3,5) 11 *