Chapitre 6. Programmation Dynamique. Méthodes P.S.E.P. 6.1 Programmation dynamique. 6.1.1 Exemple introductif



Documents pareils
Programmation linéaire

Cours de Master Recherche

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Fonctions de plusieurs variables

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

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

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

Pour l épreuve d algèbre, les calculatrices sont interdites.

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

3 Approximation de solutions d équations

Plus courts chemins, programmation dynamique

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

Programmation linéaire

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

LE PROBLEME DU PLUS COURT CHEMIN

Exercices - Polynômes : corrigé. Opérations sur les polynômes

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

Cours 02 : Problème général de la programmation linéaire

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

Algorithmes de recherche

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

OPTIMISATION À UNE VARIABLE

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

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

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

Fonctions de plusieurs variables

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Chapitre 5 : Flot maximal dans un graphe

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. address: Nicolas.Thiery@u-psud.fr URL:

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

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

Correction du Baccalauréat S Amérique du Nord mai 2007

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

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

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Resolution limit in community detection

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Cours d analyse numérique SMI-S4

CCP PSI Mathématiques 1 : un corrigé

Chapitre 7. Circuits Magnétiques et Inductance. 7.1 Introduction Production d un champ magnétique

Cours d Analyse. Fonctions de plusieurs variables

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

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

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

de calibration Master 2: Calibration de modèles: présentation et simulation d

Optimisation Discrète

Mathématiques appliquées à l'économie et à la Gestion

Programmation linéaire et Optimisation. Didier Smets

Cours3. Applications continues et homéomorphismes. 1 Rappel sur les images réciproques

Programmation Par Contraintes

Les arbres binaires de recherche

La fonction exponentielle

Simulation de variables aléatoires

Fonctions de deux variables. Mai 2011

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

Les devoirs en Première STMG

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercice autour de densité, fonction de répatition, espérance et variance de variables quelconques.

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

Optimisation for Cloud Computing and Big Data

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

Chapitre 7. Récurrences

ARBRES BINAIRES DE RECHERCHE

Programmation Linéaire - Cours 1

Arbres binaires de décision

LA NOTATION STATISTIQUE DES EMPRUNTEURS OU «SCORING»

Complément d information concernant la fiche de concordance

Statistique : Résumé de cours et méthodes

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

Université Paris-Dauphine DUMI2E 1ère année, Applications

Objectifs. Clustering. Principe. Applications. Applications. Cartes de crédits. Remarques. Biologie, Génomique

(Exemple ici de calcul pour une Ducati 748 biposto, et également pour un S2R1000, équipé d un disque acier en fond de cloche, et ressorts d origine)

Quantification Scalaire et Prédictive

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Programmation par contraintes. Laurent Beaudou

Big Data et Graphes : Quelques pistes de recherche

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

Architecture des Systèmes d Information Architecture des Systèmes d Information

Eléments de Théorie des Graphes et Programmation Linéaire

Pourquoi l apprentissage?

Définitions. Numéro à préciser. (Durée : )

Initiation à l algorithmique

Distribution Uniforme Probabilité de Laplace Dénombrements Les Paris. Chapitre 2 Le calcul des probabilités

Exercices sur les interfaces

TD 1 - Structures de Traits et Unification

Représentation des Nombres

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Apprentissage par renforcement (1a/3)

TSTI 2D CH X : Exemples de lois à densité 1

Cours de Probabilités et de Statistique

Leçon 01 Exercices d'entraînement

Licence Sciences et Technologies Examen janvier 2010

Système ASC unitaire triphasé. PowerScale kva Maximisez votre disponibilité avec PowerScale

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

Chapitre 0 Introduction à la cinématique

Chapitre 2 Le problème de l unicité des solutions

Exemple 4.4. Continuons l exemple précédent. Maintenant on travaille sur les quaternions et on a alors les décompositions

Calcul différentiel sur R n Première partie

Transcription:

