4. Programmation en nombres entiers



Documents pareils
1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Programmation linéaire

Continuité et dérivabilité d une fonction

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Feuille TD n 1 Exercices d algorithmique éléments de correction

Bac Blanc Terminale ES - Février 2011 Épreuve de Mathématiques (durée 3 heures)

Exo7. Limites de fonctions. 1 Théorie. 2 Calculs

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Programmation Par Contraintes

LE PROCESSUS ( la machine) la fonction f. ( On lit : «fonction f qui à x associe f (x)» )

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

chapitre 4 Nombres de Catalan

Cours de Master Recherche

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Représentation des Nombres

Chp. 4. Minimisation d une fonction d une variable

Exprimer ce coefficient de proportionnalité sous forme de pourcentage : 3,5 %

Cours 1 : Qu est-ce que la programmation?

Équations non linéaires

avec des nombres entiers

Optimisation Discrète

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

1 Recherche en table par balayage

Stratégie de recherche adaptative en programmation par contrainte

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

Nouvelles propositions pour la résolution exacte du problème de sac à dos bi-objectif unidimensionnel en variables binaires

Problèmes de dénombrement.

Les machines de traitement automatique de l information

LA COMPTABILITE PATRIMONIALE. des milieux naturels et culturels : des différences mais une logique de base

Conception de réseaux de télécommunications : optimisation et expérimentations

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

CHAPITRE VIII : Les circuits avec résistances ohmiques

Problème 1 : applications du plan affine

FctsAffines.nb 1. Mathématiques, 1-ère année Edition Fonctions affines

La simulation probabiliste avec Excel

Chapitre 6. Fonction réelle d une variable réelle

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

CARTE DE VOEUX À L ASSOCIAEDRE

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

LES TYPES DE DONNÉES DU LANGAGE PASCAL

a et b étant deux nombres relatifs donnés, une fonction affine est une fonction qui a un nombre x associe le nombre ax + b

Ebauche Rapport finale

Représentation d un entier en base b

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Dérivation : Résumé de cours et méthodes

La médiatrice d un segment

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Les structures de données. Rajae El Ouazzani

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Chapitre 10 Arithmétique réelle

Limites finies en un point

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

U102 Devoir sur les suites (TST2S)

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Théorème du point fixe - Théorème de l inversion locale

LE PROBLEME DU PLUS COURT CHEMIN

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

Résolution de systèmes linéaires par des méthodes directes

Programmation Linéaire - Cours 1

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Probabilités Loi binomiale Exercices corrigés

C f tracée ci- contre est la représentation graphique d une

Systèmes de transmission

Fonctions homographiques

Correction de l examen de la première session

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments

Pourquoi l apprentissage?

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Bases de données documentaires et distribuées Cours NFE04

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Resolution limit in community detection

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Recherche dans un tableau

L ANALYSE EN COMPOSANTES PRINCIPALES (A.C.P.) Pierre-Louis GONZALEZ

Algorithmique et Programmation

Chapitre 7. Récurrences

Programmation linéaire et Optimisation. Didier Smets

Probabilités conditionnelles Exercices corrigés

BACCALAUREAT GENERAL MATHÉMATIQUES

Licence Sciences et Technologies Examen janvier 2010

Programmation linéaire

Les 10 grands principes de l utilisation du data mining pour une gestion de la relation client réussie

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

SINE QUA NON. Découverte et Prise en main du logiciel Utilisation de bases

Correction du baccalauréat ES/L Métropole 20 juin 2014

Logiciel de Base. I. Représentation des nombres

ARBRES BINAIRES DE RECHERCHE

Sujet 4: Programmation stochastique propriétés de fonction de recours

Utiliser des fonctions complexes

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

Chapitre 5 : Flot maximal dans un graphe

Quelques Algorithmes simples

MIS 102 Initiation à l Informatique

Transcription:

IFT575 Modèles de recherche opérationnelle (RO). Programmation en nombres entiers b. Séparation et évaluation progressive c. Plans de coupes

