PROGRAMMATION DYNAMIQUE 1 Le principe d optimalité de Bellman La programmation dynamique est fondée sur le principe d optimalité de Bellman : Soit f une fonction réelle de x et y = (y 1, y 2,..., y n ). Si f est décomposable, sous la forme : alors, on a : f(x, y) = f 1 (x, f 2 (y)) Opt x,y f(x, y) = Opt x {f 1 (x, Opt y {f 2 (y)}) où Opt représente Min ou Max. Remarque: Le principe d optimalité s applique sous la même forme en présence de contraintes: (x, y) Ω, y Ω x. Master SIS 2009-2010 1
Equation de la programmation dynamique : Pour une séquence de décisions u 0, u 1,..., u T, une séquence d états x 0, x 1,..., x T, une fonction de transition : x k+1 = θ k (x k, u k ) et une fonction objectif séparable. on définit pour chaque étape une fonction de coût optimal à venir (cas additif): F k (x k ) = Opt uk {f k (x k, u k ) + F k+1 (θ k (x k, u k )))}. On peut alors procéder récursivement à partir de la période terminale T (Procédure en arrière) : x 0 x 1 x k x T-1 x T x k+1 0 1 k k+1 T-1 T t Figure 1: Trajectoire Optimale Propriété Fondamentale Toute sous-trajectoire de la trajectoire optimale est optimale pour le problème à horizon réduit associé. Master SIS 2009-2010 2
2 Algorithme de programmation dynamique Etape 1 Calculer pour chaque valeur possible de x T : La solution optimale satisfait: F T (x T ) = Opt ut {f T (x T, u T )} Etape 2 Calculer successivement, pour k = T 1,..., 1, et pour chaque valeur possible de x k : F k (x k ) = Opt uk {f k (x k, u k ) + F k+1 (θ k (x k, u k )))} Etape 3 Calculer J = F (x 0 ) = Opt u0 {f 0 (x 0, u 0 ) + F 1 (θ 0 (x 0, u 0 )))} Master SIS 2009-2010 3
3 Application 1 : voyage avec escales Un avion doit faire une séquence de vols le conduisant de la ville 1 à la ville 10 avec escales. Les lieux d'escales possibles sont décrits par le schéma suivant. 5 2 8 1 3 6 10 9 7 A chaque trajet (i,j) est associé un coût, c ij donné par l'un des tableaux suivants. 2 2 1 3 3 5 6 7 2 7 6 3 3 3 2 1 3 8 9 5 1 2 6 5 3 7 3 3 10 8 3 9 Master SIS 2009-2010
Modélisation et résolution On cherche le trajet minimisant le coût total. En notant x k la ville atteinte à l étape k, on peut écrire le critère : z = n c xk 1 x k k=1 avec x 0 = 1 et x = 10. Si à l étape k on se trouve à la ville i, le coût minimal restant jusqu à la destination finale est noté f k (i). En particulier, z = f 0 (1) et f (10) = 0. L équation d optimalité s écrit, pour k = 0, 1, 2, 3 : f k (i) = min x k+1 (c ixk+1 + f k+1(x k+1 ). Le principe de la programmation dynamique en sens rétrograde consiste à résoudre le problème pour toutes les valeurs possibles de i à chaque étape dans l ordre 3,2,1,0. Les trajectoires localement optimales sont gardées en mémoire, ce qui permet de reconstituer ensuite le trajet en sens direct. Master SIS 2009-2010 5
Etapes du calcul : k=3 i f3 (i) x 8 3 10 9 10 k=2 i f2 (i) x 3 5 8 6 7 9 7 6 8 k=1 i f1 (i) x 2 2 11 5 ou 6 3 7 5 8 5 ou 6 k=0 i f0 (i) x 1 1 11 3 ou La valeur optimale du critère est donc 11. On retrouve les trajets fournissant cette valeur optimale en relisant en sens inverse les trajets successifs: (1, 3, 5, 8, 10) ou (1,, 6, 9, 10) ou (1,, 5, 8, 10). Master SIS 2009-2010 6
Application 2 Algorithmes de recherche du chemin le plus long (le plus court) Soit l ij la longueur de l arc ij du graphe G = (X, U). Un chemin µ dans G est une succession d arcs ij tels que: x ij = 1 ssi u ij µ, x ij = 0 sinon. La longueur du chemin µ est: l(µ) = u ij µ l ij = u ij U x ij l(u ij ). Le problème du plus long chemin du sommet s au sommet t consiste à trouver le chemin µ reliant t à s, dont la longueur, l(µ) est maximale. Master SIS 2009-2010 7
Formulation en programmation linéaire: Maximiser u ij U x ij l ij sous i P (j) u ij l S(l) u jl = a j avec a s = 1, a t = +1, a j = 0 si j s, j t. Le dual de ce problème s écrit ainsi: Minimiser λ t sous λ j λ i l ij et λ s = 0. A l optimum, λ j est la longueur du plus long chemin de s à j. Existence de solution Le problème dual a des solutions (admissibles) si et seulement s il n existe pas dans G de circuit absorbant, c.a.d. de circuit de longueur positive. Procédures de marquage Marquer le noeud i, c est affecter une valeur (temporaire ou définitive) à λ i. Master SIS 2009-2010 8
Algorithme de Moore-Dijkstra En général, cet algorithme est utilisé si toutes les longueurs l ij sont non-négatives. Soit P (i) l ensemble des prédécesseurs du sommet i. On cherche le chemin de longueur maximale à partir d un sommet s 1. On pose : λ s = 0 λ 0 i = 0, i s. On considère un ensemble S de sommets définitivement marqués. Au départ,s = {s} 2. On introduit l un après l autre tous les sommets (s,...,t) du graphes. Le sommet s k est introduit à l itération k. Le vecteur λ k est construit par: λ k j = max(λ k 1 j, λ k 1 s k + l sk j) On garde en mémoire le meilleur antécédent de j. Cet algorithme donne par λ n tous les chemins extrémaux issus de s en n itérations. Il permet aussi de détecter d éventuels circuits absorbants. Cet algorithme correspond à la résolution par approximations successives de l équation d optimalité de Bellman: λ j = max i P (j) {λ i + l ij } La solution optimale est trouvée en n-1 étapes de parcours de tous les sommets. Et pour chaque nouveau sommet dans S, on parcourt tous les sommets non marqués. La complexité de l algorithme est O(n 2 ). Master SIS 2009-2010 9
Exemple d application Un projet comporte 10 opérations reliées par le graphe de précédence potentiels-tâches suivant: G 1 3 H I 2 3 3 5 2 2 3 A B C D E F 1 J K Figure 3: Graphe du projet Master SIS 2009-2010 10
1. Recherche du chemin critique dans le graphe On applique l algorithme de Moore pour trouver le chemin critique, et tous les plus longs chemins à partir du début de l opération A. Les longueurs de ces chemins sont obtenus par programmation dynamique à partir du marquage successif des sommets A B G C J H D I K E : A B G C J H D I K E A 0 0 0 0 0 0 0 0 0 0 B 5 5 5 5 5 5 5 5 5 5 G 0 9 9 9 9 9 9 9 9 9 C 0 9 9 9 9 9 9 9 9 9 J 0 9 9 9 9 9 9 9 9 9 H 0 0 10 11 11 11 11 11 11 11 D 0 0 0 11 13 1 1 1 1 1 I 0 0 0 0 0 1 1 1 1 1 K 0 0 0 0 13 13 13 13 13 13 E 0 0 0 0 0 1 16 16 16 16 F 0 0 0 0 0 0 0 18 18 19 Le chemin critique est obtenu en remontant les chemins les plus longs à partir du sommet F jusqu à A. Sa longueur est 19. C est: A B C H D E F. Master SIS 2009-2010 11
2. Seconde étape Calcul des dates de début au plus tôt et au plus tard de toutes les opérations pour une date due globale correspondant au minimum atteignable. La date au plus tôt de l opération i est la longueur du plus long chemin (A,i), obtenu précédemment. La date de début au plus tard de la tâche i est la date due de F (19), moins la longueur du plus long chemin (i,f). Sur le chemin critique, les dates au plus tôt et au plus tard sont égales. 9-10 11 1 3 1-15 G H I 3 2 3 0 5 5 9 1 16 19 2 2 3 A B C D E F J K 1 9-10 Figure : Dates du projet 13-15 Master SIS 2009-2010 12
. 5 Application 3 : Problème de voyageur de commerce n villes V = 1; :::; n constituent les sommets d'un graphe. Un arc (ij) represente un chemin direct de i à j, avec un coût cij. C 12 2 C 23 1 C 21 C 32 3 C 1 C 3 C 1 C 3 Master SIS 2009-2010 13
Modélisation du problème de commerce voyageur de On cherche le circuit hamiltonien de coût minimal. i U,j / U Minimiser c ij x ij sous x ij = 1 i j i x ij = 1 j x ij 1 U V ; 2 U V 2 et x ij = 0 ou 1. Master SIS 2009-2010 1