780 likes | 1.06k Views
Recherche opérationnelle et aide à la décision. RCP101 Philippe Canalda Philippe.Canalda@univ-fcomte.fr cnam-rcp101-sem2-2008 <cnam-rcp101-sem2-2008@googlegroups.com> http://psm-serv.univ-fcomte.fr/~pcanalda/cnam. Références. Livres de référence (principaux) Auteurs Titre
E N D
Recherche opérationnelle et aide à la décision RCP101 Philippe Canalda Philippe.Canalda@univ-fcomte.fr cnam-rcp101-sem2-2008 <cnam-rcp101-sem2-2008@googlegroups.com> http://psm-serv.univ-fcomte.fr/~pcanalda/cnam
Références • Livres de référence (principaux) • Auteurs Titre • Thomas Cormen, INTRODUCTION A L'ALGORITHMIQUECharles Leiserson et Ronald Rivest, (chez Dunod) • Faure, Lemaire, Picouleau Précis de Recherche Opérationnelle, 5ème édition Dunod ; • Groupe Roseaux Exercices et problèmes résolus de recherche opérationnelle, tome3, Masson ; • Minoux M. Programmation Mathématique : théorie des algorithmes, 2 tomes ; Dunod. • Matériel requis : • les livres de Cormen, Leiserson et Rivestet Faure, Lemaire et Picouleau • Matériel produit : • vidéo-projection + prises de notes • Un support sur les graphes et optimisations • 2 supports sur la programmation linéaire Le 20/03/2008
Plan 1/4 • Introduction • Génèse. • Enjeux. • Techniques, méthodes et outils : un aperçu. • Structures ordonnées, applications des treillis et de l’algèbre de Boole en RO. Exercices • Eléments de complexité (des algorithmes et des problèmes). Exercices. • 2. Graphes et ordonnancement en gestion de projet • Rappels des concepts élémentaires de théorie des graphes : définitions générales, graphes orientés, graphes non orientés, quelques graphes particuliers, représentation des graphes, parcours dans un graphe, exercices. • … Le 20/03/2008
Plan 2/4 • 2. Graphes et ordonnancement en gestion de projet • … • Application des graphes à la RO • Aperçu de méthodes de résolution : approche incrémentale, récursive, notions de programmation dynamique, algorithmes gloutons, problèmes linéaires ou non linéaires avec contraintes, exercices ; • Problème du chemin de valeur optimale entre 2 sommets, exercices ; • Ordonnancement de projets : méthode PERT et MPM (chemins critiques, marges), exercices ; • Traitement des contraintes cumulatives (budget) : flot de valeur maximale, flot de valeur maximale à coût maximal, affectation, arbres optimaux, programmes de transport, …, exercices. Le 20/03/2008
Plan 3/4 • 3. Programmation linéaire et applications à l’entreprise • Généralités : origine, domaines d’application, pertinence. • Introduction géométrique puis algébrique à l’algorithme du simplexe : conditions d’existence de solutions (notation MIN, MAX), applications linéaires matricielles, formes analytiques des programmes linéaires, exercices. • Problème de la base initiale : méthode à 2 phases de Dantzig, méthodes des pénalités (ou du grand M), exercices. • Dualité : introduction, illustration, dualité dans le formalisme particulier et dans le cas général, propriétés mathématiques, interprétation économique, exercices. • Analyse en sensibilité (paramétrages) : critiques de la programmation linéaire, paramétrage de la fonction économique, paramétrage du second membre (analyse post-optimale), exercices. • 4. … Le 20/03/2008
Plan 4/4 • 4. Analyse multicritère et systèmes interactifs d’aide à la décision (SIAD) • Méthodologies, concepts fondamentaux. • Méthodes ELECTRE, « Goal-programming ». • Présentation des SIAD (intérêts, limites). • 5. Processus stochastique et programmation dynamique stochastique • 6. Eléments de théorie des files d’attente et de sûreté de fonctionnement • Loi de Poisson, exponentielle. • File d’attente M/M/1 et applications. • Fiabilité des composants, des systèmes (notions). • Paramètres de la sûreté de fonctionnement. Le 20/03/2008
Evaluation • Examen sur table • Mini projet • Soit un algo d’optimisationex : introduire les fdt ds un algo (de prog dyn/géné) résolvant le N-TSP s’appliquant sur 1 territoire multi-convergent • Soit un exposé plus collectif sur la gestion des taxis dans le cadre du transport flexible public • Autre … travail personnel Le 20/03/2008
1.3 Techniques, méthodes et outils : un aperçu. • <Exercices > : • « Rend la monnaie », • Etant donnée, d’une part une liste de pièces (ordonnée ou non)et étant donné un montant de monnaie à rendre • Calculer les combinaisons de pièces à rendre • La meilleure • Toutes • Une • Discussion • « Les huit reines » • « Affectation de ressources » Le 20/03/2008
Interaction – Affectation de Ressources • Ensemble de groupes d ’étudiants ou liste, avec le nombre • Schéma • Ordonnee : 3, 15, 17, …, 127, … • Ou non ordonnée : 17, 3, 127, 15, … • Ensemble ou liste de classes avec les capacités • 20, 30, 30, 70, … • Problème : trouver, si elle existe, une affectation ou on s ’assure que chaque groupe aura une affectation de classe • Rmq : les problèmes peuvent toujours se complexifier comme :trouver l’affectation qui : • Minimise le taux d’occupation • Ou bien qui le maximise Le 20/03/2008
Interaction – Affectation de Ressources (suite) • Exemple : Ge = 120, 15, 3, 84, 45 • Gc= 30, 90, 89, 30, 140 • La méthode basique : • Parcourir Ge de g->d et pour chaque élément du tableau parcourir Gc de g->d en cherchant à trouver une affectation libre • Cette méthode aboutit à un échec : 126 à 140, 15 à 30, 3 à 90, 84 à 89, mais nous ne pouvons plus affecter 45 • Rmq: une solution est plus facilement trouvable lorsque l’on ordonne les éléments manipulés. Par exemple le choix croissant, ou décroissant, d’ordonner la liste des groupes. De même pour la liste des classes et de leurs contenances. Le 20/03/2008
« Rend la monnaie » • Etant donnée, d’une part une liste de pièces (ordonnée ou non) et étant donné un montant de monnaie à rendre • On se donne une Liste ordonnée L={5, 2, 1, 0.5, 0.2, 0.1, 0.05}avec L[0]=5, … L[6]=0.05 • Un montant m=12,35 euros de monnaie à rendre • Calculer les combinaisons de pièces à rendre • La meilleure • Toutes • Une • Discussion Le 20/03/2008
« Rend la monnaie » : vers une solution • L={5, 2, 1, 0.5, 0.2, 0.1, 0.05} avec L[0]=5, … L[6]=0.05m=12.35 euros • Calculer les combinaisons de pièces à rendre • La meilleure, toutes, une, discussion • Idée : calculer • i) le nombre de pièces de 5 euros à rendre sur 12.35 => 2, • ii) le reste => 12.35 – 2 * 5 = 2.35, • iii) passer à la pièce suivante et recommencer les étapes i) et ii) jusqu’à la fin de la liste ou bien jusqu’à ce que le reste soit nul Le 20/03/2008
« Rend la monnaie » : vers une solution • L={5, 2, 1, 0.5, 0.2, 0.1, 0.05} avec L[0]=5, … L[6]=0.05m=12.35 euroscalculer • i) le nombre de pièces de 5 euros à rendre sur 12.35 => 2, • ii) le reste => 12.35 – 2 * 5 = 2.35, • iii) passer à la pièce suivante et recommencer les étapes i) et ii) jusqu’à la fin de la liste ou bien jusqu’à ce que le reste soit nul • Itérer l’exemple, • Automatiser, concevoir votre programme • analyser la méthode : • exactitude/preuve, observation de la solution/généralisation, amélioration/complexité Le 20/03/2008
Itérer l’exemple • L={5, 2, 1, 0.5, 0.2, 0.1, 0.05} avec L[0]=5, … L[6]=0.05m=12.35 euroscalculer • i) le nombre de pièces à rendre sur m=12.35,i=0, L[0]=5quotient= 2 = 12.35/5 = m/L[i] • ii) le reste m= 2.35 = 12.35%5 = m%L[i], • iii) passer à la pièce suivante et recommencer les étapes i) et ii) jusqu’à la fin de la liste ou bien jusqu’à ce que le reste soit nuli++ Le 20/03/2008
Automatiser, concevoir votre programme • ?(Programme itératif, récursif, parallèle, …) Puis analyser la méthode : • exactitude/preuve, observation de la solution/généralisation, amélioration/complexité Le 20/03/2008
Exemple de solution • L={5, 2, 1, 0.5, 0.2, 0.1, 0.05} avec L[0]=5, … L[6]=0.05m=12.35 euroscalculer • Tant que (m <> 0) et (i< L.length) faire // invariant de boucle // on a calculé les occurrences optimales des pièces situées // au rang 0..i-1 Ecrire m/L[i] + « pièces de » + L[i] + « euros » m = m%L[i++]fin tant que// conditions de sortie de la boucle:// m == 0 ou i>= L.length • analyser la méthode : • exactitude/preuve, observation de la solution/généralisation, amélioration/complexité Le 20/03/2008
analyser la méthode : • exactitude/preuve, • Déjà fait • observation de la solution/généralisation, • Calcul de la meilleure solution si elle existe.Elle marche lorsque/parce que • La liste est ordonnée en ordre décroissant • Contre-exemple évident • Les éléments situés aux rangs I+1 et au-delà sont générateurs (pour constituer n’importe quel montant, a fortiori < à celui L[i]) • L={5, 2, 1.5} m=9.5 Le 20/03/2008
analyser la méthode : • Remarques : • Méthode gloutonne qui calcule l’optimal lorsque le meilleur choix local (fait à l’indice i) conduit au meilleur choix global qqsoient les indices suivants • Cf cours prochain sur les graphes et les méthodes d’optimisation gloutonnes Le 20/03/2008
analyser la méthode : • Calcul d’une solution? De toutes les solutions ? • ? • Souvent il s’agit d’appréhender une approche récursive Le 20/03/2008
Exemple de solution bis • Nouvelles étapes : • représenter la solution • Générer les solutions récursivement • Traiter la condition d’arrêt • L={5, 2, 1, 0.5, 0.2, 0.1, 0.05} avec L[0]=5, … L[6]=0.05m=12.35 euros, S_fifo={}calculer • Tant que (m <> 0) et (i<= L.length) faire // INVARIANT // on calcule toutes les occurrences des pièces situées // au rang 0..i-1 // on stocke ces occurrences dans une liste FIFO pour j allant de 0 à m/L[i] faire S_fifo.add(j) RelancerCalcul(L, m- j * L[i], i+1, S_fifo) S_fifo.retirerlasteltinséré fin tant que Le 20/03/2008
Fin 1er cours Le 20/03/2008
Recette méthodologique • Pour résoudre un problème, il existe plusieurs recettes: • La première consiste à trouver un algorithme résolvant une version qui simplifie la solution. Ceci peut-être obtenue • en généralisant le problème • Ne pas limiter le nombre d’occurrences des pièces • En le simplifiant du point de vue combinatoire • Ordonner la liste des pièces dans l’ordre décroissant des valeurs des pièces • Ensuite, il est toujours plus aisé de rajouter des contraintes comme limiter le nombre d’occurrences des pièces • Mais il le sera moins de tenir compte d’une liste non ordonnée mais que nous pourrons ordonner pour se ramener au problème que nous aurons su résoudre ou bien entrevoir la solution Le 20/03/2008
Travail personnel : • Résoudre le problème avec limitation du nombre d’occurrences des pièces • Avancer le support Le 20/03/2008
Exemple de solution bis • Nouvelles étapes : • représenter la solution • Générer les solutions récursivement • Traiter la condition d’arrêt • L={5, 2, 1, 0.5, 0.2, 0.1, 0.05} avec L[0]=5, … L[6]=0.05m=12.35 euros, S_fifo={}calculer • If m==0 // solution trouvée ecrire S_fifoelse // m<>0 if i >= L.length // pas de solution else // m<>0 et i <= L.length // on continue // on calcule toutes les occurrences des pièces situées // au rang 0..i-1 et on stocke ces occurrences dans une liste FIFO pour j allant de 0 à m/L[i] faire S_fifo.add(j) RelancerCalcul(L, m- j * L[i], i+1, S_fifo) S_fifo.retirerlasteltinséré fin pour Le 20/03/2008
Programme • Conduire le programme récursif • Appliquer la méthode à l’exercice des 8 reines • Présenter • les structures ordonnées • Des applications des treillis et • de l’algèbre de Boole • Exercices Le 20/03/2008
Fin 2ème cours • Début 3ème cours • Tableau first in first out • Fichiers spéciaux : file d’attente • Implantation de cette liste • En tableau • En tableau et liste circulaire avec les modulo • Les listes pointeur de façon abstraite • // labouebe : pourquoi les le snap-shot (duplicate) de l’échiquier avant le placement de la reine peut permettre de traiter du LLisme ? • Voir inscription de Yann Deboeuf Le 20/03/2008
analyser la méthode : • exactitude/preuve, • Déjà fait grâce à l ’invariant et avec un déroulement de programme • observation de la solution/généralisation, • Calcul de toutes les solutions existantes.Elle marche que • La liste soit ordonnée en ordre décroissant ou nonle lancement se fait avec RelancerCalcul(L, m, i=0, S_fifo={}) Le 20/03/2008
déroulage • Appliquer le programme précédent sur un exemple court mais réaliste… • Une taille |L|=2, • Une liste ordonnée décroissante, ou non ordonnée • Une liste qui montre l’intérêt de générer exhaustivement les solutions • une solution à laquelle vous pourrez apporter des modifications d’optimisations • L={3, 2} Le 20/03/2008
« Les huit reines » • Etant donnée, une taille de l’échiquier et un nombre de reines à placer • Calculer les combinaisons des positionnements des reines • Toutes • Certaines selon heuristiques (positions du cavalier) • Discussion Le 20/03/2008
Chapitre 1 • Structures ordonnées • Treillis • Algèbre de Boole • Applications • Exercices Le 20/03/2008
Chapitre 1 : Structures ordonnées • Notions • Algèbres de Boole Le 20/03/2008
Chapitre 1 : Structures ordonnées • Relations, relations binaires, propriétés • Une relation désigne n’importe quel sous-ensemble du produit cartésien de 2 ou de plusieurs variables • Exemple 1 • Prod_cart = A x B avec A = {a,b,c} et B={e1,e2,e3,e4}alors Prod_cart={(a,e1), (a,e2), (a,e3), (a,e4), (b,e1), (b,e2), (b,e3), (b,e4), (c,e1), (c,e2), (c,e3), (c,e4)}admet le sous-ensemble R={(a,e2), (b,e1), (c,e4)} Le 20/03/2008
Chapitre 1 : Structures ordonnées • relation binaire • Une relation binaire sur E (abus de langage) est un sous-ensemble de E x E • Exemple 2 • Prod_cart E x E, avec E = {x, y, z}Représentation matricielle ou sous-forme de tableau R1 Produitcartésien R2 Le 20/03/2008
Ch1, Relations spéciales • Relation diagonale • Δ = {(x,x), (y,y), (z,z)} • Relation réflexive • Contient la diagonale • Relation symétrique • Prtt (x, y) in E x E alors (y,x) in ExE • R1 est symétrique mais n’est pas réflexive • Relation anti-symétrique • Prtt x et y , (y,x) not in R si (x,y) in R, sauf si x=y • R2 est anti-symétrique mais n’est pas réflexive R1 R2 Le 20/03/2008
Ch1, Relations spéciales • Relation transitive • Si (x,y) et (y,z) in R alors (x,z) in R • Les contraires : irréflexif, asymétrique et intransitif • R est irréflexive si elle contient aucun élément diagonal • Elle est asymétrique si elle n’est symétrique pour aucun couple de R • Elle est intransitive si elle n’est transitive pour aucune paire de couples de R R3 R4 Le 20/03/2008
Ch1, Relations spéciales • Qualifier R3 et R4 ? R3 • R3 • Pas réflexive, anti-symétrique et transitive • R4 • Réflexive, symétrique et transitive R4 Le 20/03/2008
Ch1, Relations spéciales • Qualifier R5 et R6 ? R5 • R5 • irréflexive, asymétrique et intransitive • R6 • Elle n’est rien …ou plutôt elle est non réflexive, non symétrique et non transitive R6 Le 20/03/2008
Heuristique : pour trouver les graphes circulaires à une composante connexe • Tester si irréfexif • Intransitf • Et asymétrique Le 20/03/2008
Programme • Présenter • La suite des structures ordonnées • Les treillis et des applications • L’algèbre de Boole • Exercices • Eléments de complexité (des algorithmes et des problèmes). Exercices. • 2. Graphes et ordonnancement en gestion de projet • Rappels des concepts élémentaires de théorie des graphes : • définitions générales, graphes orientés, graphes non orientés, quelques graphes particuliers, représentation des graphes, parcours dans un graphe, exercices. • … Le 20/03/2008
Ch1 : Préordre, équivalence, ordre • Une relation de préordre est une relation réflexive et transitive • Une relation d’équivalence est une relation réflexive, symétrique et transitive • Une relation d’ordre (large) est réflexive, antisymétrique et transitive • Exemple du critérium des champions • Les champions sont classés selon la relation « avoir obtenu un rang meilleur ou aussi bon que » : • 1er Camille, • 2ème ex aequo Anatole et Désiré, • 4ème Ernest • 5ème Bernard • Donner la représentation sous-forme de tableau avec A=Anatole, B=Bernard, …, E=Ernest Le 20/03/2008
Fin de cours 3 Le 20/03/2008
Exemple du critérium des champions • Les champions sont classés selon la relation « avoir obtenu un rang meilleur ou aussi bon que » : • 1er Camille, • 2ème ex aequo Anatole et Désiré, • 4ème Ernest • 5ème Bernard • Donner la représentation sous-forme de tableau avec A=Anatole, B=Bernard, …, E=Ernest réflexif Le 20/03/2008
Exemple du critérium des champions • Les champions sont classés selon la relation « avoir obtenu un rang meilleur ou aussi bon que » : • 1er Camille, • 2ème ex aequo Anatole et Désiré, • 4ème Ernest • 5ème Bernard • Donner la représentation sous-forme de tableau avec A=Anatole, B=Bernard, …, E=Ernest réflexif, non symétrique, et transitif, n’est pas anti-symétrique Le 20/03/2008
Exemple de relation d’équivalence • Considérons la relation « être parallèle à ou confondu avec », pour les 2 groupes de droites parallèles suivantes : A || C et B || D || E. • Donner la représentation sous-forme de tableau • En considérant l’exemple du critérium, déterminer les classes d’équivalence réflexif, symétrique, et transitif2 classes {A,C} et {B,D,E} Le 20/03/2008
Vers un ordre strict… • Il est manifeste que {A,D} forme une classe d’équivalence. Et cela correspond assez à la relation « avoir le même rang que ». • En faisant le quotient du pré-ordre par cette relation d’équivalence on obtient 4 classes qui s’ordonnent strictement 2 à 2 selon la relation « avoir un meilleur rang que » : • Les 4 classes {C}, {A, D}, {E} et {B} • Avec {C} > {A, D} > {E} > {B} • Réordonner le tableau suivant les rangs croissants C, A, D, E et B • Donner le tableau de la relation stricte sur les classes • Qualifier cette relation et remarquer qu’elle est irréflexive, asymétrique et transitive Le 20/03/2008
Un ordre au sens large (i.e. moins strict) • Rappel : Elle est réflexive, anti-symétrique et transitive • Soit N* et la relation x | y (x divise exactement y, sans reste / ou encore x modulo y ==0). • Montrer que la relation est un ordre au sens large • Soit X un sous-ensemble de N* tel que X={1, 2, 3, 5, 10, 20, 30}Calculer le tableau représentant x | y sur X Le 20/03/2008
Ordres partiels et totaux • Rappel : Elle est réflexive, anti-symétrique et transitive • Soit N* et la relation x | y (x divise exactement y, sans reste / ou encore x modulo y ==0). • Montrer que la relation est un ordre au sens large • Soit X un sous-ensemble de N* tel que X={1, 2, 3, 5, 10, 20, 30}Calculer le tableau représentant x | y sur X La réflexivité est visible,l’anti-symétrie aussi,la transitivité un peu moinstous les éléments ne sont pas comparables au dessus de la diagonale Le 20/03/2008
Ordres partiels et totaux • La relation d’ordre est partielle lorsque tous les éléments ne sont pas comparables 2 à 2 • Sinon elle est totale Le 20/03/2008
Représentation sagittale et diagramme de Hasse • Dans une représentation sagittale • 2 éléments a et b sont représentés chacun par 1 pt, • ils sont réunis par un arc orienté a – b si a R b • Exemple si a | b il y a autant d’arcs que de couples dans la représentation tableau de la même relation • Dans le diagramme de Hasse, les arcs qui résultent de la réflexivité et de la transitivité sont supprimés • Donner ces 2 représentations de la relation « | » sur X • Énumérer des 3 représentations informatiques : tableau, sagittal, diagramme de Hasse • Donner les algorithmes qui produisent les 2 dernières représentations à partir de la 1ère représentation (le tableau à 2 dimensions) Le 20/03/2008
L’exercice de transformation de la matrice sagittale en diagramme de Hasse est TRES intéressant. • Il exploite l’ordonnancement des éléments de N* manipulés. Le 20/03/2008