Résolution de modèles entiers Programmation en nombres entiers = Programmation linéaire avec certaines variables à valeurs entières Pourquoi ne pas oublier les contraintes d intégralité Résoudre le modèle de PL ainsi obtenu (appelé relaation PL) Puis arrondir au valeurs entières les plus près? Dans certains cas ça peut fonctionner Mais dans d autres cas cette méthode par arrondissement est désastreuse!. Programmation entiers

Arrondissement : eemple ma Z = 0 et entiers. Programmation entiers

Arrondissement : eemple maz = 0 5 0 0 et entiers. Programmation entiers

Approche par énumération Un modèle en nombres entiers borné (par eemple un modèle avec uniquement des variables 0-) possède un nombre fini de solutions Pourquoi ne pas les énumérer toutes? Déjà pour n=0 variables 0- il y a plus d un million de solutions possibles! Pour n=0 c est plus d un milliard!... Peut-être peut-on combiner cette idée d énumérer les solutions avec l idée de résoudre la relaation PL pour éliminer certaines de ces solutions?. Programmation entiers 5

Construction de l arbre des solutions Un algorithme simple pour énumérer toutes les solutions d un modèle 0- consiste à : Choisir une variable Générer les deu alternatives =0 et = (on dit que est fiée) : chaque alternative correspond à un sommet de l arbre des solutions Recommencer à partir d un sommet pour lequel certaines variables ne sont pas encore fiées Racine de l arbre : aucune variable n est encore fiée Feuilles de l arbre : toutes les variables ont été fiées Nombre de feuilles = n (pour n variables 0-). Programmation entiers 6

Algorithme de branch-and-bound Approche diviser-pour-régner : Décomposition du problème en sous-problèmes plus simples Puis combinaison de la résolution de ces sous-problèmes pour obtenir la solution du problème original Dans l algorithme de branch-and-bound (B&B) chaque sous-problème correspond à un sommet dans l arbre des solutions On résout la relaation PL de chaque sous-problème L information tirée de la relaation PL nous permettra (peut-être) d éliminer toutes les solutions pouvant être obtenues à partir de ce sommet. Programmation entiers 7

Algorithme de B&B : cas 0- Branchement (ou séparation) : Choisir un sommet dans l arbre des solutions Puis choisir une variable non encore fiée relativement à ce sommet Générer les deu alternatives Calcul de borne (ou évaluation) : résoudre la relaation PL en chaque sommet Élagage (ou élimination) : utiliser l information tirée de la résolution de la relaation PL pour éliminer toutes les solutions émanant du sommet courant B&B = séparation et évaluation progressive. Programmation entiers 8

