Programmation dynamique

Slides:



Advertisements
Présentations similaires
Gestion de portefeuille
Advertisements

Gestion de portefeuille
Algorithmes et structures de données avancés
Fonctions & procédures
Sensibilisation à l’Algorithmique et structure de données
Calculs de complexité d'algorithmes
Equipe optimisation TempoSoft
A.Faÿ 1 Recherche opérationnelle Résumé de cours.
Chapitre II.Rappels mathématiques et complexité
Génération de colonnes
Utilisation des tableaux
Recherche Opérationnelle
                                        République Algérienne Démocratique et Populaire Ministère de l’Enseignement Supérieur et de la Recherche Scientifique.
Les bases de l’Algorithmique
L’échange naturel Le choix individuel de Robinson l’amène à déterminer les termes d’un contrat naturel d’échange, selon lequel, en échange des quantités.
Conception et analyse des algorithmes
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
GPA750 – Ordonnancement des systèmes de production aéronautique
Les Systèmes Multi-Agents pour la Gestion de Production
Parcours de formation SIN-7
Algorithmes Branch & Bound
Décodage des informations
Programmation linéaire
Équations différentielles.
La segmentation
Méthodes de prévision (STT-3220)
IFT Complexité et NP-complétude
Courbes de Bézier.
Algorithmes d ’approximation
Optimisation dans les réseaux
Recherche Opérationnelle
Mise en oeuvre des MMCs L'utilisation des MMCs en reconnaissance des formes s'effectue en trois étapes : définition de la topologie de la chaîne de Markov,
Introduction aux problèmes d'ordonnancement sans temps-morts.
Programmation dynamique
GPA750 – Gestion de Projets

8INF8061 Conception et analyse des algorithmes Comment comparer deux problèmes?
Programmation linéaire en nombres entiers : les méthodes de troncature
IFT Complexité et NP-complétude Chapitre 0 Rappels.
MAXIMISER les RESULTATS
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Programmation dynamique
La firme Les techniques à deux facteurs La demande de facteurs
D.E ZEGOUR Ecole Supérieure d’Informatique
REGLAGE ECONOMIQUE DES PRODUCTIONS Le réglage tertiaire.
Les algorithmes de découplage vitesse-pression
Programmation linéaire en nombres entiers
Présentation du marché obligataire
Algorithmes Branch & Bound
Foued Mnasri Weal Rekik
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Université Pierre et Marie Curie Laboratoire d’Informatique de Paris VI Département ASIM Analyse et résultats sur le dimensionnement des mémoires pour.
Thème: Les fonctions Séquence 1 : Généralités sur les fonctions
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
Problème de double digestion
Programmation fonctionnelle Preuve
Introduction et Généralités sur l’Algorithmique
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
Méthode des moindres carrés (1)
PROGRAMMATION DYNAMIQUE (Exemples d’application)
Post-optimisation, analyse de sensibilité et paramétrage
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Résolution des équations différentielles
Algorithmique Boucles et Itérations
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
Techniques d'Optimisation Master
1 UE Intro. Optimisation L3 INFO UPSud II. Programmation linéaire en variables entières (ou mixtes)
Transcription de la présentation:

Programmation dynamique Module IAD/M1/RP Master Informatique de Paris 6 Philippe Chrétienne

Programmation dynamique déterministe Processus de décisions séquentielles. Cadre des problèmes résolus par la programmation dynamique. Schéma de résolution d ’un problème par la programmation dynamique: équations de récurrence avant et arrière . Un problème type: le sac à dos.

Processus de décisions séquentielles Un processus de décisions séquentielles est défini par: -un « système » caractérisé par une variable d ’état , -une suite d ’étapes décisionnelles (phases) . Si le système est dans l ’état e i-1 juste avant l ’étape i, la phase i consiste à prendre une décision di qui a comme conséquence: -de faire faire passer l ’état du système de l ’état e i-1 à ei -un coût « immédiat » ri.

e0 e1 ei-1 eN-1 eN ei d1 d2 di dN-1 dN 1 2 i N-1 N r1 r2 ri rN-1 rN D=(d1,d2,……,dN) est une politique réalisable pour passer de l ’état initial e0 à l ’état final eN en N phases décisionnelles. Le coût associé à la politique D est une fonction (r1,r2,…,rN) des coûts immédiats. (r1,r2,…,rN) est la fonction objectif. D ’une manière générale, il faut trouver une politique réalisable dont le coût est minimum (ou maximum). Selon les problèmes, l ’état initial et/ou l ’état final sont (ou ne sont pas) fixés.

