Recherche Opérationnelle Enseignants: Dr. Sameh NAJEH Dr. Zouheir BEN JEMAA 2017-2018 1 Un peu d’Histoire (1/2) En 1781: Gaspard Monge est le premier à inventer le problème, popularisé sous le nom de « Brouette de Monge » qui le premier exemple historique de recherche opérationnelle. « Dès le XVIIIe siècle, Gaspard Monge, dans son mémoire sur la théorie des déblais et des remblais, étudiait un problème des plus concrets (déplacer au mieux un tas de sable !) en lui appliquant une méthode rigoureuse, « optimale » dirions-nous aujourd'hui. On parle de « recherche opérationnelle » pour désigner les méthodes qui permettent ainsi de traiter de manière systématique et efficace des problèmes combinatoires. Une théorie encore très vivace aujourd'hui ! » (interstices.info, publié le 15/02/2007). 2016/2017 2 Un peu d’Histoire (2/2) En 1935: Leonid Kantorovich: un des quelques mathématiciens lauréats du prix Nobel d'économie, il a repris les travaux de Gaspard Monge, en découvrant la programmation linéaire, l’optimisation linéaire et ses applications à l'optimisation de la production économique planifiée. En 1958: Claude Berge contribue notamment au développement de la théorie des graphes et de l’analyse combinatoire, et crée la notion de graphe parfait. 2016/2017 3 Plan du cours Partie I : Programmation Linéaire 1. 2. 3. 4. 5. Introduction à la programmation linéaire. Théorie de la programmation linéaire. Algorithme primal du simplexe à une ou deux phases. Dualité en PL. Etude de sensibilité et techniques de post-optimisation. Partie II: Théorie des graphes 1. 2. 3. Eléments de la théorie des graphes. Problèmes d’arbre couvrant de poids minimum et de plus court chemin. Problème d’ordonnancement et de gestion de projet. 2016/2017 4 Introduction à la RO Recherche Opérationnelle (RO) Approche scientifique à la prise des décisions, qui cherche à déterminer comment concevoir et faire fonctionner un système d’une façon optimale. Champs d’application: - Industrie - Gouvernement - Agences - Hôpitaux - Institutions d’éducation… 2016/2017 5 Introduction à la RO Méthodologie de la RO Identification du problème Formulation & Implémentation du modèle Analyse Modele Test Implement de la Solution Résultat non optimal 2016/2017 6 Objectif du module: La programmation linéaire (PL) est un des domaines les plus utilisés de la RO. La (PL) permet de traiter un vaste ensemble de problèmes d’optimisation dans des contextes divers comme: la gestion de stocks, flux de transport, distribution de tâches à des personnels, recherche de plans de fabrication etc. . . La modélisation de ces problèmes débouche sur des équations ou inéquations linéaires (exprimant les différentes contraintes) dont on cherche les solutions permettant d’optimiser une fonction économique elle-même linéaire. N.B: 1. De plus on supposera que les variables considérées sont astreintes à être positives (contraintes de positivité). 2. On appelle une telle formulation un programme linéaire (PL). 2016/2017 7 Partie 1: Programmation Linéaire 2016/2017 8 Chapitre 1: Introduction à la PL Exemple: Une compagnie est spécialisée dans la production de deux types de produits : des climatiseurs et des ventilateurs. Le tableau suivant donne les informations nécessaires à la fabrication d’une unité de chacun de ces produits, ainsi que le profit généré par la production d’une unité de ce produit. Le tableau nous donne aussi le nombre total d’heures machines et d’heures main d’œuvre disponibles. Heures machine Main d’œuvre Profit Climatiseur 2 h/unité 3 h/unité 25 Dinars/unité Ventilateur 2 h/unité 1 h/unité 15 Dinars/unité Total disponible 240 h 140 h Objectif : Maximiser le profit 2016/2017 9 Chapitre 1: Introduction à la PL Formulation du programme linéaire 1.a Variables de décision : Les variables de décision doivent complètement décrire les décisions à prendre. x1 = nombre de climatiseurs x2 = nombre de ventilateurs 1.b Fonction objectif : La fonction objectif s’écrit Max Z = 25x1 + 15x2 2016/2017 10 Chapitre 1: Introduction à la PL Contraintes du modèle: - Contraintes heure machine: - Contrainte main d’œuvre: - Contraintes de non-négativité: 2x1 + 2x2 ≤ 240 3x1 + x2 ≤ 140 x1 ≥ 0, x2 ≥ 0 Formulation mathématique du problème: Max Z = 25 x1 + 15 x2 s.c. 2x1 + 2x2 ≤ 240 3x1 + x2 ≤ 140 x1 ≥ 0, x2 ≥ 0 2016/2017 11 Chapitre 1: Introduction à la PL Terminologie Les variables x1, x2.,..xn sont appelées variables de décision du problème. f0 est une application linéaire à optimiser appelée fonction objectif ou fonction coût: Max (ou Min): f0(x1, x2, …, xn) = f0(x), où: x= (x1, .., xn) Les contraintes prennent la forme d’équations et d’inéquations linéaires. f1(x1, x2, …, xn)b1 Sous-contraintes (s/c) : fk(x1, x2, …, xn) bk : f m(x1, x2, …, xn) = bm Remarque: Si toutes les fonctions fk sont linéaires alors le problème est dit: Problème Linéaire (PL) 2016/2017 12 Chapitre 1: Introduction à la PL Terminologie Une solution est une affectation de valeurs aux variables du problème. Une solution est admissible si elle satisfait toutes les contraintes du problème. La valeur d’une solution est la valeur de la fonction objectif dans cette solution. Le domaine admissible D d’un PL est l’ensemble des solutions admissibles du problème. La solution optimale d’un PL (si elle existe) est formée des valeurs optimales des variables du problème et de la valeur associée de la fonction objectif. 2016/2017 13 Chapitre 1: Introduction à la PL Méthode de la résolution d’un PL Deux méthodes sont utilisées dans la littérature: 1. Résolution par la méthode graphique (résolution graphique) 2. Résolution par la méthode du simplexe Résultat d’une optimisation linéaire: Le domaine admissible d’un PL peut être: 1. Vide: Dans ce cas le problème est sans solution admissible, et ainsi ne possède pas de solution optimale. 2. Borné et non vide: Le problème possède toujours au moins une solution optimale , quelle que soit la fonction objectif. 2016/2017 14 Chapitre 1: Introduction à la PL 3. Non bornée: Selon la fonction objectif choisie: Le problème peut posséder des solutions optimales. Il peut exister des solutions admissibles de valeur arbitrairement grande (ou petite). Dans un tel cas le PL n’admet pas de solution optimale finie et est dit non borné. 2016/2017 15 Chapitre 1: Introduction à la PL Résolution par la méthode graphique: 1. Représenter les lignes de niveau de la fonction objectif: sont des droites parallèles dans IR2. 2. Il existe des solutions admissibles de valeur Z si la ligne de niveau associée à cette valeur appartient au domaine admissible D du problème. 3. Pour déterminer la valeur maximale atteignable par une solution admissible, il suffit de faire glisser le plus loin possible une ligne de niveau de la fonction objectif, dans le sens du gradient jusqu’à ce que qu’elle touche encore tout juste D. 4. Les points de contact ainsi obtenus correspondent aux solutions optimales du PL. 2016/2017 16 Chapitre 1: Introduction à la PL Application 1: Max Z = 25 x1 + 15 x2 2x1 + 2x2 ≤ 240 s/c: 3x1 + x2 ≤ 140 x1 ≥ 0, x2 ≥ 0 1ère étape :Déterminer les solutions admissibles 140 x2 3x1 x2 140 120 2 x1 2 x2 240 Domaine admissible 140/3 2016/2017 120 x1 17 Chapitre 1: Introduction à la PL 2ème étape : Représenter les lignes de niveau (PL) : Max Z = 25x1 + 15x2 x2 Solution optimale L’équation Z = 25x1 + 15x2: Equation des lignes de niveau, représentées par des droites de pente -5/3, appelées aussi ligne d’isoprofit ou isocoût. Z opt 25 x1 15 x2 Z 2 25 x1 15 x2 x1 Z1 25 x1 15 x2 2016/2017 18 Chapitre 1: Introduction à la PL 3ème étape : Déduire la solution optimale x2 {B} = D1 ∩ D2, Solution optimale D2: 3x1 + x2 = 140 B 3x1 x2 140 Z où: D1: 2x1 + 2x2 = 240 opt 25 x1 15 x2 Donc: La solution optimale est donnée par: x*1=10, x*2=110 et Zopt=1900. x1 2 x1 2 x2 240 2016/2017 19 Chapitre 1: Introduction à la PL Application 2: PL non borné Max Z = x1 + 2x2 7x1+2x2 ≥ 28 s/c: x1 + 6x2 ≥ 12 Z1 x1 2x2 Z 2 x1 2x2 x1 ≥ 0, x2 ≥ 0 20 2016/2017 Chapitre 1: Introduction à la PL Application 3: PL a une infinité de solutions optimales Max Z = x1 + 3x2 2x1+6x2 ≤ 30 (1) s/c: x1 ≤ 10 (2) x2 ≤ 4 (3) x1 ≥ 0, x2 ≥ 0 (3) (1) Solutions (2) Z=Zopt L’ensemble des solutions optimales est un segment 2016/2017 Z=Z1 Z=0 21 Chapitre 1: Introduction à la PL Application 4: PL non réalisable Max Z = 3x1 + 2x2 x1+2x2 ≤ 2 (1) s/c: 2x1 + 4x2 ≥ 8 (2) x1 ≥ 0, x2 ≥ 0 (2) (1) Domaine réalisable vide donc PL non réalisable 2016/2017 22 Chapitre 1: Introduction à la PL PL sous sa forme standard Un PL est sous sa forme standard si: toutes les contraintes sont des égalités toutes les variables sont non négatives ( xi ≥ 0) MaxZ = c1x1 + c2x2 + … + cnxn a11x1 + a12x2 + … + a1nxn = b1 s/c : : am1x1 + am2x2 + … + amnxn = bn Ecriture Max Z = cx Matricielle s/c: Ax=b X≥0 x1, x2, ….,xn ≥0 2016/2017 23 Chapitre 1: Introduction à la PL PL sous sa forme canonique Un PL est sous sa forme canonique si: toutes les contraintes sont des inégalités () toutes les variables sont non négatives ( xi ≥ 0) Max Z = (c1x1 + c2x2 + … + cnxn) a11x1 + a12x2 + … + a1nxn b1 s/c : Ecriture : am1x1 + am2x2 + … + amnxn bn Matricielle Max Z = cX s/c: Ax b x≥0 x1, x2, ….,xn ≥0 2016/2017 24 Chapitre 1: Introduction à la PL Règles de transformation Minimisation Maximisation: min f(x) = - max(-f(x)) Exemple: pour minimiser f(x) = cx, on maximise g(x) = (- c)x et multiplier la solution optimale de g par -1 pour obtenir celle de f. Inéquation () Inéquation () Ax b Equation - Ax - b Inéquation () Ax b Ax b Ax b Ax b Ax b 2016/2017 25 Chapitre 1: Introduction à la PL Règles de transformation Inéquation surplus) équation: On ajoute une variable d’écart (de Ax b Ax s b , s 0 Ax b Ax s b , s 0 Variables libre (réelle) variable non négative: tout nombre réel peut être écrit comme la différence de deux nombres non négatifs: x x x x IR x ,x 0 2016/2017 26 Chapitre 1: Introduction à la PL Exemple: Mise sous forme standard Max Z = 25 x1 + 15 x2 s.c. x1 - 2x2 +4x3≤ 12 -x1 + 4x2 +x3≥ 4 3x1 + x2 +x3≥ 2 x1, x 2, x 3 ≥ 0 On note: Max Z = 25 x1 + 15 x2 s.c. x1 - 2x2 +4x3+ s1=12 -x1 + 4x2 +x3-s2 =4 3x1 + x2 +x3-s3= 2 x1, x2 , x3 , s1, s2, s3 ≥ 0 Max Z = 25 x1 + 15 x2 s.c. x1 - 2x2 +4x3+ x4=12 -x1 + 4x2 +x3-x5 =4 3x1 + x2 +x3-x6=2 x1,x2 … x6 ≥ 0 2016/2017 x1,..x3: variables directes X4,…x6: variables d’écarts 27 Chapitre 2: Théorie de la programmation linéaire Ensemble convexe : Un ensemble S IRn est convexe si pour tout x,y S, et tout [0,1], on a: x + (1-)y S x y x y Ensemble convexe Ensemble non convexe Exercice: Soit x et y IRn. Montrer que l’ensemble: {z= x + (1-)y [0,1]}, est le segment [x,y] 2016/2017 28 Chapitre 2: Théorie de la programmation linéaire Combinaison convexe des vecteurs x1,…xk, Soient x1,…xk des vecteurs de IRn et soient 1,…, k des scalaires non négatifs tels que: i = 1. Le vecteur: y = i=1,…k ixi est une combinaison convexe des vecteurs x1,…xk. Enveloppe convexe: Soient x1,…xk des vecteurs de IRn. L’enveloppe convexe des vecteurs x1,…xk est l’ensemble de toutes les combinaisons convexes de ces vecteurs. Théorème :L’enveloppe convexe d’un nombre fini de vecteurs est un ensemble convexe. Preuve: En exercice 2016/2017 29 Chapitre 2: Théorie de la programmation linéaire Définitions : Un polyèdre est un ensemble qui peut être décrit comme P={ x=(x1,..xn) IRn | aix bi, i = 1,..m} ={x IRn | Ax b} Exercice: Montrer qu’un polyèdre est un ensemble convexe. Un polyèdre P est dit borné si il existe une constante c > 0 telle que ||x|| c pour tout x P. Un polyèdre borné est appelé polytope. Le domaine admissible d’un programme linéaire est un polyèdre (donc convexe). 2016/2017 30 Chapitre 2: Théorie de la programmation linéaire Exemples de polyèdre: Polytope: Polyèdre Borné Polyèdre non borné 2016/2017 31 Chapitre 2: Théorie de la programmation linéaire Point extrême d’un ensemble convexe Point extrême: Soit C IRn un ensemble convexe. Un point x* de C est un point extrême de C si x* ne se trouve à l’intérieur d’aucun segment de C non réduit à un point. Autrement dit, x* est un point extrême de C si pour tout x1 et x2 C et ]0,1[ tel que: x*= x1+(1- )x2 alors: x* =x1= x2 z x n’est pas un point extrême z est un point extrême x 2016/2017 32 Chapitre 2: Théorie de la programmation linéaire Points extrêmes et sommets Soit P un polyèdre. Un vecteur x P est un sommet de P s’il existe c tel que cTx < cTy pour tout y dans P différent de x. C’est-à-dire soit K= cTx, l’hyperplan cTy=K coupe le polyèdre P seulement en x x x n’est pas un sommet S S est un sommet Pour un polyèdre, S est un sommet ssi S est un point extrême. 2016/2017 33 Chapitre 2: Théorie de la programmation linéaire Définitions : Soient a un vecteur non nul de IRn et b un scalaire. L’ensemble : {x IRn | aTx=b} est appelé un hyperplan. L’ensemble: {x IRn | aTx b} est appelé un demi-espace. Propriétés: Un hyperplan est la frontière du demi-espace correspondant. Le vecteur a est perpendiculaire à l’hyperplan qu’il définit (Exercice). T a a x>b a Tx < b a Tx > b a Tx < b 2016/2017 H 34 Chapitre 2: Théorie de la programmation linéaire Max z=cT x s.c. Ax = b x≥0 A est une matrice mxn (m<n) et de rang m (pas de contrainte inutile) • On appelle Base une sous matrice régulière de A. • Une solution de base est obtenue en posant n − m variables égales à 0, et en résolvant pour les m variables restantes, qui sont les variables de base (VB). • Les n−m variables égales à 0 sont les variables hors base (VHB). 2016/2017 35 Chapitre 2: Théorie de la programmation linéaire Représentation matricielle xB A = [B | H] , x= , cT = [cTB| cTH] xH Ce qui donne Z = cT x = cTB xB + cTH xH Ax = b B xB + H xH = b Une solution de base est telle que: xH = 0 , BxB = b, xB = B−1b 2016/2017 36 Chapitre 2: Théorie de la programmation linéaire Solutions de base réalisables Une solution de base est dite réalisable (SBR) si : xB = B−1b ≥ 0 Si le vecteur xB contient des termes nuls, on dira que cette solution est une solution de base dégénérée (peut être associée à plus qu’une base). 2016/2017 37 Chapitre 2: Théorie de la programmation linéaire Solutions de base réalisables-Exemple Soit le problème : Max x1 + 2x2 s.c. x1 + 2x2 ≤ 4 2x1 + x2 ≤ 5 x1 , x2 ≥ 0 Sous forme standard, on a: Max x1 + 2x2 s.c x1 + 2x2 + x3 = 4 2x1 + x2 + x4 = 5 x1 , x2 , x3 , x4 ≥ 0 4 variables (n=4) et 2 contraintes (m=2) 2016/2017 38 Chapitre 2: Théorie de la programmation linéaire Solutions de base réalisables-Exemple A= 1 2 1 0 2 1 0 1 xB = x 1 , x3 B = [A1A3] = 1 2 1 0 H = [A2A4] = 2 1 0 1 xH = x 2 x4 La solution de base correspondante est donc : xB = B−1b = 0 1/2 4 = 5/2 = x1 1 −1/2 5 3/2 x3 >0 Cette solution est bien une SBR. Une solution de base peut être non réalisable: Considérer B = [A2 A3] 2016/2017 39 Chapitre 2: Théorie de la programmation linéaire Théorème: Soit P le polyèdre défini par l’ensemble des solutions admissibles d’un PL canonique et Q le polyèdre défini par l’ensemble des solutions admissibles du même PL sous forme standard, définis par: P x D IR n , Ax D b , x D 0 xD nm IR Q , Ax D x E b , x D 0 , x E 0 x E x La fonction f: IRn IRn+m qui à x associe: f ( x ) b Ax est bijective de P sur Q, en particulier f est une bijection entre les points extrêmes de P et Q. Preuve: en exercice 2014-2015 2016/2017 40 40 Chapitre 2: Théorie de la programmation linéaire Illustration graphique Max Z = 2x1 + x2 s.c. x1 + x 2 ≤ 1 x1 , x2 ≥ 0 Max Z = 2x1 + x2 s.c. x1 + x2+x3 = 1 x 1 , x2, x 3 ≥ 0 x3 x2 (0,0,1) (0,1) (1,0) (1,0,0) x1 x1 (0,1,0) x2 2016/2017 41 41 Chapitre 2: Théorie de la programmation linéaire Théorème : Soit x D nm Q , Ax D x E b , x D 0 , x E 0 IR x E l’ensemble des solutions admissibles d’un PL standard. Les affirmations suivantes sont équivalentes: i. x* Q est un point extrême de Q. ii. x* Q est un sommet de Q. iii. c IRn+m, tel que le PL max{cx; x Q} admet x* comme unique solution optimale. iv. x* Q est une solution basique (i.e particulière) admissible du PL 2016/2017 42 Chapitre 3: Algorithme du Simplexe Soit un PL sous sa forme standard (Ax = b). Définitions: i. On appelle rang du PL le rang de sa matrice A. ii. On suppose que A est mn, on dit que A est de rang plein si: rang(A) = m n .. Remarques: Soit A une matrice de rang plein, alors, le système Ax = b admet toujours des solutions: - si m < n, le système Ax = b admet une infinité de solutions. - si m = n, la solution est unique et vaut x *= A-1b, 2016/2017 43 Chapitre 3: Algorithme du Simplexe Définition: solution réalisable On appelle solution réalisable tout vecteur x qui satisfait les contraintes du PL i.e. tel que Ax = b et x 0: Définition : variables de base Soit B {1,..n} un ensemble d'indices avec card (B) = m tel que les colonnes Aj , j B, de A soient linéairement indépendantes. Autrement dit, la matrice carrée AB formée des colonnes Aj , j B, est inversible. On dit que l'ensemble B des indices est une base. Les variables xB = (xj ; j B) sont appelées variables de base. Les variables xH = (xj ; j B) sont appelées variables hors-base. Définition: Soit un PLS, on appelle une matrice augmentée la matrice définie par: Aˆ ( A | b ) 2016/2017 44 Chapitre 3: Algorithme du Simplexe Remarques: si A est de rang plein (rang(A) = m) Pour déterminer les solutions de Ax = b, il suffit de choisir m colonnes linéairement indépendants de A formant une base de l’espace des colonnes de A (et donc de IRn) et d’exprimer le système dans cette base. Sous l'hypothèse de rang plein, il existe toujours une base non vide. Quitte à renuméroter les indices, on peut toujours écrire les décompositions par blocs : A = (B|H), donc: Ax = b (B|H)x = b, Où B est une matrice inversible formée de m ( où m= rang(A)) colonnes linéairement indépendantes de A. 2016/2017 45 45 Chapitre 3: Algorithme du Simplexe xB b ; ( B | H ) x ( B | H ) xH B 1 ( B | H ) x B 1 b x B B 1 Hx H B 1 b Ainsi: on choisit arbitrairement les xH et les xB sont déterminées par: x H IR n m , x B B 1 b B 1 Hx H Remarque: l’optimum peut être atteint en changeant seulement les variable hors base tout en respectant la contrainte de non négativité de variables 2016/2017 46 Chapitre 3: Algorithme du Simplexe Revenons à la fonction objectif: Z = cx : xB c B x B c H x H Z cx ( c B | c H ) xH Z c B ( B 1 b B 1 Hx H ) c H x H Z c B B 1 b c B B 1 Hx H c H x H , Soit : c c B B 1 H c H Z c B B 1 b c x H Ainsi, le PLS initial devient: Max Z c B B 1b c x H Sc : x B B 1 b B 1 Hx H xB 0, xH 0 2016/2017 47 Chapitre 3: Algorithme du Simplexe Définitions: i.x* est dite solution de base ou solution basique si elle vérifie Ax* = b, et x* s’écrit: x B B 1b x * xH 0 i. Si en plus xB 0 alors x* est une solution de base réalisable. ii. x* est dite solution réalisable si elle vérifie les contraintes: Ax* = b et x* 0. iii. Les colonnes formant B sont dites basiques les autres hors bases. iv. Les variables associées aux colonnes de B sont dites basiques les autres variables hors base. v. On appelle base la liste ordonnée des variables basiques cette liste est notée B. 2016/2017 48 Chapitre 3: Algorithme du Simplexe Exemple: 0 1 2 A 1 1 2 2 1 ; b 3 1 x1 x H x3 xB B 1 1 2 , B 2,4 B 1 3 x2 x B x4 1 0 b ; x H 0 0 2016/2017 49 Chapitre 3: Algorithme du Simplexe Solutions basiques d’un PLS: Considérons le PLS dont les contraintes sont données par: Ax D x E b , x D : variable de décision x D 0 , x E 0 , x E : variable d' écart a 11 La matrice a 12 rang plein. . . a m1 . . a1n a 21 1 0 0 1 . . . . . . . . . . . 0 0 0 0 . . . 1 a mn . 0 . . 1 est de taille m(n + m) et est de La base B0 = I, formée par des variables d’écart du problème. La solution basique associée à cette base est: xB = xE = b et xH = xD = 0 2016/2017 50 Chapitre 3: Algorithme du Simplexe Max Z c B B 1b c x H Sc : x B B 1 b B 1 Hx H xB 0, xH 0 Dans le cas de l’algorithme de simplexe, on a B=Identité, ce qui donne (à une permutation des variables de base près): Max Z cBb cxH Sc : x B b Hx H xB 0, xH 0 2016/2017 51 Chapitre 3: Algorithme du Simplexe Principe de la méthode de simplexe L’algorithme du simplexe pour une maximisation suit les étapes suivantes : 1. Trouver une SBR pour le PL, appelée la SBR initiale. 2. Déterminer si la SBR courante est optimale. Sinon, trouver une autre SBR qui possède une valeur z plus élevée. 3. Retourner au point (2) avec la nouvelle SBR comme SBR courante. Pour la méthode de simplexe, la base B est toujours l’identité à une permutation des colonnes près La question est donc : comment se déplacer? 2016/2017 52 52 Chapitre 3: Algorithme du Simplexe Algorithme PLS initial Sommet de départ Augmenter une des variable hors base jusqu’à une des contraintes de non négativité n’est plus satisfaite Z optimal Un nouveau Sommet Oui Fin Non Pivotage 2016/2017 53 53 Chapitre 3: Algorithme du Simplexe Pivotage: Passage d’une matrice à une autre -Le pivotage consiste à éliminer une colonne de base et d’ajouter à la base une colonne hors base. -Ceci se fait par ajout à chaque ligne une combinaison linéaire des autres. -Pour avoir un système équivalent ces opérations doivent se faire sur la matrice augmenté. Aˆ [ A b ] -Le pivotage par rapport à air consiste à remplacer air par 1 et tous les autres akr par 0. -La colonne de base j contenant cette même colonne dans l’étape précédente devient hors base. -En écriture matricielle, ceci consiste à multiplier à gauche la martice augmentée par la matrice de pivotage. -Les coefficients de la fonction coût correspondant aux variables de bases sont nuls. Donc toutes ces étapes doivent être faites sur le tableau suivant: 2016/2017 54 54 Chapitre 3: Algorithme du Simplexe Tableau Max Z = cx, sc: Ax = b, x 0 • Le tableau initial est : xD =xH T0 = xE =xB z Résultat A I 0 b -cD 0 1 0 • Un tableau est associé à une base d’un système d’équations. • Un tableau comprend une ligne supplémentaire représentant la fonction objectif du problème. La base associée au tableau initial est donc formée des colonnes des variables d’écart auxquelles on ajoute (en dernière position) celles correspondant à la variable z et au second menbre b. 2016/2017 55 Chapitre 3: Algorithme du Simplexe Algorithme du simplexe (phase II) Données: Un tableau admissible (les bi sont positifs) Résultat: Un tableau optimal ou non borné 1/ Choix d’une colonne (variable) entrante: Choisir une colonne hors base r ayant un côut marginal négatif; r k 1 ,.. n , c k 0 S’il n’existe pas de colonne entrante: STOP: le tableau courant est optimal 2/ Choix d’une colonne (variable) sortante: Choisir une ligne i0 minimisant les quotients caractéristiques : i 0 arg min b i / a i , r , a i , r 0 i S’il n’existe pas de colonne sortante: STOP le tableau courant est non borné. 3/ Mise à jour de la base et du tableau: Pivoter autour de ai0,r et retourner en (1). 2016/2017 56 Chapitre 3: Algorithme du Simplexe Algorithme du simplee (phase I) Données: Un tableau non admissible Résultat: Un tableau admissible ou certificat d’absence de solutions admissibles 1/ Construire le PL auxiliaire et un tableau initial admissible: Introduire une variable auxiliaire x0i dans toutes les contraintes vérifiant bi < 0. Ajouter la fonction objectif auxiliaire à maximiser : Z’ = -x0 Faire entrer x0 dans la base en pivotant sur: a i0 , 0 , où: i 0 arg min b i , b i 0 i 2/ Résoudre le PL auxiliaire à l’aide de la phase II de l’algorithme du simplexe et en utilisant la règle de Bland: si Z’ = 0 à l’optimum, supprimer les colonnes de x0 et de Z’ er la ligne de Z’. Le tableau restant est admissible pour le problème de départ. si Z’ < 0 à l’optimum, le problème de départ n’admet pas de solutions admissibles. 2016/2017 57 Chapitre 4: Dualité en programmation linéaire Motivation: Considérons l’exemple du PL suivant: Max Z = x1 + x2 s.c. 2x1 +3 x2 ≤ 6 x2 ≤ 3/2 x1 - x 2 ≤ 2 x1, x 2≥ 0 (C1) (C2) (C3) En utilisant la résolution par la méthode du simplexe ou graphique, on obtient la solution: x*1 = 12/5; x*2 =2/5 et Z* = 14/5. En fait: 1/3* (C1) + (C3) donne: (5/3)*x1 ≤ 4, donc: x1 ≤ x*1 =12/5 et (C1) donne: x2 ≤ x*2 =4/10 et Z ≤ Z*= 14/5. Ainsi, les bornes des xi et les inéquations (Ci) fournissent un certificat d’optimalité de cette solution. 2016/2017 58 Chapitre 4: Dualité en programmation linéaire Dualité d’un programme canonique: Soit le programme linéaire primal (PLP) donné sous la forme de PLC suivante: Max Z = cx s.c. Ax ≤ b x≥0 PLC: Où: c = (c1,c2,..cn) et bT = (b1,b2,..bm) et xT = (x1,x2,..xn) et A = (ai,j)1 ≤ i ≤m,1 ≤j ≤n Soit y ( y 1 , y 2 ,.. y m ) 0 . En multipliant les contraintes du PLC par yi et faisant la somme: m (y a i 1 i i ,1 m m m i 1 i 1 i 1 ) x 1 ( y i a i , 2 ) x 2 .... ( y i a i , n ) x n y i b i Puisque: xi ≥ 0, alors on a cette inégalité sous contrainte: c 1 x 1 .. c n x n Z m i1 m ( y i a i ,1 ) x 1 i 1 ( y i a i , 2 ) x 2 .... 2016/2017 m i1 ( y i a i,m ) x m m i1 y ib i 59 Chapitre 4: Dualité en programmation linéaire La condition est donnée par: c j m i 1 y i a i , j ,1 j n Pour trouver la meilleure borne supérieure, c.à.d la plus petite, il faut résoudre le programme linéaire suivant: ( PLD m Min W y i b i i 1 m y i a i ,1 c 1 i 1 ) . sc : . m y i a i,n c n i1 y i 0 , 1 i m Ce problème est appelé problème linéaire dual (PLD) du PLC de départ 2016/2017 60 Chapitre 4: Dualité en programmation linéaire Tout PLC d’un problème primal peut être transformé en un programme dual (PLD) Min W y b Z cx Max sc : Ax b ( PLD sc : yA c ( PLC ) ) x 0 y 0 Exemple: Transformer le PL suivant sous forme de PLD ( PLC Z x1 x 2 Max x1 x 2 2 2 x x 1 2 5 ) sc : x 2 3 x1 0 x2 0 2016/2017 61 Chapitre 4: Dualité en programmation linéaire Théorème de Dualité faible: Soit x une solution admissible d’un PL canonique et y une solution admissible de son dual alors: cx ≤ yb. Preuve: ( PLP Z Max sc : Ax ) x 0 cx b ( PLD W Min sc : yA ) y 0 yb c Donc: cx ≤ (yA).x = y(Ax) ≤yb Corollaire: Soit x une solution admissible de (PLP) de valeur Z et y une solution admissible de (PLD) de valeur w. Si Z = w alors x et y sont optimales pour leur problème respectif. 2016/2017 62 Chapitre 4: Dualité en programmation linéaire Règles de dualisation • Problème de Max Problème de Min • Variable xj ≥ 0 jéme contrainte de type « ≥ » • Variable xj IR jéme contrainte de type « = » • variable xj ≤ 0 jéme contrainte de type « ≤ » • iéme contrainte de type « ≤ » variable yi ≥ 0 • iéme contrainte de type « = » variable yi IR • iéme contrainte de type « ≥ » variable yi ≤ 0 2016/2017 63 Chapitre 4: Dualité en programmation linéaire Exemple: Transformer le PLP suivant sous sa forme duale ( PLP Remarques: Z x1 3 x 2 Max x1 x 2 2 2 x x 5 1 2 ) sc : x 2 3 x 1 IR x 2 0 1/ Le sens d’optimisation est toujours inversé entre un PL et son dual. 2/ Si un PL a n variables et m contraintes, son dual a m variables et n contraintes. 3/ Chaque variable du dual correspond à une contrainte du problème de départ, et réciproquement, chaque contrainte du dual est associée à une variable du problème de départ. 4/ La dualisation est une opération involutive, i.e le dual du dual est le PLP. 2016/2017 64 Chapitre 4: Dualité en programmation linéaire Théorème de dualité forte: Si un programme linéaire standard possède une solution optimale x* = (x*D| x*E) de valeur Z*=cDx*D alors son dual possède aussi une solution optimale y* = (y*D| y*E) de valeur W*=y*Db = Z*. Remarque: Si un PL possède une solution optimale finie, il en est toujours de même pour son dual. En revanche, s’il ne possède pas d’optimum fini, son dual ne peut posséder de solutions admissibles sans contredire le théorème de dualité faible. Théorème des écarts complémentaires: Soit x = (xD|xE) une solution admissible d’un PL standard et y = (yD|yE) une solution admissible de son dual. Ces solutions sont optimales pour leur respectif ssi: yDxE = 0 et yExD = 0 2016/2017 65 Chapitre 4: Dualité en programmation linéaire Remarque: Les solutions x et y sont admissibles, elles sont non négatives et: yExD = 0 ssi: ym+jxj = 0 pour j = 1,..n et : yDxE = 0 ssi: yixn+i = 0 pour i = 1,..m Résolution du problème dual: 1/ A tout tableau est associé non seulement une base primale et sa solution basique mais également une base duale et sa solution basique. 2/ Les valeurs de la solution basique duale se lisent dans la dernière ligne du tableau. Les valeurs des variables basiques primales se lisent dans la dernière colonne du tableau. 3/ La paire de solutions basiques (primale et duale) associées à un tableau ont la même valeur et vérifiant les conditions d’orthogonalité des écarts complémentaires. 4/ Dans l’algorithme du simplexe à deux phases, la solution basique primale est toujours admissible. Dés qu’une solution basique duale admissible et rencontrée, l’optimum est atteint. 66 2016/2017 Chapitre 4: Dualité en programmation linéaire Interprétation des variables duales à l’optimum: Si un PL (standard) admet un optimum fini, il en est de même de son dual et on a: Z * m j 1 c j x * j m j 1 y i* b i W * Si la solution optimale primale est non dégénérée, l’expression de W* est unique et: Z * b i y i* La valeur optimale de la variable duale yi représente le prix marginal de la ressource i à l’optimum. y*i représente l’augmentation potentielle de la valeur optimale du problème si la ressource i actuellement limité par bi se voit augmentée d’une unité. 2016/2017 67 Chapitre 4: Dualité en programmation linéaire Algorithme dual du simplexe (phase II) Données: Un tableau dual admissible Résultat: Un tableau optimal ou un certificat de solutions admissibles 1/ Choix de variable sortante: Choisir une ligne i tel que: bi < 0, la variable basique xj quitte la base (où j est l’indice de la variable basique dans la base B) S’il n’existe pas de variables sortantes: STOP le tableau courant est optimal 2/ Choix de la variable entrante: Choisir une colonne hors base r maximisant les quotients caractéristiques duaux: j k r k N , max , a i, j 0 a a i ,k i, j S’il n’existe pas de variable entrante: STOP le dual est non borné et le primal est sans solutions admissibles 3/ Mise à jour de la base et du tableau: Pivoter autour de air et retourner à (1). 2016/2017 68 Chapitre 4: Dualité en programmation linéaire Application: Résoudre le PL suivant en appliquant l’algorithme dual du simplexe (phase II) ( PLC Z x1 2 x 2 Max 2 x1 x 2 6 x x 4 1 2 ) sc : x1 0 x 2 0 2016/2017 69 Chapitre 5: Analyse de Sensibilité (Analyse postoptimale) L’analyse optimale permet de déterminer des intervalles de variations des données pour lesquels la base optimale B* n’est pas modifiée. Elle permet de déterminer la sensibilité de (PL) par rapport aux données, à savoir: 1. Variation d’un coefficient de la fonction économique (Z) 2. Variation du second membre d’une contrainte (b). 3. Prix marginaux des contraintes (A) L’analyse de sensibilité se concentre sur l’étude du comportement de la solution optimale d’un programme lors de la variation de ses données (A,b,c). Elle cherche à déterminer dans quel intervalle peut varier un coefficient sans que la base optimale ne change. 2016/2017 70 Chapitre 5: Analyse de Sensibilité (Analyse postopotimale) On rappelle l’expression du tableau optimale d’un PL est donnée par: T*= xD xE Z b B-1A CBB-1A - CD B-1 CBB-1 - CE 0 1 B-1b CBB-1b 1er cas: Si b change, alors uniquement la derniére colonne du tableau T* est modifiée et ce dernier reste optimale tant que la solution basique primale reste admisssible: Si la iéme composante de b est modifiée, b’ = b + δei (où ei est le iéme vecteur de la base canonique). La base actuelle reste optimale tant que: B-1b’ = B-1(b + δei) ≥ 0 2016/2017 71 Chapitre 5: Analyse de Sensibilité (Analyse postopotimale) 2éme cas: Si c change, alors uniquement la derniére ligne du tableau T* est modifiée et ce dernier reste optimale tant que la solution basique duale reste admisssible: Si la jéme composante de est modifiée, c’ = c + δej. La base actuelle reste optimale tant que: - δ D = C’BB-1A – C’D ≥ 0 & - δ E = C’BB-1 – C’E ≥ 0 Dans le problème initial on a: CE = 0) 3éme cas: Si on ajoute une contrainte, le tableau T* reste optimale tant que la solution basique duale reste admisssible. La base actuelle reste optimale tant que: - δ D = CBB-1A – CD ≥ 0 & - δ E = CBB-1– CE ≥ 0 & B-1b ≥ 0 2016/2017 72 Partie 2: Théorie des graphes 2016/2017 73 Plan du cours Chapitre 1 : Eléments de la théorie des graphes. Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin. Chapitre 3: Problèmes d’ordonnancement et de gestion de projets. 2016/2017 74 Chapitre 1: Eléments de la théorie des graphes Exemples d’applications • La structure d’un site Web est représentée par un graphe orienté, les URL sont les sommets et les arcs étant les liens. Un lien entre deux pages peut exister si et seulement si la première page contient le lien pour aller vers la seconde. • En téléphonie mobile, les graphes sont utilisés pour représenter les cellules qui composent le réseau. Un lien entre deux cellules peut exister si et seulement s’il existe une chaîne de communication entre elle. • En transport publique, les sommets sont les quartiers, deux quartiers sont reliés s’il y a suffisamment de personnes qui voyage d’un quartier à l’autre. 2016/2017 75 Chapitre 1: Eléments de la théorie des graphes Définitions: On considère un ensemble fini V = {v1,v2,..vn} où n est un entier naturel et une relation binaire sur V, assimilée à une partie E de V×V c’est à dire un ensemble de couples (vi,vj) où i,j {1,…n}. 1. Graphe orienté: La donnée du couple (V,E) définit un graphe orienté, les éléments de V sont appelés des sommets et ceux de E des arcs et sont représentés par des flèches. Dans un arc (vi,vj), vi est appelé extrémité initial et vj extrémité finale. Un arc (vi,vi), est appelé une boucle. On définit la fonction d’incidence , définie par: : V P(V) qui associe à chaque sommet v l’ensemble des extrémités finales des arcs partant de ce sommet v. Un graphe est donc entièrement déterminé par la donnée de V et Γ, on notera désormais un graphe G = (V, E) ou G = (V, E, ). 2016/2017 76 Chapitre 1: Eléments de la théorie des graphes Exemple: G=(V,E) V = {A,B,C,D,E,F}; E= {(A,B),(A,D),(B,C),(C,B),(C,E),(D,C),(D,D),(D,E)} Dans ce cas, Γ est définie par : Γ(A) = {B, D}, Γ(B) = {C}, Γ(C) = {B, E}, Γ(D) = {C, D, E}, Γ(E) = Γ(F) = 2016/2017 77 Chapitre 1: Eléments de la théorie des graphes 2. Graphe non orienté: Dans certaines applications, seule la liaison entre les sommets importe, et non le sens de la liaison. On parlera d’arrête, noté [vi,vj]et non pas d’arc. Un tel graphe est dit non orienté. V = {A, B, C, D,E} Déterminer les arêtes de ce graphe 2016/2017 78 Chapitre 1: Eléments de la théorie des graphes Définitions: Soit G = (V,E) un graphe, on a les définitions suivantes : 1. Graphe réflexif : xi V, (xi , xi) E. 2. Graphe symétrique : xi, xj V, (xi , xj ) E => (xj , xi) 3. Graphe transitif : xi, xj, xk V, (xi , xj ) E, (xj , xk) 4. Graphe partiel : Soit E’ E, G’ = (V,E’) est un graphe partiel. L’application Γ’associée est une restriction de Γ, i.e. 5. Sous-graphe : Soit V’ V et E’ x V, Γ’(x) E. E => (xi , xk) E. Γ(x). E l’ensemble des arcs obtenu en ne conservant dans E que les arcs dont les extrémités sont dans V’, G’ = (V’, E’ ) est un sous-graphe de G. 2016/2017 79 Chapitre 1: Eléments de la théorie des graphes Exemples: 6. Adjacence : Deux sommets sont dits adjacents s’ils sont reliés par un arc ou une arête. Deux arcs sont adjacents s’ils ont une extrémité commune. 2016/2017 80 Chapitre 1: Eléments de la théorie des graphes 7. Chemins et chaînes: Un chemin est constitué d’une séquence d’arcs adjacents dont l’extrémité finale de l’un est l’extrémité initiale du suivant, sauf pour le dernier. Dans le cas d’un graphe non orienté, on parlera de chaîne. Un chemin est : simple s’il ne passe pas deux fois par le même arc, c.à.d un graphe sans boucle ni arrête ou arcs multiples. En général, on dit graphe pour désigne un graphe simple. Dans le cas de boucles ou d’arrêtes ou arcs multiples, on parlera de multigraphe. élémentaire s’il ne passe pas deux fois par le même sommet. Un circuit si l’extrémité finale coïncide avec l’extrémité initiale. Dans le cas d’une chaîne on parlera de cycle. Hamiltonien s’il passe une fois et une seule par chacun de ses sommets. Si c’est de plus un circuit c’est un circuit Hamiltonien. 2016/2017 81 Chapitre 1: Eléments de la théorie des graphes 8. Graphe orienté est sans circuit ou acyclique: s’il ne possède pas de circuit. 9. Connexité: • Graphe connexe: si quels que soient les sommets vi et vj de V, il existe une chaîne de vi vers vj . C'est-à-dire, s'il existe une suite d'arêtes permettant d'atteindre vj à partir de vi . • Sous-graphe connexe maximal d'un graphe non orienté quelconque est une composante connexe de ce graphe. 2016/2017 82 Chapitre 1: Eléments de la théorie des graphes • Composante fortement connexe d'un graphe orienté G est un sous-graphe de G possédant la propriété suivante, et qui est maximal pour cette propriété : pour tout couple (u, v) de sommets dans ce sous-graphe, il existe un chemin de u à v. Autrement dit, un graphe est dit fortement connexe s'il est formé d'une seule composante fortement connexe. De manière générale, un graphe se décompose de manière unique comme union de composantes fortement connexes disjointes. Un graphe est connexe ssi il possède une seule composante connexe. Un graphe est fortement connexe ssi il possède une seule composante fortement connexe. 2016/2017 83 Chapitre 1: Eléments de la théorie des graphes Ce graphe comporte 5 composantes fortement connexes, trois ne contiennent qu'un seul sommet, une est constituée d'un triangle et la dernière comporte 9 sommets. 2016/2017 84 Chapitre 1: Eléments de la théorie des graphes Arbre et forêt: • Un multigraphe (non orienté) sans cycle est une forêt. • Un multigraphe (non orienté) sans cycle et connexe est un arbre. • Chaque composante connexe d’une forêt est un arbre. Exemples: 2016/2017 85 Chapitre 1: Eléments de la théorie des graphes Résumé: Graphe orienté Graphe non orienté arc arête chemin Chaîne circuit 10. Degré: Soit G un multigraphe, on définit: cycle • Le demi-degré extérieur du sommet vi est le nombre d’arcs du graphe issus de vi, on le note d+(vi), on a d+(vi) = |Γ(vi)|. Dans le cas où d+(vi) = 0, on dit que vi est une sortie du graphe. • Le demi-degré intérieur du sommet vi est le nombre d’arcs du graphe aboutissant à vi, on le note d−(vi). Dans le cas où d−(vi) = 0, on dit que vi est une entrée du graphe. Le degré du sommet vi est d(vi) = d+(vi) + d−(vi). Dans le cas d’une boucle, on augmente de 2 le degré. Propriété: Dans tout multigraphe, la somme des degrés est un nombre pair. 2016/2017 86 Chapitre 1: Eléments de la théorie des graphes Matrices associées à un graphe (simple): 1. Cas d’un graphe non orienté: Soit G = (V, E) un graphe non orienté , où |V| = n et |E| = m. • A ce graphe, on fait correspondre une matrice B d’adjacence (ou sommetssommets) de taille (n×n) définie par: et v sont adjacents • A ce graphe, on fait correspondre une matrice A d’incidence (ou sommet- ( b i , j ) i , j , où b i, j 1 si v B i j 0 sinon arrête) de taille (n×m) définie par: A ( a i , k ) i , k , où a i, k 1 si v 2016/2017 i est incident à e k 0 sinon 87 Chapitre 1: Eléments de la théorie des graphes Matrices associées à un graphe (simple): 2. Cas d’un graphe orienté: Soit G = (V, E) un graphe orienté , où |V| = n et |E| = m. • A ce graphe, on fait correspondre une matrice B d’adjacence (ou sommetssommets) de taille (n×n) définie par: B • ( b i , j ) i , j , où b i, j 1 si (v i , v j ) E 0 sinon A ce graphe, on fait correspondre une matrice A d’incidence (ou sommet-arc) de taille (n×m) définie par: A ( a i , k ) i , k , où a i, k 1 si v i est l' extrimité - 1 si v i est l' extrimité 0 sinon 2016/2017 initiale de e k finale de e k 88 Chapitre 1: Eléments de la théorie des graphes 3. Exercice: Déterminer les deux matrices d’adjacence B et d’incidence A relatives aux graphes suivants: 2016/2017 89 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin I. Problèmes de l'arbre recouvrant de poids minimal (ARPM) En théorie des graphes, étant donné un graphe non orienté connexe dont les arêtes sont pondérées, un arbre couvrant de poids minimal de ce graphe est un arbre couvrant (sous-ensemble qui est un arbre et qui connecte tous les sommets ensemble) dont la somme des poids des arêtes est minimale. L'arbre couvrant de poids minimal est aussi connu sous certains autres noms, tel qu’arbre couvrant minimum (ARPM) ou encore arbre sous-tendant minimum. Si on considère un réseau où un ensemble d'objets qui doivent être reliés entre eux , l'arbre couvrant minimum est la façon de construire un tel réseau en minimisant un coût représenté par le poids des arêtes (par exemple la longueur totale de câble utilisée pour construire un réseau électrique). 2016/2017 90 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin 1. Propriétés sur l'arbre de recouvrement minimum • Un arbre est un graphe partiel connexe sans cycle. • Un arbre contient exactement (n-1) arêtes où n est le nombre de sommets. • Un graphe partiel sans cycle de n-1 arêtes est un arbre. Un graphe partiel connexe de (n-1) arêtes est un arbre. • Il existe au moins un arbre de coût minimal qui contient l'une des arêtes de plus petite valeur. 2016/2017 91 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin 2. Algorithme de Kruskal: C’est un algorithme glouton (Greedy) qui permet de déterminer l'arbre recouvrant de poids minimal dans un graphe pondéré positivement. Son principe de base est de représenter les classes de connexité par des ensembles. Au départ, on supprime toutes les arêtes, puis on ajoute celles de poids le plus petit possible nécessaire à unir tous les sommets dans une unique classe de connexité. Applications: 1. Simplifier un câblage 2. Supprimer les liaisons maritimes les moins rentables en préservant l'accessibilité aux différents ports. 2016/2017 92 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Algorithme de Kruskal Soit n le nombre de sommets et m le nombre des arêtes du graphe G = (V,E,e), - Trier les m arêtes du graphe par valeurs croissantes. Soit Eo une des plus petite arêtes : F = { Eo }. - Soit p le nombre d'arêtes déjà placées dans le graphe partiel : p = 1. Tant que p inférieur ou égal à n-2 et que toutes les arêtes n'ont pas été examinées faire Soit Eo la plus petite arête non encore examinée. Si l'ajoût de Eo à F ne crée pas de cycle dans le graphe partiel alors ajouter Eo à F ; p = p + 1 ; fin Fin Si p = n-1 alors F contient les arêtes d'un arbre de recouvrement minimal sinon le graphe initial n'était pas connexe et il n'est pas possible de trouver un arbre de recouvrement minimal. fin 2016/2017 93 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Application 1: Appliquer l’algorithme de Kruskal pour déterminer l’arbre maximal de poids minimum des deux graphes suivants. 2013-2014 2016/2017 94 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Réponse: Arbre couvrant de poids miniunum du graphe 2: 2016/2017 95 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin 3. Algorithme de Prim: C’est un algorithme glouton qui permet de trouver un arbre couvrant minimal dans un graphe connexe pondéré et non-orienté. En d'autres termes, cet algorithme trouve un sous-ensemble d'arêtes formant un arbre sur l'ensemble des sommets du graphe initial, et tel que la somme des poids de ces arêtes soit minimale. Si le graphe n'est pas connexe, alors l'algorithme ne déterminera l'arbre couvrant minimal que d'une composante connexe du graphe. L’algorithme de Prim est donné par: 1. Initialiser T avec sommets : un sommet de G qu’on choisit arêtes : aucune 2. Répéter : Trouver toutes les arêtes de G qui relient un sommet de T et un sommet extérieur à T. Parmi celles-ci, choisir une arête de poids le plus petit possible Ajouter à T cette arête et le sommet correspondant 3. S’arrêter dès que tous les sommets de G sont dans T 4. Retourner T 2016/2017 96 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Application 3: Appliquer l’algorithme de Prim pour déterminer l’arbre maximal de poids total minimum, sachant que x est la source. 2016/2017 97 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Réponse: 2016/2017 98 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin II. Problèmes de plus courts chemin Problème de la section minimale: Soit G = (V, E, e) un graphe où e est une pondération de ses arêtes. Soit C une chaîne reliant les sommets i et j de G. La section de G est définie comme la valeur maximale des poids des arêtes de G. Pour deux sommets i et j de G donnés, le problème de la section minimale consiste à déterminer la chaîne de section minimale reliant ces deux sommets. Théorème: L’arbre maximal de poids minimum fournit également des chaînes de section minimale entre toutes paires de sommets d’un graphe. 2016/2017 99 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Problèmes de plus courts chemins dans les réseaux Un réseau est un graphe orienté G = (V, E, e) muni d’une ou plusieurs pondérations de ses arcs ou de sommets. Ainsi, on peut noter G = (V, E, e), où e est une pondération, quelconque. Les problèmes de plus courts chemins se divisent en trois grandes familles: 1. Déterminer un plus court chemin d’un sommet origine (source) s à un sommet destination (puits) t. Exemple: Algorithme de Ford 2. Déterminer les plus courts chemins d’un sommet source s à tous les autres sommets du graphe. Exemple: Algorithme de Dijkstra 3. Déterminer les plus courts chemins entre toutes les paires (ordonnées) de sommets du graphe. 2016/2017 100 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Remarques: 1. Dans les réseaux la longueur d’un chemin ou d’un circuit correspond à la somme des poids de ses arcs et non pas à leur nombre. 2. Les problèmes de plus courts chemins ne sont pas définis par des coûts négatifs. Principe d’optimalité de Bellman : Programmation dynamique inventée par Bellman (en 1954) pour résoudre des problèmes de chemins optimaux (longueur max. ou min.). La Programmation dynamique est une méthode de construction d’algorithme très utilisée en optimisation combinatoire (Recherche de solution optimale dans un ensemble fini de solutions mais très grand). Il s’agit d’une méthode d’énumération implicite: on retient ou rejette des sous-ensembles de solutions mais on ne construit pas toutes les solutions. 2016/2017 101 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin On rejette certaines solutions sans les avoir construites explicitement si elles appartiennent à un sous-ensemble qui n’est pas intéressant. Principe d’optimalité de Bellman: Un chemin optimal est formé de souschemins optimaux : Si (C) est un chemin optimal allant de A à B et si (C) appartient à (C) alors les sous-chemins de (C) allant de A à C et de C à B sont optimaux. On note F(y) la longueur minimale de tous les chemins allant de x0 à y. Formule récursive: F ( y ) min( F ( z ) L z,y ) z y où Lz,y est la longueur minimale de tous les chemins allant de z à y. 2016/2017 102 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Algorithme de More Dijkstra En théorie des graphes, l'algorithme de Dijkstra sert à résoudre le problème du plus court chemin. Il s'agit de construire progressivement, à partir des données initiales, un sous-graphe dans lequel sont classés les différents sommets par ordre croissant de leur distance minimale au sommet de départ. La distance correspond à la somme des poids des arêtes empruntées. 2016/2017 103 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Algorithme de More Dijkstra Données: Un réseau R = (V,E, e) connexe, |V| = n, |E| = m où e est une pondération positive des arcs du graphe G = (V,E). Un sommet particulier s V. Résultat: Pour tout sommet i V, la longueur i d’un plus court chemin de s à i (i = s’il n’existe pas de chemin de s à i dans G) ainsi que le prédecesseur immédiat p(i) du sommet i dans un tel chemin. 1/ s = 0, i = i s, p(i) = NULL, i, T = V 2/ Tant que T faire i. Soit i le sommet de T de plus petite étiquette i ii. Si un tel sommet n’existe pas (j = j T) : STOP, les sommets encore dans T ne sont pas atteignables depuis s. iii. Sinon, retirer i de T et pour tout successeur j de i dans T tester si j > i + eij auquel cas poser: j = i + eij et p(j) = i 2016/2017 104 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Algorithme de More Dijkstra: Application: Chercher les plus courts chemins d’origine A dans ce graphe: 2016/2017 105 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Algorithme de More Dijkstra Réponse: résultat chemin et non un circuit 2016/2017 106 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Algorithme de Ford pour la recherche du plus court chemin L'algorithme de Bellman-Ford (Bell-End-Ford) est un algorithme de programmation dynamique qui permet de trouver des plus courts chemins, depuis un sommet source donné, dans un graphe orienté pondéré. Contrairement à l’algorithme de Dijkistra, qui ne peut être utilisé que lorsque tous les arcs ont des poids positifs ou nuls, l'algorithme de BellmanFord autorise la présence de certains arcs de poids négatif et permet de détecter l'existence d'un circuit absorbant, c'est-à-dire de poids total négatif, accessible depuis le sommet source. Chaque sommet i du graphe est affecté d’une valeur λi qui initialement vaut 0 pour le sommet 1 et +∞ pour les autres sommets. A la fin, λi contiendra la valeur du plus court chemin de 1 à i. On utilisera un tableau T : Tij est égal à la longueur de l’arc (i, j) si (i, j) U, +∞ sinon. La stratégie utilisée est la suivant: pour tout couple (i, j) de sommets traité, si Tij < λj − λi, on remplace λj par λi + Tij .jusqu’a 2016/2017 ce que tous les remplacements sont effectués. 107 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Algorithme de Bellman Ford λ1 ← 0 ; Pour i = 2 à n Faire λi ← +∞; i ← 1 ; Tant que i ≤ n Faire j←2; Tant que j ≤ n Faire Si Tij < +∞ Si λj > λi +Tij λj ← λi + Tij ; Si i > j i←j Sinon j ← j + 1; sinon j ← j +1 Sinon j ← j + 1 Fin ; i ← i + 1; 2016/2017 Fin. 108 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Exemple: Application de Bellman Ford sur un graphe 2016/2017 109 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Gestion de projets: Program ou Project Evaluation and Review Technique (PERT) La méthode PERT permet d'évaluer la durée de réalisation d'un projet complexe et de détecter les parties de ce projet ne supportant aucun retard. Elle résout des problèmes appelés problèmes d'ordonnancement. Le projet sera subdivisé en tâches. En général, elles ne pourront toutes être réalisées simultanément, certaines tâches devront être achevées avant que d'autres ne puissent débuter. On résumera l'information sur le projet sous la forme d'un tableau, appelé échéancier, où seront indiquées les tâches, leur durée, et les contraintes d'antériorité à respecter. 2016/2017 110 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Gestion de projets: Méthode PERT Exemple: Soit l’échancier suivant: Graphe PERT: construit à partir de l'échéancier, est un graphe valué dont les arcs seront les tâches, les valeurs des arcs étant leur durée et les sommets représenteront des états d'avancement du projet, numérotés de 1 à n. 2016/2017 111 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Gestion de projets: Méthode PERT Le graphe devra respecter deux contraintes : 1. en un sommet, toutes les tâches se trouvant sur un chemin y menant, doivent être achevées 2. il n'y a pas d'arc de i vers j avec i est supérieur à j 2016/2017 112 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Gestion de projets: Méthode PERT Définitions: 1. Pour un sommet, la date au plus tôt (notée : t) représente concrètement le temps minimum nécessaire pour atteindre ce sommet. t1 = 0 et tj = Max ( ti + di j ) sur tous les i précédant j avec di j = durée de la tâche i j. Dans l'exemple précédant: t1 = 0, t2 = 0+6 = 6, t3 = 0+5 = 5, t4 = 6+4 = 10, t5 = max(6+0 , 5+6 ) = 11, t6 = max ( 11+6 , 10+5 ) = 17, t7 = 17+4 = 21. 2. Pour un sommet, la date au plus tard (notée : T ) représente concrètement la date à laquelle cet état doit obligatoirement être atteint si l'on ne veut pas augmenter la durée totale du projet. Tn = tn = Durée du projet et Ti = Min ( Tj – di j ) sur tous les j suivant i 2016/2017 113 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Gestion de projets: Méthode PERT Dans l'exemple précédant, T7 = 21, T6 = 21 - 4 = 17, T5 = 17 - 6 = 11, T4 = 17 - 5 = 12, T3 = 11 - 6 = 5, T2 = min ( 11-0 , 12-4 ) = 8, T1 = min ( 8-6 , 5-5 ) = 0 On aura toujours t1 = T1 = 0 et t inférieur ou égal à T pour tout sommet. 3. On appelle T-t la marge de flottement du sommet. 4. La marge libre d'une tâche représentera concrètement le retard maximal qu' on pourra prendre dans la réalisation d'une tâche sans retarder le début des tâches suivantes, on la notera ML. 5. La marge totale d'une tâche représentera concrètement le retard maximal qu' on pourra prendre dans la réalisation d'une tâche sans retarder l'ensemble du projet, on la notera MT. 2016/2017 114 Chapitre 2: Problèmes d’arbre couvrant de poids minimum et de plus court chemin Définitions: Gestion de projets: Méthode PERT 6. Si on note ij la tâche allant du sommet i au sommet j: MLij = tj - ti - dij et MTij = Tj - ti – dij. Compte tenu du mode calcul, les marges seront toujours positives ou nulles et la marge libre d'une tâche sera toujours inférieure ou égale à sa marge totale. 7. Pour chaque tâche ij, on note tj le début au plus tôt et Ti le début au plus tard. On définit: Marge(ij) = Ti-tj. 8. On qualifiera de critique, une tâche dont la marge totale est nulle, c'est en quelque sorte une tâche "urgente", une tâche sur laquelle il ne faut pas prendre de retard si l'on ne veut pas augmenter la durée totale du projet. 9. Un chemin critique est un chemin du sommet de départ au sommet final composé uniquement de tâches critiques. 10. Rang du projet: c’est la durée minimale du projet, c’est la longueur du chemin critique. 2016/2017 115