Chapitre 6 Programmation Dynamique. Méthodes P.S.E.P. 6.1 Programmation dynamique 6.1.1 Exemple introductif Problème : n matrices M i (m i, m i+1 ) à multiplier en minimisant le nombre de multiplications, variable selon le parenthésage. Exemple 1 On donne M 1 (100, 1), M 2 (1, 100), M 3 (100, 10), M 4 (10, 20) alors (M 1 M 2 )(M 3 M 4 ) prend 230000 multiplications scalaires : 100 1 100 pour M 12 = M 1 M 2, (100, 100) et 100 10 20 pour M 34 = M 3 M 4, (100, 20) puis 100 100 20 pour M 12 M 34. M 1 ((M 2 M 3 )M 4 ) prend 3200 opérations : 1 100 10 pour M 23 = M 2 M 3 (1, 10), 1 20 pour M 24 = M 23 M 4 (1, 20) et 100 1 20 pour le produit final. Moralité : il faut calculer le meilleur parenthésage avant de se lancer dans les calculs, à condition que le calcul du parenthésage ne soit pas trop coûteux. Comme il y a un nombre exponentiel de parenthésage possibles, (voir exercice), il n est pas efficace de les énumérer tous. On va utiliser la programmation dynamique pour trouver le meilleur parenthésage possible. Généralisation : on généralise le problème en trouver le meilleur parenthésage pour M i M i+1...m j pour tout couple i, j tel que 1 i j n. La solution du problème initial est obtenue pour i = 1, j = n. On calcule c(i, j) le nombre minimal d opérations requis pour M i M i+1...m j. Formulation récursive : c(i, j) = Min i p<j (c(i, p) + c(p + 1, j) + m i m p+1 m j+1 ) Pour avoir aussi le parenthésage on se rappelle les p qui donnent le minimum. 1

2 CHAPITRE 6. PROGRAMMATION DYNAMIQUE. MÉTHODES P.S.E.P. Organisation des calculs de manière itérative : La formule récursive donne lieu à un arbre de calculs contenant beaucoup de redondance. Pour éviter ces calculs redondants on effectue les calculs en partant des feuilles de l arbre, en calculant successivement les c(i, j) pour j i = k, k une constante qui vaudra 0, 1,..., n 1. Etape 0 : Pour tout i = 1,..., n c 0 (i, i) = 0 Etape k : Pour tout i, j dans 1,...,n tels que j i = k, calculer c k (i, j) = Min i p<j (c p i (i, p) + c j p 1 (p + 1, j) + m i m p+1 m j+1 ) On retient les valeurs de p donnant le minimum. Arrêt pour k = n 1 et solution pour i = 1, j = n. Remontée des calculs : on trouve un parenthèsage optimal en remontant du résultat vers les feuilles en utilisant un p ayant donné la solution optimale. Pour l exemple les calculs effectués donnent : k = 0 c 0 (1, 1) = 0 c 0 (2, 2) = 0 c 0 (3, 3) = 0 c 0 (4, 4) = 0 k = 1 c 1 (1, 2) = 10000 c 1 (2, 3) = 1000 c 1 (3, 4) = 20000 k = 2 c 3 (1, 3) = 2000 c 3 (2, 4) = 1200 k = 3 c 4 (1, 4) = 3200 Le nombre de termes calculés est n 1 +... + 1 = n(n 1)/2. Un terme sur la ligne correspondant à j i = k demande k multiplications. On fait donc Σ k=n 1 k=0 (n k)k = O(n 3 ) opérations. 6.1.2 Méthode La méthode est concue pour les problèmes vérifiant le principe suivant. Principe d optimalité des solutions induites. Le problème P peut se décomposer en deux sous-problèmes P 1 et P 2 tels que une solution S de P se décompose en S 1 solution de P 1 et S 2 solution de P 2. Dans ce cas si S est optimale alors S 1 et S 2 sont optimales. Exemple 2 Plus court chemin dans un graphe entre x et y : si un chemin x = x 1, x 2,...,x n = y est un chemin de longueur minimale entre x et y alors pour tout z de ce chemin (i) Le chemin x 1 = x, x 2,...,x k = z est un chemin de longueur minimale entre x et z et (ii) le chemin x k = z, x k+1,...,x n = y est un chemin de longueur minimale entre z et y. Le principe de la méthode est le suivant : 1. Chercher une formulation récursive. 2. Si échec en (1) alors généraliser et aller en (1) sinon aller en (3). 3. Organiser les calculs de manière itérative des feuilles vers la racine.