Cadre des problèmes résolus par la programmation dynamique La programmation dynamique permet de résoudre un cas particulier de problèmes de décisions séquentielles. Hypothèses à satisfaire: L ’ensemble des décisions possibles à la phase i ne dépend que: - de l ’état ei-1; - du numéro i de la phase décisionnelle. On note i (ei-1) cet ensemble. Hypothèse markovienne sur l ’ensemble des décisions à la phase i: cet ensemble ne dépend des décisions précédentes qu’à travers l ’état ei-1qui résulte de ces décisions. Autre formulation de cette hypothèse: Quelle que soit la suite des décisions (d1, … , di-1) conduisant à l ’état e i-1, l ’ensemble des décisions possibles à la phase i est le même.

L ’état ei ne dépend que: - de l ’état ei-1 - de la décision di (i) - du numéro i de la phase décisionnelle. On note ei = i(ei-1,di) la fonction de changement d ’état Hypothèse markovienne sur le changement d ’état à la phase i: le nouvel état ei ne dépend des décisions précédentes qu’à travers l ’état ei-1 qui résulte de ces décisions. Autre formulation de cette hypothèse: La fonction de changement d ’état à l ’étape i ne dépend pas de la suite (d1, … , di-1) des décisions ayant conduit à l ’état e i-1.

Séparabilité de la fonction objectif: (r1,r2,…,rN) (fonction de N variables) est dite séparable s ’il existe une fonction g(u,v): - de 2 variables u et v; - monotone non décroissante par rapport à v; et une fonction (r2,…,rN) (fonction de N-1 variables) séparable telles que: (r1,r2,…,rN)=g(r1, (r2,…,rN)). 2 exemples de fonctions séparables: (r1,r2,…,rN) = r1 + r2 + ……. + rN Ici g(u,v) = u + v et (r2,…,rN) = r2 + ……. + rN . (r1,r2,…,rN) = Max{r1,r2, ……. , rN} Ici g(u,v) = Max{u,v} et (r2,…,rN) = Max{r2, …….,rN}.

Remarque: En pratique, les fonctions objectifs sont souvent du type: (r1,r2,…,rN)=r1r2  ……..  rN où  est un opérateur binaire associatif. Exemples pour  : +,,Min,Max Dans ce cas, on a: g(u,v)=u  v et (r2,…,rN) = r2  …….  rN. (r1,r2,…,rN) est alors séparable si et seulement si g(u,v) est monotone non décroissante par rapport à la seconde variable.

Un exemple: le sac à dos Donnée: un sac à dos S; n articles {A1,…..,An} pour chaque article Ai, son poids pi (entier > 0) et sa valeur vi (entier > 0) le poids maximum de S: P (entier > 0) Une solution s est un sous-ensemble d ’articles de poids total (noté p(s) ) au plus égal à P. La valeur totale d ’une solution s étant notée v(s) , on cherche une solution maximisant v(s).

Modèle de programmation dynamique. Système: le contenu du sac S. Etat du système: le poids de S état initial: e0=0. Phases décisionnelles: une phase par article; ordre (1,2,….,N) Décisions possibles à partir de l ’état ei-1 avant la phase i: si ei-1+pi>P alors une seule décision possible: di=0 (ne pas mettre Ai dans S) si ei-1+pi≤P alors 2 décisions possibles: et di=1 (mettre Ai dans S)

Changement d ’état: ei = e i-1 + (di  pi) Gain immédiat: ri = di  vi Fonction objectif: (r1,r2,…,rn) = r1 + r2 + ……. + rn

N=4 article 1 2 3 4 poids 5 2 3 7 valeur 6 3 4 7 e0 e1 e2 e3 e4 A1 Phase 1 Phase 2 Phase 3 Phase 4 e0 e1 e2 e3 e4 1 2 3 4 5 6 7 8 9 10 11 12 A1 non A2 A3 non A4