. Programmation entiers 9 Algorithme de B&B : eemple Reprenons le problème California Mfg Relaation PL : les variables peuvent prendre des valeurs fractionnaires entre 0 et Solution : Branchons sur la variable binaire 0 0 0 5 6 6 5 9 ma Z = / et 60) (5/ ) ( = = Z

. Programmation entiers 0 Eemple : calcul de borne Sous-problème : = 0 Solution de la relaation PL : binaire 0 0 0 5 6 5 ma Z = 9 et (00) ) ( = = Z

. Programmation entiers Eemple : calcul de borne Sous-problème : = Solution de la relaation PL : binaire 0 5 9 6 5 ma Z = 5 6 et 5) 50 / ( / ) ( = = Z

Eemple : calcul de borne Sous-problème : Z 9 Sous-problème : Z 6 /5 Notons que toutes les variables sont binaires et tous les paramètres dans l objectif sont des valeurs entières Borne supérieure pour le sous-problème : 6 Pour le sous-problème la solution obtenue est entière : c est la meilleure solution courante On sait que la valeur optimale cherchée Z sera au moins Z* = 9 : Z Z*. Programmation entiers

Eemple : élagage Sous-problème : La solution optimale de la relaation PL est entière Il ne sert donc à rien de brancher sur les autres variables puisque toutes les autres solutions entières (avec = 0) sont nécessairement de valeur 9! On peut donc élaguer ce sommet (couper la branche!) Sous-problème : La solution optimale de la relaation PL n est pas entière Z* = 9 Z 6 : la branche ( = ) peut encore contenir une solution optimale Mais si on avait eu Z Z* on aurait pu conclure que la branche ne pouvait améliorer la meilleure solution courante. Programmation entiers

Critères d élagage Un sous-problème est élagué si une des trois conditions suivantes est satisfaite : Test : Sa borne supérieure (valeur optimale de la relaation PL) est Z* (valeur de la meilleure solution courante) Test : Sa relaation PL n a pas de solution réalisable Test : La solution optimale de sa relaation PL est entière Lorsque le test est vérifié : On teste si la valeur optimale de la relaation PL du sousproblème Z i est supérieure à Z* Si Z i > Z* alors Z* = Z i et on conserve la solution qui devient la meilleure solution courante. Programmation entiers

Algorithme de B&B : résumé. Initialisation : a. Poser Z* = - b. Appliquer le calcul de borne et les critères d élagage à la racine (aucune variable fiée). Critère d arrêt : s il n y a plus de sous-problèmes non élagués arrêter. Branchement : a. Parmi les sous-problèmes non encore élagués choisir celui qui a été créé le plus récemment (s il y a égalité choisir celui de plus grande borne supérieure) b. Appliquer le Test : si le sous-problème est élagué retourner en. c. Brancher sur la prochaine variable non fiée. Programmation entiers 5

Algorithme de B&B : résumé (suite). Calcul de borne : a. Résoudre la relaation PL de chaque sous-problème b. Arrondir la valeur optimale si tous les paramètres de l objectif sont entiers 5. Élagage : élaguer un sous-problème si a. La borne supérieure est Z* b. La relaation PL n a pas de solution réalisable c. La solution optimale de la relaation PL est entière : si la borne supérieure est > Z* Z* est mise à jour et la solution de la relaation PL devient la meilleure solution courante 6. Retourner en.. Programmation entiers 6

Règle de sélection Dans cette version on propose comme règle de sélection de choisir le sous-problème le plus récemment créé Avantage : facilite la réoptimisation lors du calcul de borne car peu de changements apportés par rapport au dernier sous-problème traité Désavantage : peut créer un grand nombre de sous-problèmes Autre option : règle de la meilleure borne (choisir le sous-problème ayant la plus grande borne supérieure). Programmation entiers 7

Règle de branchement Dans cette version la règle de branchement consiste à choisir la prochaine variable non fiée Il est souvent plus intéressant de choisir une variable à valeur fractionnaire En branchant sur une telle variable il est certain que les deu sous-problèmes créés mènent à des solutions différentes de la solution courante De nombreu critères eistent pour choisir une telle variable de façon à orienter la recherche vers un élagage rapide. Programmation entiers 8

Eemple (suite) Jusqu à maintenant voici l arbre obtenu : F() indique que le sous-problème a été élagué (fathomed) en raison du Test. Programmation entiers 9

Eemple (suite) Sélection : on choisit le sous-problème le seul qui n a pas encore été élagué On branche sur la prochaine variable soit Deu nouveau sous-problèmes sont créés : Sous-problème : = = 0 Sous-problème : = =. Programmation entiers 0

. Programmation entiers Eemple (suite) Sous-problème : = = 0 Solution de la relaation PL : binaire 0 5 9 6 ma Z = : 5 et 50) (0 / ) ( = = Z Z

Eemple (suite) Sous-problème : = = ma Z = 6 5 binaire Solution de la relaation PL : ( ) = (0/ ) et Z = 6 : Z 6. Programmation entiers

Eemple (suite) Aucun des tests d élagage ne s applique sur ces sousproblèmes On doit donc choisir un des deu sous-problèmes pour effectuer un branchement puisque ce sont ceu créés le plus récemment On choisit celui de plus grande borne supérieure soit le sous-problème On branche sur et on génère deu nouveau sousproblèmes. Programmation entiers

Eemple (suite) Sous-problème 5 : = = = 0 ma Z 5 = binaire Solution de la relaation PL : ( ) = (0/ ) et Z = 6 : Z 5 6. Programmation entiers

Eemple (suite) Sous-problème 6 : = = = ma Z 5 = 0 0 binaire La relaation PL n a pas de solution réalisable : ce sous-problème est élagué. Programmation entiers 5

Eemple (suite) Le sous-problème 5 ne peut pas être élagué Il est créé le plus récemment parmi les sousproblèmes non élagués ( et 5) on le choisit pour effectuer un branchement On branche sur et on génère : Sous-problème 7 : = = = 0 = 0 Sous-problème 8 : = = = 0 = Toutes les variables sont fiées : on peut résoudre directement ces sous-problèmes. Programmation entiers 6

Eemple (suite) Sous-problème 7 : = = = 0 = 0 Solution : ( ) = (00) et Z 7 = La solution est entière : le sous-problème est élagué par le Test Puisque Z 7 > Z* Z* = et la solution du sous-problème devient la meilleure solution courante Sous-problème 8 : = = = 0 = Cette solution n est pas réalisable car la première contrainte ( ) est violée Le sous-problème est élagué par le Test. Programmation entiers 7

Eemple (suite) Le sous-problème est le seul non encore élagué On applique le Test : Z = = Z* Le sous-problème est donc élagué Il n y a plus de sous-problèmes non élagués : on arrête La solution optimale est : ( ) = (00) et Z = Z* =. Programmation entiers 8

Eemple (suite et fin) Voici l arbre obtenu suite à l eécution de l algorithme F(j) : le sous-problème est élagué par le Test j Voir autre eemple dans IOR Tutor. Programmation entiers 9

Algorithme de B&B : cas général Cas général d un modèle de programmation (mite) en nombres entiers : variables entières générales et variables continues On modifie le branchement ainsi : On choisit la première variable entière à valeur non entière Soit j cette variable de valeur j * Soit j * = plus grand entier j * On génère deu nouveau sous-problèmes : j j * et j j *. Programmation entiers 0

Algorithme de B&B : cas général. Initialisation : a. Poser Z* = - b. Appliquer le calcul de borne et les critères d élagage à la racine (aucune variable fiée). Critère d arrêt : s il n y a plus de sous-problèmes non élagués arrêter. Branchement : a. Parmi les sous-problèmes non encore élagués choisir celui qui a été créé le plus récemment (s il y a égalité choisir celui de plus grande borne supérieure) b. Appliquer le Test : si le sous-problème est élagué retourner en. c. Brancher sur la prochaine variable entière à valeur non entière dans la relaation PL. Programmation entiers

Algorithme de B&B (suite). Calcul de borne : résoudre la relaation PL de chaque sous-problème 5. Élagage : élaguer un sous-problème si a. La borne supérieure est Z* b. La relaation PL n a pas de solution réalisable c. Dans la solution optimale de la relaation PL toutes les variables entières sont à valeurs entières : si la borne supérieure est > Z* Z* est mise à jour et la solution de la relaation PL devient la meilleure solution courante 6. Retourner en.. Programmation entiers

. Programmation entiers Algorithme de B&B : eemple Faire cet eemple avec IOR Tutorial entier 0 0 5 6 0 5 7 ma Z =

Méthode de coupes Idée : ajouter des contraintes redondantes pour le modèle en nombres entiers mais non pour la relaation PL Eemple : maz = binaire Les solutions réalisables sont (00) (0) et (0) Une contrainte redondante est :. Programmation entiers

Méthode de coupes : eemple Domaine réalisable de la relaation PL :. Programmation entiers 5

Méthode de coupes : eemple Suite à l ajout de la contrainte redondante le problème est résolu à la racine!. Programmation entiers 6

Méthode de coupes Il y a plusieurs algorithmes permettant de générer de telles inégalités redondantes appelées coupes Mais il est rare que leur ajout permet de résoudre le problème à la racine L ajout de coupes permet toutefois de réduire le nombre de sous-problèmes traités par l algorithme de B&B On peut même ajouter des coupes pour chaque sousproblème (pas seulement à la racine) : on obtient alors un algorithme de branch-and-cut. Programmation entiers 7

Pour epérimenter avec B&B Pour des petits modèles (moins de 5 variables de tous types et moins de 5 contraintes fonctionnelles) : essayer le IOR Tutorial Pour des modèles plus gros modéliser et résoudre avec Ecel Solver Revoir le cas California Mfg Pour des modèles encore plus gros essayer Lindo/Lingo et CPLEX/MPL (CD). Programmation entiers 8