6.2. EXEMPLES 3 (a) Organisation des calculs en étapes. (b) Stockage (tabulation) des résultats intermédiaires pour n effectuer un calcul qu une seule fois. Explication : La formulation récursive conduit à une exploration d arbre de recherche qui est inefficace en général à cause des multiples calculs redondants (souvent le cout est exponentiel, (cf exemple de fibonacci). 4. Retrouver la solution en remontant les calculs effectués (exige d avoir stocké à chaque étape la(es) valeur(s) qui donne(nt) la solution optimale.) 6.2 Exemples 6.2.1 Voyageur de commerce Problème. n villes x 0, x 1,...,x n 1 à visiter une et une seule fois en partant et revenant de x 0 et en minimisant le cout du trajet avec c x,y le cout pour aller directement de x à y. 1. Généralisation. F(y, S)= cout pour aller de y à x 0 en passant par toutes les villes de S avec S un sous-ensemble de villes avec y, x 0 S. 2. Formulation récursive. F(y, S) = Min z S (c y,z + F(z, S {z}) La solution du problème initial est obtenue avec F(x 0, S) avec S = {x 1,...,x n 1 }. 3. Organisation en étapes par cardinalité croissante des ensembles S. Etape 0. F 0 (y, ) = c y,x0 (avec c x0,x 0 = 0) et V 0 (y, ) =. Etape k. Pour tout y, S tel que y, x 0 S et S = k, calculer F k (y, S) = Min z S (c y,z + F k 1 (z, S {z})) et on se souvient des villes qui donnent le minimum V k (y, S) = {z z realise le minimum dans le calcul de F k (y, S)} Arret pour k = n 1 : on calcule donc F n 1 (x 0, {x 1,..., x n 1 }) qui donne la solution du problème initial. 4. Remontée des calculs. Choisir z 1 V n 1 (x 0, {x 1,...,x n 1 }) et définir S 1 = {x 1,...,x n 1 } {z 1 }. Tant que S p faire choisir z p V n p (z p, S p 1 ) S p = S p 1 {z p }. fait

4 CHAPITRE 6. PROGRAMMATION DYNAMIQUE. MÉTHODES P.S.E.P. 6.2.2 Programmation linéaire entière : cas simple Max z = Σ i=n i=1 c i.x i Σ i=n i=1 a ix i B 0 x i g i i = 1,..., n avec a i 0, c i 0 pour i = 1,..., n. Pour simplifier on suppose a i, c i, B, g i entiers. Il est important de réaliser que ce n est qu un cas très particulier de programmation linéaire : tous les coefficients sont positifs ou nul. 1. Généralisation : F k (b)= solution optimale du problème obtenu en posant x j = 0 pour j > k et remplacant B par b avec 0 b B. On a bien la solution du problème initial avec F n (B). 2. Formulation récursive : F k (b) = Max αk = 0,...,g k 0 b a k α k F k 1(b a k α k ) + c k α k 3. Organisation des calculs de manière itérative. Etape 0 : F 0 (b) = 0 Etape k : pour tout b = 0,..., B calculer F k (b) = Max αk = 1,...,g k 0 b a k α k F k 1(b a k α k ) + c k α k et on se souvient des valeurs qui donnent le maximum : fin pour k = n. Exemple : Les calculs des F k (b) sont donnés par : Max z = 5x 1 + 4x 2 + 6x 3 2x 1 + 2x 2 + 3x 3 4 x i {0, 1} i = 1,...,4 Exemple de calcul : F 2 (4) = Max α2 = 0, 1 4 2α 2 0 b 0 1 2 3 4 F 0 (b) 0 0 0 0 0 F 1 (b) 0 0 5 5 5 F 2 (b) 0 0 5 5 9 F 3 (b) 0 0 5 6 9 (F 1 (4 2α 2 ) + 4α 2 ) = Max(F 1 (4), F 1 (2), F 1 (0)) = 9

6.3. MÉTHODES P.S.E.P. (BRANCH AND BOUND). 5 Cette méthode se généralise sans difficculté à un systèmes d équations (dont les coefficients sont 0). 6.3 Méthodes P.S.E.P. (branch and bound). P.S.E.P=programmation par séparation et évaluation progressive. Le principe est de séparer (branch) les solutions du problèmes en plusieurs ensembles de solutions et d utiliser une évaluation partielle pour éliminer des solutions grâce à des bornes sur les valeurs possibles des solutions (bound). Sans cette étape d élimination on énumerer explicitement toutes les solutions. Grâce aux bornes, l énumeration est implicite (certaines solutions ne sont pas calculées car on sait que c est inutile). Principe : On décompose S l ensemble des solutions de P en S 1, S 2,...,S m tels que { S = i=1,...,m S i S i < S pour i = 1,..., n et on itère la décomposition jusqu à ce qu on obtienne des ensembles de solutions calculables (typiquement quand S = 1, mais pas seulement) 6.4 Exemples 6.4.1 Sac à dos Problème : n objets à prendre, l objet i pèse p i > 0 et rapporte c i > 0 quand il est vendu. Le poids total disponible est P. Modélisation : Max z = c 1 x 1 +... + c n x n p 1 x 1 +... + c n x n P x i {0, 1} i = 1,..., 4 Au problème on associe N le nombre de décision prises R le poids disponible B une majoration du bénéfice possible Séparation. La séparation consiste à décider de prendre ou laisser un objet de plus. choix sur x i x i = 0 x i = 1 N 1 = N + 1 R 1 = R B 1 = B c i N 2 = N + 1 R 2 = R p i B 2 = B L évaluation consiste d une part à s arrêter dès que R < 0 et surtout à utiliser des sous-problèmes résolus (donc pour lequel on connait le bénéfice) et la borne sur le bénéfice pour couper des branches de l arbre selon le principe suivant : si un noeud est caractérisé

6 CHAPITRE 6. PROGRAMMATION DYNAMIQUE. MÉTHODES P.S.E.P. par (N,R,B) et qu on a calculé une branche qui donne un bénéfice réel (attention pas une estimation, un bénéfice atteint) de B > B alors il est inutile de développer le noeud. Exemple. Max z = 8x 1 + 11x 2 + 6x 3 + 4x 4 5x 1 + 7x 2 + 4x 3 + 3x 4 14 x i {0, 1} On choisit la variable à instancier par un algorithme glouton en calculant c i /p i, ce qui donne x 1. (I) N = 0, B = 29, R = 14 x 1 = 1 x 1 = 0 (II) N = 1, R = 9, B = 29 (III) N = 1, R = 14, B = 21 On developpe de nouveau le problème (II) (on choisit une strategie en profondeur d abord de manière à obtenir rapidement une solution qui servira de borne. On choisit x 2 de la même manière que x 1. (II) N = 1, R =, B = 29 x 2 = 1 x 2 = 0 (IV ) N = 2, R = 2, B = 19 (V ) N = 2, R = 9, B = 18 Les developpements du problème (IV ) donne immédiatement x 3 = x 4 = 0 et un bénéfice réalisable de 19. cette borne 19 permet de couper l arbre au noeud (V ) B = 18 < 19. On développe (III) en choisissant x 2. (III) N = 1, R = 14, B = 21 x 2 = 1 x 2 = 0 (V I) N = 2, R = 7, B = 21 (V II) N = 2, R = 14, B = 10 Inutile de développer (V II) à cause de B = 10 < 19, on developpe (V I) : (V I) N = 2, R = 7, B = 21 x 3 = 1 x 3 = 0 (V III) N = 2, R = 3, B = 21 (IX) N = 2, R = 14, B = 15 On coupe (IX) et le dernier développement de (V III) donne la solution x 1 = 0, x 2 = x 3 = x 4 = 1 et z = 21. On a donc examiné 9 noeuds (à comparer aux 16 cas possibles) 6.4.2 Programmation linéaire en nombre entiers On résoud le problème P à l aide du simplexe (ce qui donne une borne sur la valeur de la fonction objectif. S il la solution est entière on s arrête sinon on choisit un x k dont la valeur α k n est pas entière et on relance le simplexe sur les sous-problèmes P x k α k

6.4. EXEMPLES 7 et P x k α k On remarque que la solution x k = α k est éliminée. On itère le developpement de l arbre, une feuille étant obtenue lorsqu on a un problème ayant une solution entière et on utilise les solutions déjà obtenues pour couper des branches de l arbre. Rien ne garantit que le processus s arrête. En fait, l idée ci-dessus est utilisée dans des méthodes plus élaborées : les méthodes de coupe qui permettent d avoir des résultats de terminaison, mais sur les exemples traités la méthode suffit (en particulier en programmation 0-1, la méthode terminera toujours (car elle reviendra à instancier une variable par 0 ou 1). Exemple : On reprend le problème de programmation 0-1 précédent qu on va résoudre différemment. Max z = 8x 1 + 11x 2 + 6x 3 + 4x 4 5x 1 + 7x 2 + 4x 3 + 3x 4 14 x i {0, 1} Le simplexe donne : x 1 = x 2 = 1, x 3 = 0, 5, x 4 = 0, z = 22 ce qui ne fournit pas une solution entière. On relance (I) P x 3 0 qui donne une solution non entière et z = 21, 65 et (II) P x 3 1 qui donne une solution non entière et x 1 = x 3 = 1, x 4 = 0 et x 2 = 5/7, pour z = 21, 85. On developpe (II) en (III) II x 2 0 qui donne x 1 = x 3 = x 4 = 1, x 2 = 0 et z = 18 qui donne une première borne 18 et (IV ) II x 2 1 qui donne x 2 = x 3 = 1 x 4 = 0, x 1 = 3/5 et z = 21, 8. On developpe (IV ) en IV x 1 0 qui donne x 1 = 0, x 2 = x 3 = x 4 = 1 et z = 21 qui est une meilleure borne qui permet de couper le problème I (les coefficients étant entiers on ne peut pas avoir de solution meilleure que 21 puisque z vaut au mieux 21,65 et IV x 1 1

8 CHAPITRE 6. PROGRAMMATION DYNAMIQUE. MÉTHODES P.S.E.P. qui n a pas de solution. Donc le développement est fini et on a une solution pour un optimum z = 21. On a examiné 7 noeuds de l arbres et résolu 7 problèmes de simplexes (à comparer aux 16 possibilités pour les valeurs). Exercice Exercice 1 On reprend l exemple des multipications de matrices. 1. Montrer que le nombre de parenthésages possibles P(n) vérifie : P(n) = Σ 1 k n 1 P(k) P(n k) P(1) = 1 2. Montrer que P(n) = 1/n C n 1 2n 2 (nombres de Catalan) et que P(n) 2n 2. Exercice 2 Un étudiant désire travailler 4 heures maximum par semaine en lpus de ses cours. Il a 4 emplois possibles pour lesquels les salaires ne sont pas proportionnels aux heures de travail. Trouver les emplois qu il devrait choisir pour maximiser son salaire (utiliser la programmation dynamique) avec le tableau de salaire suivant : heure de travail emploi 1 emploi2 emploi3 emploi4 1 26 23 16 19 2 39 36 32 36 3 48 44 48 47 4 54 49 64 56 Exercice 3 Avec la programmation dynamique, trouver le circuit minimal que doit réaliser un facteur qui doit prendre le courrier dans 5 boites à lettres et le déposer au centre de tri, compte tenu du tableau de distances suivant. T ri B1 B2 B3 B4 B5 Tri 0 4 7 2 6 8 B1 3 0 2 8 7 1 B2 6 1 0 3 6 2 B3 4 9 4 0 1 5 B4 5 5 5 2 0 7 B5 7 3 1 4 9 0