Schéma de résolution par la programmation dynamique A) Schéma de Récurrence Arrière. Pour simplifier l ’exposé nous faisons 2 hypothèses: - état initial e0 et final eN fixés; - (r1,r2,…,rN)=r1  r2  ……..  rN où a)  est un opérateur binaire associatif b) g(u,v)= u  v est monotone non décroissante par rapport à v. On note  n(s,t) le sous-problème de  associé: - aux n dernières phases de  (récurrence arrière) - à l ’état initial s (avant la phase N-n+1) et à l ’état final t.

Le sous-problème n(s,t) eN-n=s eN=t dN-n+1 dN N-n+1 N-n+2 N e0 d1 1 2 r1 rN-n+1 rN Le sous-problème n(s,t) Une politique D ’ pour  n(s,t) est une suite de décisions (d ’1,d ’2 ,…., d ’n) concernant les phases respectives N-n+1, …., N faisant passer le système de l ’état s à l ’état t. Notation: f*n(s,t) le coût minimum (valeur minimum de la fonction objectif) d ’une politique pour  n(s,t).

L ’ensemble  des premières décisions possibles pour une politique D ’ de  n(s,t) est égal à  N-n+1 (s) . Fixons une première décision d’1 dans . Il en résulte l ’état u = N-n+1(s,d ’1) après la phase 1 de D ’. Soit D*n-1 (u,t) une politique optimale pour  n-1(u,t) On a alors la propriété suivante: Théorème d ’optimalité (Bellman): La politique (d ’1, D*n-1 (u,t)) de  n(s,t) est de coût minimal sur l ’ensemble des politiques de  n(s,t) dont la première décision est d ’1.

Preuve: Si d ’1 est fixé, alors l ’état u (=  N-n+1(s,d ’1)) est aussi fixé. De même, le coût r ’1 (= N-n+1(s,d ’1)) est aussi fixé. Soit Dn (s,t) = (d ’1, 2, …. , n) une politique quelconque pour  n (s,t) dont la première décision est d ’1. Soit (r ’1, c2, ….. , cn) la suite des coûts immédiats de Dn (s,t) . Le coût de Dn (s,t) est r ’1c2  ……..  cn Par construction (2, …. , n) est une politique pour  n-1(u,t) dont le coût est c2  ……..  cn. Il en résulte que: f*n-1(u,t) ≤ c2  ……..  cn. D’après l ’hypothèse de monotonie: r ’1 f*n-1(u,t) ≤ r ’1c2  ……..  cn Or r ’1 f*n-1(u,t) est le coût de la politique (d ’1, D*n-1 (u,t)) Et r ’1c2  ……..  cn est le coût de la politique Dn (s,t) . (d ’1, D*n-1 (u,t)) est donc meilleure que Dn (s,t) . CQFD.

Pour trouver la meilleure politique pour n(s,t), il suffit de faire varier la première décision d ’1 dans l ’ensemble des décisions possibles N-n+1 (s). On obtient l ’équation de récurrence (arrière): f*n(s,t) = MIN {N-n+1(s,d ’1)  f*n-1(N-n+1(s,d ’1),t)d ’1 N-n+1 (s)} Initialisation: La fonction f0*(t) est une donnée du problème. Notons E i-1 l ’ensemble de états possibles du système juste avant la phase décisionnelle i. L ’équation précédente permet le calcul des valeurs de f*n(s,t), s  E N-n (e0) lorsque les valeurs de f*n-1(s,t), s  E N-n+1 (e0) sont connues. Remarque: en général, on ne sait pas caractériser exactement Ei, on le remplace alors par un sur-ensemble Si  Ei.

Algorithme de récurrence arrière Soit  un problème d ’optimisation modélisé par un schéma S de programmation dynamique caractérisé par: N phases décisionnelles; un état initial fixé s ; un état final fixé t affecté d ’un coût K ; des fonctions de changement d ’état k,k=1..N des fonctions de coût immédiats k ,k=1..N ; une fonction objectif à minimiser caracrérisée par l ’opération . L ’algorithme Prog_Dyn_Arriere(,S,C,D) calcule - le coût C d ’une politique optimale pour N(s,t) - une politique optimale D de N(s,t).

Procedure Prog_Dyn_Arriere(,S,C,D) optv0(t,0):=K; % initialisation % Pour k de 1 à N faire % calcul de f*N(s,t)% Pour tout e dans E N-k faire optv(e,k):=Min{N-k+1(e,d)  optv(N-k+1(e,d),k-1) d N-k+1 (e)}; optd(e,k) := Argmin(optv(e,k)) FinPour FinPour ; C := optv (s,N) ; e:=s ; Pour k de 0 à N-1 faire % calcul d ’une politique optimale % Dk+1:= optd(e,N-k) ; e:= k+1 (e,Dk+1) FinPour.

Complexité temporelle pire-cas de Prog_Dyn_Arriere (,S,C,D) Hypothèses concernant l ’énoncé I de  (de longueur l(I)): 1) Pour tout k: Card (E k ) ≤ E ( l(I) ) ; 2) Le temps de calcul de u  v est en 0(1) ; 3) Pour tout k et pour tout e dans E k: Card ( k (e)) ≤  (l(I)) ; La complexité de Prog_Dyn_Arriere(,S,C,D) est alors en O( N  E(l(I))  (l(I)) ) Remarque: On a souvent:  (l(I))=O(1) Il est donc très important d ’ajuster au mieux les espaces d ’états pour chaque phase décisionnelle.

A) Schéma de Récurrence Avant. Pour simplifier l ’exposé nous faisons 2 hypothèses: - état initial e0 et final eN fixés; - (r1,r2,…,rN)=r1r2  ……..  rN (où  est un opérateur binaire associatif). On note  n(s,p) le sous-problème de  associé: - aux n premières phases de  (récurrence avant) - à l ’état initial s et à l ’état final p.

Le sous-problème n(s,p) en=p eN dn dN n n+1 N e0=s d1 1 2 r1 rn rN Le sous-problème n(s,p) Une politique D ’ pour n(s,p) est une suite de décisions (d ’1,d ’2 ,…., d ’n) concernant les n premières phases faisant passer le système de l ’état s à l ’état p. Notation: g*n(s,p) le coût minimum (valeur minimum de la fonction objectif) d ’une politique pour  n(s,p).

Soit Cn(p) l’ensemble des couples (e n-1,d n) possibles en=p eN dn dN n n+1 N e0=s d1 1 2 r1 rn rN Soit Cn(p) l’ensemble des couples (e n-1,d n) possibles pour une politique D ’ de  n(s,p). Cn(p) = {(e,d)/ e  E n-1, d   n(e),  n(e,d)=p} Fixons un couple (e,d) de Cn(p). Soit D*n-1 (s,e) une politique optimale pour  n-1(s,e) On a alors la propriété suivante: Théorème d ’optimalité (Bellman): La politique (D*n-1 (s,e),d) de  n(s,p) est de coût minimal sur l ’ensemble des politiques de  n(s,p) dont le dernier couple (état,décision) est (e,d).

Pour trouver la meilleure politique pour  n(s,p) , il suffit de en=p eN dn dN n n+1 N e0=s d1 1 2 r1 rn rN Pour trouver la meilleure politique pour  n(s,p) , il suffit de faire varier le dernier couple (e,d) dans Cn(p). On obtient l ’équation de récurrence (avant): g*n(s,p) = MIN {n(e,d)  g*n-1(s,e))(e,d) Cn(p)} Initialisation: La fonction g*0(s) est une donnée du problème. L ’équation précédente permet le calcul des valeurs de g*n(s,p), p  E n+1(e0) lorsque les valeurs de g*n-1(s,t), t  E n(e0) sont connues.

Récurrence avant pour le sac à dos. Etat du système: le poids de S, état initial: e0=0. Phases décisionnelles: une phase par article; ordre (1,2,….,N) Décisions possibles à partir de l ’état ei-1 avant la phase i: si ei-1+pi>P alors di=0 (ne pas mettre Ai dans S) si ei-1+pi≤P alors (di=0 ou di=1) Changement d ’état: ei = e i-1 + (di  pi) Gain immédiat: ri = di  vi Fonction objectif: (r1,r2,…,rn) = r1 + r2 + ……. + rn Equations de récurrence avant. g*i(p) = MAX {vi + g*i-1(p-pi) , g*i-1(p)} si p ≥ pi g*i(p) = g*i-1(p)} si p < pi

N=4 article 1 2 3 4 poids 5 2 3 7 valeur 6 3 4 7 P=13 e0 e1 e2 e3 e4 Phase 1 Phase 2 Phase 3 Phase 4 e0 e1 e2 e3 e4 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Récurrence avant pour un problème d ’ordonnancement sur une machine Paramètres du problème: une machine M ; n tâches T1, T2, … , Tn non interruptibles; pour chaque tâche Ti: sa durée pi, son deadline di et son gain gi Une solution est un séquencement des n tâches sur M. Si, dans une solution, l ’exécution d ’une tâche Ti se termine au plus tard à la date di, la tâche Ti est dite « en avance », le gain associé est gi. Le gain d ’une solution est la somme des gains réalisés. Il faut trouver une solution de gain maximal.

Recherche d ’un ensemble dominant de solutions Propriété: Les solutions s telles que: 1) s=h.r où: h est une sous-liste de tâches à l ’heure, r est une sous-liste de tâches en retard; 2) les tâches de h sont placées dans l ’ordre croissant au sens large de leurs deadlines sont dominantes. Preuve: On montre d ’abord que les solutions qui vérifient 1) sont dominantes. On montre ensuite que l ’on peut reséquencer les tâches à l ’heure selon 2).

Solution s1 telle que Ti est la première tâche en retard suivie d ’une tâche à l ’heure Tj : s1 di dj s2 Solution s2 déduite de s1: G(s2) ≥ G(s1) En itérant cette transformation, on obtient une solution de type h.r satisfaisant 1).

Soit s une solution de type h.r satisfaisant 1) telle que: A) les 2 tâches Ti et Tj soient consécutives dans h; B) di > dj . s h r di dj s ’ La solution s ’ de type h.r obtenue par échange de Ti et Tj satisfait G(s) = G(s ’). En itérant cette transformation on obtient une solution de type h.r satisfaisant 2).

On peut donc poser le problème sous la forme: Déterminer une liste h de tâches à l ’heure de gain maximal. On suppose donc, sans perte de généralité que: d1 ≤ d2 ≤ ….. ≤ dn Nous allons résoudre par la programmation dynamique un problème « dual » du problème initial: Si h est une liste de tâches à l ’heure, on note g(h)=  Tih gi le gain associé à h, p(h)=  Tih pi la durée de h. Pour chaque valeur de gain total e, on cherche une liste h de tâches à l ’heure telle que: g(h)=e et p(h) minimum.

SCHEMA DE RECURRENCE AVANT. n étapes décisionnelles 1, 2, … , n. L ’étape numéro i concerne la tâche Ti: elle consiste à prendre (ou non) la tâche Ti dans l ’ensemble des tâches à l ’heure. Di = 1 si Ti est prise, Di = 0 sinon. Variable d ’état: ei est le gain réalisé après les i premières décisions. Coût immédiat: ri = pi si Di = 1, ri = 0 si Di = 0.

Ensemble  i (e) des décisions possibles si e i-1 = e. On note P i-1 (e) la durée minimale d ’une liste de tâches à l ’heure appartenant à {T1, T2, …., Ti-1} et dont le gain est égal à e. Convention: si une telle liste n ’existe pas: P i-1 (e) = + Si P i-1 (e) + pi > di, alors il n ’est pas possible de prendre la tâche Ti et donc  i (e) ={0} Si P i-1 (e) + pi ≤ di, alors  i (e) ={0,1} Fonction objectif:  ri. Les hypothèses d ’un schéma de résolution par la programmation dynamique sont donc satisfaites.

Equation de récurrence avant: P i-1 (e) si [ (P i-1 (e) + pi > di) ou (e < gi) ] P i (e) = Min{P i-1 (e) , P i-1 (e-gi) + pi} sinon. Initialisation: P 0 (e) = + si e>0 P 0 (0) = 0 La valeur maximale du gain est Max{eP n (e) < + }

Un exemple 5 tâches i 1 2 3 4 5 pi 5 1 4 3 6 di 8 8 9 9 10 gi 3 2 2 3 4 Les tâches sont déjà triées dans l ’ordre croissant au sens large de leur deadline. Trouver la politique optimale et le gain maximal.

Solution optimale: (T1, T2, T4) Gain maximal: 8 Phase 1 Phase 2 Phase 3 Phase 4 Phase 5 e0 e1 e2 e3 e4 e5 5 1 6 3 4 8 7 9 2 Rem: Les valeurs + de Pi(e) (en vert) ne sont pas écrites i 1 2 3 4 5 pi 5 1 4 3 6 di 8 8 9 9 10 gi 3 2 2 3 4 Solution optimale: (T1, T2, T4) Gain maximal: 8