Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1...

30
Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation procédant par énu- mération implicite des solutions. Bien que déjà pratiquée auparavant, elle est élevée au rang de méthode générale de résolution avec les travaux de Bellman [BEL 54, BEL 57], qui formalise l’approche et la baptise. Cette approche permet de résoudre efficacement des problèmes de décision séquentiels. Plus généralement, elle consiste à aborder des problèmes d’optimisation avec une stratégie consistant en deux points essentiels : – décomposer le problème en une séquence de problèmes, – établir une relation de récurrence entre les solutions optimales des problèmes. L’intitulé “programmation dynamique” se justifie davantage par des considérations de mode (le domaine s’est développé parallèlement à la programmation linéaire) que par des arguments purement scientifiques. Dans [DRE 02] est reproduit l’extrait suivant de l’autobiographie de Bellman [BEL 84] : My first task was to find a name for multistage decision processes. In the first place I was interested in planning, in decision making, in thinking. But planning is not a good word for various reasons. I decided therefore to use the word ‘programming’. I wanted to get across the idea that this was dynamic, this was multistage, this was time-varying–I thought, let’s kill two birds with one stone. Let’s take a word that has an absolutely precise meaning, namely dynamic, in the classical physical sense. Chapitre rédigé par Bruno ESCOFFIER et Olivier SPANJAARD. 1

Transcript of Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1...

Page 1: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Chapitre 1

Programmation dynamique

1.1. Introduction

La programmation dynamique est une méthode d’optimisationprocédant par énu-mération implicite des solutions. Bien que déjà pratiquée auparavant, elle est élevéeau rang de méthode générale de résolution avec les travaux deBellman [BEL 54,BEL 57], qui formalise l’approche et la baptise. Cette approche permet de résoudreefficacement des problèmes de décision séquentiels. Plus généralement, elle consisteà aborder des problèmes d’optimisation avec une stratégie consistant en deux pointsessentiels :

– décomposer le problème en une séquence de problèmes,

– établir une relation de récurrence entre les solutions optimales des problèmes.

L’intitulé “programmation dynamique” se justifie davantage par des considérations demode (le domaine s’est développé parallèlement à la programmation linéaire) que pardes arguments purement scientifiques. Dans [DRE 02] est reproduit l’extrait suivantde l’autobiographie de Bellman [BEL 84] :

My first task was to find a name for multistage decision processes. In the firstplace I was interested in planning, in decision making, in thinking. But planningis not a good word for various reasons. I decided therefore touse the word‘programming’. I wanted to get across the idea that this was dynamic, this wasmultistage, this was time-varying–I thought, let’s kill two birds with one stone.Let’s take a word that has an absolutely precise meaning, namely dynamic, inthe classical physical sense.

Chapitre rédigé par Bruno ESCOFFIER et Olivier SPANJAARD.

1

Page 2: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

2 Optimisation Combinatoire

Autrement dit, le motprogrammationdoit ici s’entendre comme un plan d’action,tandis que le motdynamiqueindique le découpage en phases du problème. Préci-sons d’emblée que le paradigme de la programmation dynamique est mal défini, etque plusieurs formalismes coexistent dans l’abondante littérature qui lui est consa-crée [BEL 57, MIT 64, KAR 67, MIT 74, LAU 79, MOR 82]. Nous avonsadopté iciun formalisme intermédiaire qui a ses avantages et ses inconvénients, et peut donccertainement être discuté. Dans le contexte de ce livre, nous nous sommes surtoutpréoccupés de ses vertus structurantes. Après avoir introduit intuitivement l’idée dela programmation dynamique sur un exemple simple et ludique(section 1.2), nousprésentons un cadre formel assez général (section 1.3) reposant sur les concepts d’es-pace d’états, de structure de transition (entre les états) et de structure de préférences(entre les politiques). Nous montrons alors comment diversproblèmes combinatoirespeuvent entrer dans ce cadre (section 1.4), et présentons deux procédures de résolution(avant et arrière) dont nous établissons l’admissibilité (section 1.5). Dans la section1.6, nous résolvons par programmation dynamique les problèmes introduits dans lasection 1.4. Enfin, dans une dernière partie (section 1.7), nous présentons quelquesextensions.

1.2. Un premier exemple

EXEMPLE.– LE FRANCHISSEMENT DU PONT. On considère quatre individusa, b, c, dqui rentrent de randonnée à la nuit tombée. Ils rencontrent un pont suspendu enjam-bant une rivière. Un panneau indique qu’au maximum deux personnes simultanémentpeuvent emprunter le pont pour des raisons de sécurité. Les quatre compagnons dé-cident de franchir le pont deux par deux. Cependant, le groupe ne disposant que d’uneseule lampe de poche, une personne se trouvant après le pont doit retourner au pointde départ pour rapporter la lampe après chaque franchissement. Précisons enfin quel’individu a met 1 minute pour traverser,b met 2 minutes,c met 5 minutes etd met10 minutes. Si deux membres du groupe traversent le pont ensemble, ils marchent à lavitesse du membre le plus lent (par exemple,a et c mettent 5 minutes pour traverserensemble). Dans quel ordre le groupe doit-il traverser pourminimiser le temps totalde franchissement ?

Ce problème se résout bien par une démarche de programmationdynamique. Toutd’abord, on se convaincra sans peine qu’il est nécessaire d’effectuer cinq traversées(allers ou retours) pour que tout le monde ait franchi le pont. Remarquons ensuitequ’à l’issue d’une traversée, on peut résumer la situation (ce qu’on appelle l’état) parla liste des personnes qui se situent avant le pont. Il s’agitdonc ici de trouver un ordrede passage optimal (ce qu’on appelle unepolitique) pour passer de l’état(a, b, c, d) àl’état ().

A l’issue de la première traversée, deux personnes restent avant le pont : soit(a, b)au bout de 10 minutes (temps de passage dec etd), soit (a, c) au bout de 10 minutes,

Page 3: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 3

soit (a, d) au bout de 5 minutes, soit(b, c) au bout de 10 minutes, soit(b, d) au boutde 5 minutes, soit(c, d) au bout de 2 minutes. Après le retour d’un personne, quatreétats seulement peuvent se présenter :

- (a, b, c) sont avant le pont,- (a, b, d) sont avant le pont,- (a, c, d) sont avant le pont,- (b, c, d) sont avant le pont.

L’état (a, b, d) survient dans trois cas :

cas 1.(b, d) sont restés en arrière (5 minutes) eta est revenu (1 minute),cas 2.(a, d) sont restés en arrière (5 minutes) etb est revenu (2 minutes),cas 3.(a, b) sont restés en arrière (10 minutes) etd est revenu (10 minutes).

Dans le premier cas, il a donc fallu 5+1=6 minutes pour arriver à l’état(a, b, d). Dansle second cas il a fallu 5+2=7 minutes et dans le dernier cas ila fallu 10+10=20 mi-nutes. Or, quoi qu’il advienne ensuite, les décisions prises pour arriver à l’état(a, b, d)n’auront pas d’influence sur le temps qu’il faudra pour passer de l’état(a, b, d) à l’état(), où tous les individus ont franchi le pont. Par conséquent, les cas 2 et 3 peuvent êtreignorés dans la suite de la recherche.De même, on montre facilement qu’il faut au mieux 11 minutes pour arriver à l’état(a, b, c), 3 minutes pour arriver à l’état(a, c, d) et 4 minutes pour arriver à l’état(b, c, d). Au bilan, voici les informations pertinentes à retenir à l’issue des deux pre-mières traversée (deux personnes franchissent le pont à l’aller et une personne revientau retour) :

- il faut au mieux 11 minutes pour atteindre l’état(a, b, c),- il faut au mieux 6 minutes pour atteindre l’état(a, b, d),- il faut au mieux 3 minutes pour atteindre l’état(a, c, d),- il faut au mieux 4 minutes pour atteindre l’état(b, c, d).

A l’issue de la troisième traversée, il reste(a), (b), (c) ou (d) avant le pont. L’état(a)survient dans trois cas :

cas 1.on était dans l’état(a, b, c) (11 minutes) et(b, c) ont traversé (5 minutes),cas 2.on était dans l’état(a, b, d) (6 minutes) et(b, d) ont traversé (10 minutes),cas 3.on était dans l’état(a, c, d) (3 minutes) et(c, d) ont traversé (10 minutes),

Il faut donc au mieux 10+3=13 minutes pour atteindre l’état(a) à l’issue de la troi-sième traversée. En répétant le même raisonnement, on trouve :

- il faut au mieux 13 minutes pour atteindre l’état(a),- il faut au mieux 14 minutes pour atteindre l’état(b),- il faut au mieux 13 minutes pour atteindre l’état(c),- il faut au mieux 8 minutes pour atteindre l’état(d).

Une personne revient à nouveau, et il reste alors(a, b), (a, c), (a, d), (b, c), (b, d) ou(c, d) avant le pont. L’état(a, b) survient dans deux cas :

cas 1.(a) est resté en arrière (13 minutes) etb est revenu (2 minutes),cas 2.(b) est resté en arrière (14 minutes) eta est revenu (1 minute).

Page 4: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

4 Optimisation Combinatoire

Il faut donc au mieux13 + 2 = 14 + 1 = 15 minutes pour atteindre l’état(a, b) àl’issue de la quatrième traversée. De même, on montre que :

- il faut au mieux 15 minutes pour atteindre l’état(a, b),- il faut au mieux 14 minutes pour atteindre l’état(a, c),- il faut au mieux 9 minutes pour atteindre l’état(a, d),- il faut au mieux 15 minutes pour atteindre l’état(b, c),- il faut au mieux 10 minutes pour atteindre l’état(b, d),- il faut au mieux 13 minutes pour atteindre l’état(c, d),

Les deux personnes restantes traversent le pont pour la dernière fois et le franchisse-ment est terminé. Par exemple, si au bout de 4 traversées, on est dans l’état(a, b), ilaura fallu15 + 2 = 17 minutes en tout pour atteindre l’état(). On vérifie facilementqu’on ne peut pas faire mieux. On montre ainsi qu’il faut au mieux 17 minutes pour lefranchissement du pont.

Cette démarche de résolution est résumée dans le tableau 1.1. Chaque colonne cor-respond à un aller ou un retour, et il y figure tous les états possibles à l’issue de cettetraversée. De plus, le meilleur temps pour atteindre un étatdonné figure en gras. Parexemple, la lignea : 10+1 = 11 en haut de la colonne 2 signifie quea est revenu lorsde la deuxième traversée et qu’à l’issue de cette traversée 11 minutes se sont écoulées.On ne peut pas faire mieux pour atteindre l’état(a, b, c). On peut reconstituer une po-litique optimale en remontant le temps à partir de la durée optimale de 17 minutes :

- a, b passent le pont lors de la cinquième traversée et donc on était dans l’état(a, b) àl’issue de la quatrième traversée,- a revient lors de la quatrième traversée et donc on était dans l’état (b) à l’issue de latroisième traversée,- c, d passent le pont lors de la troisième traversée et donc on était dans l’état(b, c, d)à l’issue de la deuxième traversée,- b revient lors de la deuxième traversée et donc on était dans l’état(c, d) à l’issue dela première traversée,- a, b passent le pont lors de la première traversée.

La démarche de résolution par programmation dynamique demande 42 additions et27 comparaisons pour trouver une politique optimale. Or, ily a6 × 2 × 3 × 3 = 108politiques possibles et une démarche par énumération exhaustive demanderait donc4 × 108 = 432 additions et 107 comparaisons. Ainsi, on constate un gain substantield’efficacité en résolvant le problème par programmation dynamique. Dans la sectionsuivante, nous décrivons un formalisme général permettantd’appliquer cette méthode,et nous donnons des conditions garantissant son exactitude. De nombreux problèmescombinatoires peuvent être résolus par cette méthode, en les décomposant en une sé-quence de problèmes de même nature.

Page 5: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 5

1 (aller) 2 (retour) 3 (aller)(a, b) c, d : 10 (a, b, c) a : 10+1=11 (a) b, c : 11+5=16

b : 10+2=12 b, d : 6+10=16(a, c) b, d : 10 c : 10+5=15 c, d : 3+10=13

(a, b, d) a : 5+1=6 (b) a, c : 11+5=16(a, d) b, c : 5 b : 5+2=7 a, d : 6+10=16

d : 10+10=20 c, d : 4+10=14(b, c) a, d : 10 (a, c, d) a : 2+1=3 (c) a, b : 11+2=13

c : 5+5=10 a, d : 3+10=13(b, d) a, c : 5 d : 10+10=20 b, d : 4+10=14

(b, c, d) b : 2+2=4 (d) a, b : 6+2=8(c, d) a, b : 2 c : 5+5=10 a, c : 3+5=8

d : 10+10=20 b, c : 4+5=94 (retour) 5 (aller)(a, b) a : 14+1=15 ( ) a, b : 15+2=17

b : 13+2=15(a, c) a : 13+1=14 a, c : 14+5=19

c : 13+5=18(a, d) a : 8+1=9 a, d : 9+10=19

d : 13+10=23(b, c) b : 13+2=15 b, c : 15+5=20

c : 14+5=19(b, d) b : 8+2=10 b, d : 10+10=20

d : 14+10=24(c, d) c : 8+5=13 c, d : 13+10=23

d : 13+10=23

Tableau 1.1.Résolution du problème de franchissement du pont.

1.3. Formalisation

1.3.1. Espace d’états, ensemble des décisions, fonction de transition

Soit un entiern ∈ N. Nous supposons que le problème que l’on veut résoudre peutêtre découpé enn + 1 périodes0,...,n. Nous considérons pour chaque périodei, unensembleSi représentant l’ensemble des états à la fin de la périodei. Nous supposonsde plus que :

– Si ∩ Sj = ∅ (si i 6= j), ce qui n’est pas une hypothèse restrictive (si tel n’est pasle cas, on peut toujours redéfinir les états en ajoutant l’indice de la période correspon-dante).

– Il y a un unique état initials0 et un unique état finalsn. Là encore, cette hypo-thèse n’est pas restrictive puisque si tel n’est pas le cas, on peut toujours rajouter un

Page 6: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

6 Optimisation Combinatoire

état initial et/ou final artificiel (en augmentant le nombre de périodes).

Enfin, nous noteronsS =⋃n

i=0 Si l’ensemble des états.

Par exemple, dans le problème de franchissement du pont, rappelons qu’une pé-riode correspond à une traversée, et qu’un état correspond àla liste des personnes sesituant avant le pont (l’état initial étant(a, b, c, d) et l’état final()).

Le but du problème est de “prendre les bonnes décisions”, c’est-à-dire de prendre àchaque période une décision de telle sorte qu’à la fin du processus ces décisions soientoptimales au sens d’un certain critère. Soit un ensembleX représentant l’ensemble desdécisions possibles. Toutes les décisions ne peuvent pas être prises dans tous les états :plus précisément, à chaque état correspond un ensemble (inclus dansX) représentantles décisions possibles dans cet état. Considérons ainsi unensembleA ⊂ S × X :(s, x) ∈ A signifie que la décisionx peut être prise dans l’états.

Enfin, une décision prise à la périodei fait passer d’un état à un autre. Nous consi-dérons une fonction de transitiont : A → S où t(s, x) indique l’état dans lequel on setrouve après avoir pris la décisionx dans l’états. Pour une raison de cohérence, nousdevons de plus rajouter l’hypothèse naturelle suivante :

s ∈ Si

(s, x) ∈ A

}

=⇒ t(s, x) ∈ Si+1

Cette hypothèse signifie simplement qu’une décision fait passer d’un état de la fin dela périodei à un état de la fin de la périodei + 1.

Dans l’exemple de la section 1.2, si l’on se trouve dans l’état (a, b, c) à l’issue dela deuxième traversée, il y a trois décisions possibles : soit b et c traversent et l’on setrouve dans l’état(a), soita et c traversent et l’on se trouve dans l’état(b), soitb et ctraversent et l’on se trouve dans l’état(c).

Remarquons qu’une représentation commode de l’ensemble des états et des tran-sitions peut se faire à l’aide dugraphe d’étatsdéfini comme suit :

– l’ensemble des sommets estS,

– l’ensemble des successeurs d’un sommets estΓ+(s) = {t(s, x) : (s, x) ∈ A}.

Le graphe d’états pour le problème de franchissement du pontest représenté sur lafigure 1.1.

Page 7: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 7

(a, b) (a, b, c) (a) (a, b)

(a, c) (a, c)

(a, d) (a, b, d) (b) (a, d)

(a, b, c, d) ( )

(b, c) (a, c, d) (c) (b, c)

(b, d) (b, d)

(c, d) (b, c, d) (d) (c, d)

Figure 1.1. Graphe d’états pour le problème de franchissement du pont

1.3.2. Politiques réalisables, relation de comparaison et objectif

Dans cette section, nous introduisons la notion depolitique réalisable, et celle devaleur d’une politiquequi nous permet de définir un critère de choix.

DÉFINITION.– On appelle politique toute séquence de décisions.Soitsi ∈ Si etsj ∈ Sj (oùj > i). Une politique réalisable desi à sj est une séquence(xi+1, xi+2, · · · , xj) ∈ Xj−i de (j − i) décisions telles que partant de l’étatsi, cesdécisions nous conduisent à l’étatsj . Autrement dit, cette séquence est telle que, pourk ∈ {i, i + 1, · · · , j − 1} :

(sk, xk+1) ∈ A, etsk+1 = t(sk, xk+1)

Un politique sera dite réalisable de la fin de la périodei à la fin de la périodej ssi ilexistesi ∈ Si etsj ∈ Sj telle que cette politique soit réalisable desi à sj .

Nous noterons∆(si, sj) l’ensemble des politiques réalisables de l’étatsi à l’étatsj , ∆i,j les politiques réalisables de la périodei à la périodej, et ∆ l’ensemble detoutes les politiques réalisables. Nous supposerons que∆(s0, sn) 6= ∅, c’est-à-dire

Page 8: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

8 Optimisation Combinatoire

qu’il existe toujours une politique réalisable des0 àsn.

Puisque la méthode de résolution se base sur une comparaisondes solutions appa-raissant dans notre cadre comme les politiques réalisablesdes0 àsn, nous supposonsdonnée une valuation des politiques réalisables, c’est-à-dire une fonctionv : ∆ → Zoù Z est un espace de valuations muni d’un ordre≤ que nous supposerons complet(voir section 1.7.1 pour le cas d’un ordre partiel). Rappelons qu’un ordre complet≤sur l’ensembleZ est une relation :

- transitive, i.e. pour tout(z1, z2, z3) ∈ Z3, si z1 ≤ z2 etz2 ≤ z3, alorsz1 ≤ z3 ;- antisymétrique, i.e. pour tout(z1, z2) ∈ Z2, si z1 ≤ z2 etz2 ≤ z1, alorsz1 = z2 ;- complète, i.e. pour tout(z1, z2) ∈ Z2, z1 ≤ z2 ouz2 ≤ z1.

Nous disposons donc maintenant d’une relation permettant de comparer les politiquesréalisables.

Le but du problème peut maintenant se formuler aisément. Il s’agit de déterminerune politique optimaleδ∗ ∈ ∆(s0, sn), c’est-à-dire une politique telle que :

∀δ ∈ ∆(s0, sn), v(δ∗) ≤ v(δ)

Sur le graphe d’états de la figure 1.1, un chemin constitué d’arcs en gras constitueune politique optimale entre ses deux extrémités.

REMARQUE.– Symétriquement, dans le cas où les valuations représentent des profits,et où l’on s’inscrit donc dans une optique de maximisation, il s’agit bien évidemmentde déterminer une politiqueδ∗ ∈ ∆(s0, sn) telle que :

∀δ ∈ ∆(s0, sn), v(δ∗) ≥ v(δ)

Sans perte de généralité, nous supposons néanmoins dans la suite que l’on rechercheune politique de valuation minimale.

L’exactitude de la méthode de résolution (que nous verrons àla section 1.5) reposesur une propriété assez naturelle de cette relation de comparaison entre politiquesréalisables, propriété qu’on appellemonotonie.

DÉFINITION.– La fonction de valuationv est dite :

– monotone à droite ssi pour toutsi ∈ Si, toutsj ∈ Sj , tout (δ, δ′) ∈ ∆(si, sj)2

et pour toutx ∈ X tel que(sj , x) ∈ A :

v(δ) ≤ v(δ′) =⇒ v(δ, x) ≤ v(δ′, x)

– monotone à gauche ssi pour toutsi ∈ Si, toutsj ∈ Sj , tout(δ, δ′) ∈ ∆(si, sj)2

et pour toutx ∈ X tel qu’il existesi−1 avec(si−1, x) ∈ A et t(si−1, x) = si :

v(δ) ≤ v(δ′) =⇒ v(x, δ) ≤ v(x, δ′)

Page 9: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 9

– monotone ssi elle est monotone à droite et à gauche.

L’hypothèse de monotonie traduit donc l’idée selon laquelle l’ordre des politiquesn’est pas modifié si l’on prolonge ces politiques de façon identique.

1.4. Quelques autres exemples

Nous avons vu comment l’exemple introductif rentrait bien dans ce cadre for-mel. Néanmoins, la programmation dynamique est une méthodes’appliquant à unensemble assez vaste de problèmes (e.g., [BEL 54, DRE 77]). Nous allons donner iciquelques exemples classiques permettant de donner une première idée de la diversitédes applications possibles.Dans cette partie, nous donnons simplement l’énoncé de divers problèmes et leurs mo-délisations dans le cadre précédemment exposé. Dans la section 1.6, nous proposeronsune résolution de ces exemples par la programmation dynamique.

1.4.1. Gestion de stocks

Ce premier exemple est l’un des plus classiques se résolvantpar programmationdynamique. Ceci tient en partie au fait que son expression dans le formalisme de laprogrammation dynamique est immédiate et très naturelle.Considérons donc une entreprise produisant (et vendant) une certaine marchandiseM .Cette production nécessite une pièce particulièreP que l’entreprise achète chez unfournisseur. L’entreprise possède un entrepôt où elle peutstocker jusqu’à 5 piècesP .Elle achète chaque début de mois une certaine quantité de piècesP pour lui permettrede satisfaire les demandes du mois. Les prix d’achat des piècesP fluctuent de moisen mois mais sont supposés connus à l’avance. De plus, l’entreprise dispose de lademande de produitM pour chacune des périodes que l’on considère. Ces données(prix d’achat deP et demandes deM à satisfaire) sont présentés dans le tableau 1.2.

mois 1 mois 2 mois 3 mois 4 mois 5Prix d’achat unitairepi 3 2 2 4 3

Demandedi 1 4 2 3 1

Tableau 1.2.Demandes et prix d’achat

Sachant qu’une pièceP est nécessaire à la production d’un objetM , le but duproblème est de déterminer une stratégie d’achat optimale pour l’entreprise : plusprécisément, il s’agit de décider la quantité deP à acheter au début de chaque mois de

Page 10: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

10 Optimisation Combinatoire

manière à satisfaire la demande et en minimisant le coût total. On supposera de plusque le stock initial est nul et que l’on veut un stock final nul.

Exprimons ce problème dans le formalisme introduit à la section 1.3.Périodes :le découpage en périodes va de soi. Leièmemois correspond à la périodei, et l’on rajoute la période initiale0.

Espace d’états :les états de la périodei correspondent aux stocks en fin de période.Il y a ainsi un états0 ∈ S0 correspondant à un stock nul, 6 états dans chacune despériodes 1 à 4 correspondant à un stock entre 0 et 5, et un état àla période 5 corres-pondant à un stock final nul.

Ensemble de décisions :les décisions à prendre sont les quantités de piècesP à ache-ter en début de période. Si l’on possède un stockki−1 en fin de périodei − 1, on peutalors acheter au plusli = 5−ki−1 pièces pour ne pas dépasser la capacité de stockage.De plus, il faut au moinsdi pièces de manière à satisfaire la demande. Cela nous in-dique donc les décisions possibles dans chaque état, c’est-à-dire l’ensembleA : étantdonné un stockki−1 à la périodei−1, (ki−1, li) ∈ A ⇔ ki−1+li ∈ {di, di+1, · · · , 5}.

Fonction de transition :elle correspond au calcul du stockki à la fin de la périodei enfonction de celuiki−1 à la fin de la périodei − 1 et de la quantitéli achetée au débutde la périodei, c’est-à-direki = ki−1 + li − di.

Valuation des politiques :la valuation est elle aussi très naturelle. Le but est de minimi-ser la somme des coûts d’achat de matière première. Considérons alors une politiqueréalisable où l’on achèteli piècesP à la périodei, li+1 à la périodei + 1, . . . , lj àla périodej. Nous définissons la valeur de cette politique comme le coût engendrépar ces achats :v(li, · · · , lj) =

∑jm=i pmlm. Cette valuation (à valeurs réelles) est de

manière évidente monotone.

REMARQUE.– Nous verrons dans la section 1.7.2 que l’on peut égalementenvisagerle cas où la demande est aléatoire et où l’on cherche à minimiser l’espérance du coût.

1.4.2. Plus court chemin bottleneck dans un graphe

Ce problème très classique en théorie des graphes se modélise (et peut donc serésoudre) comme un problème de programmation dynamique. Considérons le graphede la figure 1.2.

Notre objectif est de trouver un chemin optimal entre les sommetsv0 etv5, en pre-nant comme valeur d’un cheminla plus grande des valuations des arêtes qui le consti-tuent(problème de typebottleneck). Ce type de problèmes se rencontre par exempledans le choix d’un itinéraire pour un convoi transportant des produits à risque. Lesarcs du graphe correspondent à un niveau de risque qualitatif. Il s’agit alors de trouverl’itinéraire minimisant le risque maximal le long du parcours. Nous noteronsΓ+(vi)l’ensemble des successeurs devi, c’est-à-dire les sommetsvj pour lesquels il existe un

Page 11: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 11

v1

v3

v0 v5

v2 v4

4

4

24

1

5

3

3

41

1

2

Figure 1.2. Instance de plus court chemin bottleneck.

arc(vi, vj), et nous noteronsd(vi, vj) la longueur de l’arc(vi, vj) (avec, par conven-tion, d(vi, vi) = −∞).

On peut facilement montrer, sans faire d’hypothèse supplémentaire sur les lon-gueurs des arcs, qu’il existe un plus court chemin bottleneck empruntant au plus 5arcs (de manière plus généralen − 1 où n est le nombre de sommets du graphe,puisque toute boucle ne peut diminuer strictement la valeurd’un chemin). C’est cettepropriété qui va nous indiquer une modélisation possible dans le cadre de la program-mation dynamique : nous allons calculer pour chaquek entre1 et 5 la valeur d’unplus court chemin comportant au plusk arcs allant du sommetv0 à chacun des autressommets. La valeur optimale d’un chemin comportant au plus 5arcs entrev0 etv5 estcelle recherchée. Plus précisément, cela conduit à la modélisation suivante :

Périodes :elles vont de 0 à5 et correspondent au nombre maximum d’arcs dans leschemins considérés.

Espace d’états :un état(vj , i) ∈ Si correspond aux chemins allant dev0 à vj em-pruntant au plusi arcs. Pour la période 0 il n’y a qu’un seul état(v0, 0) correspondantau sommetv0 (seul état atteignable avec 0 arc). Il y a également un seul état (v5, 5)à la période 5 correspondant au sommet final. Pour les autres périodesi, il y a 6 états(vj , i), j = 0, . . . , 5.

Ensemble de décisions :une décision consistant ici à rester sur place ou à se dé-placer vers un successeur, l’ensemble des décisions possibles dans l’état(vj , i) estdoncΓ+(vj) ∪ {vj}, pour i = 0, . . . , 4 (où vk désigne la décision de se déplacerversvk). Pour la période 5, seule la décisionv5 est susceptible d’être admissible carS5 = (v5, 5).

Page 12: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

12 Optimisation Combinatoire

Fonction de transition :elle découle de la définition de nos décisions :t((vj , i), vk) =(vk, i + 1).

Valuation des politiques :lorsque l’on est dans l’état(vj , i), la valuation doit corres-pondre au chemin optimal empruntant au plusi arcs entrev0 et vj . On peut doncdéfinir la valeur de la politique(vki

, vki+1, . . . , vkj

) comme la valeur du chemin em-prunté :

v((vki, vki+1

, . . . , vkj)) = max{d(vkl

, vkl+1) : l = i, . . . , j − 1}

La fonction de valuation est ici encore monotone. Pour la monotonie à droite parexemple, il suffit de remarquer que étant donnés un cheminδ arrivant à l’état(vk, j)et une décisionvl réalisable à l’état(vk, j), v(δ, vl) = max(v(δ), d(vk, vl)). L’ajoutde la décisionvl ne modifie donc pas l’ordre des préférences.

REMARQUE.– nous avons considéré ici que la valeur d’un chemin était lavaluationmaximale de ces arêtes. On peut tout à fait adapter la modélisation à d’autres pro-blèmes de cheminement. Il suffit pour cela de changer la valuation des politiques. Si,par exemple, on considère que la valeur d’un chemin est la somme des valuations desarcs le constituant, on peut alors définirv((vki

, vki+1..., vkj

)) =∑j−1

l=i d(vkl, vkl+1

) ;la valuation est également monotone.

1.4.3. Problème du sac à dos

Considérons un ensemble d’objets{1, . . . , n}. A chaque objet est associé un profitpi ainsi qu’une massemi. Nous disposons de plus d’un sac à dos dont la masse totalene doit pas dépasserb. Le but du problème est de déterminer quels objets prendredans le sac à dos de manière à maximiser le profit (tout en respectant la contraintede masse maximale). Il s’agit autrement dit de résoudre le programme linéaire envariables bivalentes suivant :

max z =∑n

i=1 pixi

s.c.

∑ni=1 mixi ≤ b

xi ∈ {0, 1}, i = 1, . . . , n

Pour modéliser ce problème dans le cadre de la programmationdynamique, nous al-lons résoudre la famille de problèmes suivante : pour chaquei ∈ {1, . . . , n} et pourchaquej ∈ {0, . . . , b}, comment choisir des objets parmi lesi premiers de manièreà ce que leur masse totale soit au plusj et le profit associé maximal. La solution duproblème initial sera donc la politique obtenue pour le problème oùi = n et j = b.

Considérons l’instance suivante : nous avons 5 objets de masses respectives 6, 5,3, 2 et 1, les profits associés étant respectivement 20, 19, 9,5 et 2, et un sac à dos dont

Page 13: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 13

la masse ne doit pas dépasser 9.

Périodes :elles vont de0 à 5 et correspondant au sous-ensemble des objets considé-rés.

Espace d’états :un état(i, j) ∈ Si (avec i ∈ {1, . . . , 5}) correspond aux sous-ensembles de{1, . . . , i} de masse inférieure ou égale àj. Pour les périodesi entre1 et 4, il y a 10 états(i, j), j ∈ {0, . . . , 9}. Pour la période 0, il n’y a qu’un seul état(0, 0) ; pour la période 5, nous considérons l’état(5, 9).

Ensemble de décisions :une décision à la périodei ∈ {1, . . . , 4} consiste ici à insérerou non l’objeti dans le sac à dos. Il y a donc 2 décisions possibles dans chaqueétat,décisions que nous noterons 0 (ne pas prendre l’objet) et 1 (prendre l’objet). A la der-nière période toutefois, étant donné que l’on veut aboutir àl’état (5, 9), il n’y a quedeux états où l’on peut prendre une décision : l’état(4, 9) où l’on prend la décision 0de ne pas mettre l’objet, et l’état(4, 8) où l’on prend la décision 1 de mettre l’objetdans le sac.

Fonction de transition :elle exprime l’influence de la décision sur la masse du sac.Ainsi, si l’on est dans l’état(i, j), et si l’on prend l’objeti + 1 (décision 1), cette dé-cision envoie dans l’état(i + 1, j + mi+1) ; en revanche, la décision0, qui ne modifiepas le poids du sac, envoie dans l’état(i + 1, j).

Valuation des politiques :elle indique simplement le profit associé aux éléments misdans le sac à dos :

v(xi, . . . , xj) =∑

{k:xk=1}

pk

La fonction de valuation est de toute évidence monotone.

1.5. Résolution

Après avoir vu le cadre formel et quelques exemples de problèmes s’inscrivantdans celui-ci, nous pouvons maintenant aborder la résolution effective, c’est-à-dire laméthode de la programmation dynamique. Comme nous l’avons vu dans l’introduc-tion et les exemples suivants, l’idée de la méthode est de résoudre non plus un maistoute une famille de problèmes en établissant des relationsde récurrence entre lessolutions optimales de ces problèmes. Cela va permettre de n’énumérer qu’un sous-ensemble (relativement restreint) de solutions et de gagner ainsi sensiblement en effi-cacité par rapport à la méthode brutale consistant à énumérer toutes les solutions.Plus précisément, les problèmes que nous considérons sont découpés enn + 1 pé-riodes, pour lesquelles nous disposons d’un ensemble d’états possibles. Le point cen-tral de cette méthode va être de calculer, de manière récursive, la meilleure politique(ou du moins l’une des meilleures) pour arriver à chacun des états de chaque périodei. L’hypothèse de monotonie nous permettra de calculer aisément ces politiques et deparvenir ainsi à la résolution du problème. C’est la méthodedite de procédure avant,

Page 14: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

14 Optimisation Combinatoire

que nous exposons et démontrons dans la section 1.5.1.Nous allons ensuite exposer la deuxième méthode de la programmation dynamique,dite procédure arrière, qui consiste à partir cette fois nonplus de l’état initial mais del’état final. Nous illustrerons cette méthode sur l’exemplede la section 1.2.Dans un dernier temps, nous préciserons les liens entre l’hypothèse de monotonie, surlaquelle nous basons la méthode de résolution, et le principe d’optimalité énoncé parBellman, que l’on considère souvent comme sous-tendant la méthode de la program-mation dynamique.

1.5.1. Procédure avant

Considérons un problème dont la fonction de valuation est monotone à droite. Laprocédure en avant peut alors s’exprimer comme suit :

1 DéfinirS′0 = {s0} et δ∗(s0) = () (la politique vide) ;

2 Pouri allant de 1 àn :

2a DéterminerS′i = {t(si−1, x) : si−1 ∈ S′

i−1 et (si−1, x) ∈ A}

2b Pour toutsi ∈ S′i, déterminer :

δ∗(si) ∈ arg min{v(δ∗(si−1), x) : (si−1, x) ∈ A et t(si−1, x) = si}

3 Renvoyerδ∗(sn)

S′i désigne l’ensemble des états que l’on peut atteindre en partant de l’état initial

s0 (c’est donc l’ensemble des étatssi ∈ Si tels que∆(s0, si) 6= ∅). Pour chacun deces états, nous calculonsδ∗(si) qui représente une politique optimale pour passer del’état initial àsi.

THÉORÈME.– Si la fonction de valuation est monotone à droite, alorsδ∗(sn) est unepolitique optimale pour passer de l’état initial à l’état final.

PREUVE.– Nous allons montrer par récurrence suri que pour tout étatsi ∈ S′i, δ

∗(si)est une politique optimale pour passer des0 àsi, c’est-à-dire que :

∀δ ∈ ∆(s0, si), v(δ∗(si)) ≤ v(δ)

C’est évident pouri = 0. Supposons que cela est vrai pour tous les états apparte-nant àS′

i−1. Soitδ = (x1, x2, . . . , xi) ∈ ∆(s0, si).Appelonssi−1 l’état obtenu en appliquant la politique(x1, x2, . . . , xi−1) à partir de

Page 15: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 15

s0. Alors par hypothèse de récurrence,v(δ∗(si−1)) ≤ v((x1, . . . , xi−1)). Ainsi, parmonotonie à droite :

v(δ∗(si−1), xi) ≤ v(δ) (1)

De plus, par définition deδ∗(si) :

v(δ∗(si)) ≤ v(δ∗(si−1), xi) (2)

On déduit des inégalités (2) et (1) quev(δ∗(si)) ≤ v(δ).Nous pouvons alors immédiatement conclure queδ∗(sn) est une politique optimalepour passer de l’état initial à l’état final.

1.5.2. Procédure arrière

Reprenons l’exemple de franchissement du pont. Il est possible d’appliquer “àrebours” la démarche précédemment mise en œuvre. En effet, considérons l’état final() où tout le monde a traversé le pont. A la fin de la période précédente, on peutfacilement induire qu’il y a 6 états possibles :(a, b), (a, c), (a, d), (b, c), (b, d) et(c, d). En venant de l’état(a, b), il a fallu 2 minutes pour atteindre l’état(). De même,en venant des états(a, c), (a, d), (b, c), (b, d) ou (c, d), il a fallu respectivement 5, 10,5, 10 ou 10 minutes pour atteindre l’état().De manière analogue, quatre états sont possibles à la fin de lapériode précédente :(a),(b), (c) et (d). Prenons l’exemple de l’état(a). Partant de cet état, on peut rejoindrel’état (a, b) en 2 minutes, l’état(a, c) en 5 minutes ou l’état(a, d) en 10 minutes. Ilfaut donc, pour aller de(a) à (), au mieuxmin{2 + 2, 5 + 5, 10 + 10} minutes. Ainsi,une politique optimale pour aller de(a) à() consiste à faire revenirb lors de la période4.En calculant ainsi, pour chaque état, une politique optimale pour aller de cet état àl’état final, nous aboutissons à une politique optimale de l’état initial à l’état final.

Plus généralement, nous présentons maintenant la méthode de résolution appeléeprocédure arrière. Elle consiste à faire un raisonnement analogue que pour la procé-dure avant mais en partant de l’état final. Nous aurons besoinmaintenant de la mono-tonie à gauche de la fonction de valuation.

1 DéfinirS′′n = {sn} et δ∗(sn) = () (la politique vide) ;

2 Pouri allant den − 1 à0 :

2a DéterminerS′′i = {si : ∃x ∈ X, (si, x) ∈ A et t(si, x) ∈ S′′

i+1}

2b Pour toutsi ∈ S′′i , déterminer :

δ∗(si) ∈ arg min{v(x, δ∗(si+1)) : (si, x) ∈ A et t(si, x) = si+1}

3 Renvoyerδ∗(s0)

Page 16: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

16 Optimisation Combinatoire

Cette fois-ci,S′′i désigne l’ensemble des états de la périodei à partir desquels

on peut atteindre l’état finalsn. Pour chacun de ces états, nous calculonsδ∗(si) quireprésente une politique optimale pour parvenir à l’état final en partant de l’étatsi.Nous avons le théorème suivant :

THÉORÈME.– Si la fonction de valuation est monotone à gauche, alorsδ∗(s0) est unepolitique optimale pour passer de l’état initial à l’état final.

PREUVE.– Elle est analogue à la précédente et nous allons procéder par récurrencedescendante suri pour montrer que, pour tout étatsi ∈ S′′

i , δ∗(si) est une politiqueoptimale pour passer desi àsn.C’est évident pouri = n. Supposons que cela est vrai pour tous les états appar-tenant àS′′

i+1. Soit δ = (xi+1, xi+2, . . . , xn) ∈ ∆(si, sn), et si+1 = t(si, xi+1).Alors par hypothèse de récurrence,v(δ∗(si+1)) ≤ v((xi+2, . . . , xn)), et par monoto-nie à gauchev(xi+1, δ

∗(si+1)) ≤ v(δ). La définition deδ∗(si) permet d’affirmer quev(δ∗(si)) ≤ v(xi+1, δ

∗(si+1)), d’où l’on obtient :v(δ∗(si)) ≤ v(δ).

REMARQUE.– La méthode de procédure arrière ne conduit pas forcément àparcourirle même sous-ensemble de sommets du graphe d’états que cellede procédure avant.En effet, les états atteignables depuis l’état initial ne sont pas forcément les mêmesque ceux à partir desquels on peut atteindre l’état final (le lecteur pourra reprendrel’exemple de gestion de stocks pour s’en convaincre).

1.5.3. Principe d’optimalité et monotonie

On évoque souvent, pour justifier l’utilisation de la programmation dynamique, lefait que le problème vérifie le principe d’optimalité de Bellman. Voici comment il esténoncé dans [BEL 57] (ce que nous appelonspremière formedu principe d’optima-lité) :

An optimal policy has the property that whatever the initialstate and the initialdecisions are, the remaining decisions must constitute an optimal policy withregard to the state resulting from the first decision.

Ce principe stipule donc que, dans un processus où l’on doit prendren décisions,la restriction d’une politique optimale aux(n − 1) dernières décisions (et donc parrécurrence auxk dernières, pourk ∈ {1, . . . , n − 1}) doit être optimale.Ce principe semble donc très proche de notre hypothèse de monotonie à gauche,base de la preuve de la procédure arrière. On pourrait d’ailleurs clairement reprendrela preuve de la méthode en prenant comme hypothèse le principe d’optimalité, quiconstitue donc une condition suffisante pour que la procédure arrière s’applique.On énonce souvent le principe d’optimalité de la manière suivante : “toute sous-politique d’une politique optimale est optimale” (ce que nous appelonsdeuxième

Page 17: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 17

forme du principe d’optimalité). Il apparaît sous une forme (légèrement) plus res-trictive que la première, et se rapproche alors de la monotonie ; on peut dans ce casappliquer les procédures avant et arrière.

Néanmoins, on peut s’apercevoir que l’hypothèse de monotonie permet de consi-dérer des problèmes pour lesquels le principe d’optimalitéde Bellman (dans les deuxformes précédentes) n’est pas vérifié (e.g., [MIN 83]).Reprenons l’exemple (voir section 1.4.2) du problème de plus court chemin bottleneckdans un graphe, où la valeur d’un chemin est la plus grande desvaluations des arêtesqui le constituent. Comme nous l’avons vu, la fonction de valuation des politiquesest monotone. Considérons maintenant le graphe de la figure 1.3, dans lequel nouscherchons un chemin optimal entrev1 etv5.

v3

v1 v2 v5

v4

5

2

4

3

1

Figure 1.3. Violation du principe d’optimalité.

On s’aperçoit aisément que le chemin(v1, v2, v4, v5), de valeur 5, est optimal. Enrevanche, le sous-chemin(v2, v4, v5), de valeur 4, n’est pas optimal pour aller dev2 àv5. L’autre chemin (c’est-à-dire(v2, v3, v5)) est en effet de valeur 3.

REMARQUE.– En toute rigueur, le principe d’optimalité n’entraîne pas la monotonie.Pour s’en rendre compte, il suffit de remarquer qu’il ne porteque sur les politiquesoptimales, alors que la monotonie porte elle sur toutes les politiques.

Imaginons maintenant que l’on modifie légèrement l’hypothèse de monotonie enintroduisant la notion de monotonie stricte :

DÉFINITION.– La fonction de valuationv est dite :

– strictement monotone à droite ssi pour toutsi ∈ Si, toutsj ∈ Sj , tout (δ, δ′) ∈∆(si, sj)

2 et pour toutx ∈ X tel que(sj , x) ∈ A :{

v(δ) < v(δ′) =⇒ v(δ, x) < v(δ′, x)v(δ) = v(δ′) =⇒ v(δ, x) = v(δ′, x)

Page 18: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

18 Optimisation Combinatoire

– strictement monotone à gauche ssi pour toutsi ∈ Si, toutsj ∈ Sj , tout(δ, δ′) ∈∆(si, sj)

2 et pour toutx ∈ X tel qu’il existesi−1 avec(si−1, x) ∈ A et t(si−1, x) =si :

{

v(δ) < v(δ′) =⇒ v(x, δ) < v(x, δ′)v(δ) = v(δ′) =⇒ v(x, δ) = v(x, δ′)

– strictement monotone ssi elle est strictement monotone à droite et à gauche.

Si l’on suppose que la fonction de valuation est strictementmonotone (resp. stric-tement monotone à gauche), le principe d’optimalité dans sadeuxième forme (resp.dans sa première forme) est alors automatiquement vérifié. En effet, supposons parexemple quev est strictement monotone à gauche, et considérons une politique opti-maleδ∗ = (x1, x2, . . . , xn). Soitδ une politique des1 = t(s0, x1) à sn. L’hypothèsede stricte monotonie interdit immédiatement la possibilitév(δ) < v(x2, . . . , xn), donc(x2, . . . , xn) est optimale des1 àsn.Le caractère strict de la monotonie, s’il entraîne le principe d’optimalité de Bellman,ne présente réellement d’intérêt que si l’on recherche toutes les politiques optimales,et non une seule. En effet, en modifiant légèrement les procédures avant et arrièrede façon à retenir toutes les politiques partielles optimales, l’hypothèse de monotoniestricte garantit d’obtenir toutes les politiques optimales. Par contre, la monotonie largene le garantit pas, comme on peut s’en convaincre sur l’exemple de la figure 1.3.

1.6. Résolution des exemples

1.6.1. Gestion de stocks

Dans ce problème, le but est de déterminer combien de piècesP il faut acheterau début de chaque mois de manière à minimiser le coût total (tout en satisfaisantla demande). L’approche par programmation dynamique consiste ici à résoudre lafamille suivante de problèmes : pour chaque périodei et pour chaque stock à la fin decette période, déterminer une politique optimale pour parvenir à ce niveau de stock.Nous résolvons l’exemple de la section 1.4.1 sur la figure 1.4. Dans ce tableau, l’indiced’une colonne correspond à la période considérée et l’indice d’une ligne correspondau niveau de stock atteint à la fin de cette période. Dans la case associée figurent lavaleur d’une politique optimale jusqu’à cet état et le vecteur des décisions définissantune telle politique optimale.

1.6.2. Plus court chemin bottleneck

Dans ce problème, le but est de déterminer un plus court chemin bottleneck pouraller d’un sommetv0 à un sommetvn. L’approche par programmation dynamiqueconsiste ici à résoudre la famille suivante de problèmes : pour chaquei ≤ n et pourchaque sommet du graphe, déterminer un chemin optimal comportant au plusi arcs de

Page 19: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 19

mois 1 mois 2 mois 3 mois 4 mois 5Prix d’achat unitairepi 3 2 2 4 3

Demandedi 1 4 2 3 1

PP

PP

PP

PPstock

période0 1 2 3 4 5

0 0 3 11 15 21 24

() (1) (1,4) (1, 4, 2) (1,4,5,0) (1,4,5,0,1)1 6 13 17 25

(2) (1, 5) (1, 4, 3) (1, 4, 5, 1)2 9 19 29

(3) (1, 4, 4) (1, 4, 5, 2)3 12 21

(4) (1,4,5)4 15

(5)5

Figure 1.4. Résolution du problème de stock.

v0 à ce sommet. Nous résolvons l’exemple de la section 1.4.2 surla figure 1.5. Dans letableau, l’indice d’une colonne correspond au nombre maximum d’arcs des cheminsconsidérés et l’indice d’une ligne correspond au sommet du graphe atteint. Commeprécédemment, dans la case associée figurent la valeur d’unepolitique optimale jus-qu’à cet état et le vecteur des décisions définissant une telle politique optimale.

1.6.3. Sac à dos

La résolution de ce problème par programmation dynamique consiste à déterminer,pour chaquei ∈ {1, . . . , 5} et pour chaquej ∈ {0, . . . , 9}, une solution optimale duproblème suivant : déterminer un sous-ensemble d’objets parmi {1, . . . , i} de masseinférieure ou égale àj et de profit maximal.

Le tableau 1.6 présente la résolution de l’exemple de la section 1.4.3. La case àl’intersection de la colonnei ∈ {1, . . . , 5} et de la lignej ∈ {0, . . . , 9} indique lavaleur d’une solution optimale du problème correspondant,ainsi que le vecteur dedécisions définissant une telle solution.

Page 20: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

20 Optimisation Combinatoire

v1

v3

v0 v5

v2 v4

4

4

24

1

5

3

3

41

1

2

PP

PP

PP

PPsommet

période0 1 2 3 4 5

v0 −∞ −∞ −∞ −∞ −∞() (v0) (v0, v0) (v0, v0, v0) (v0, v0, v0, v0)

v1 1 1 1 1(v1) (v1, v1) (v1, v1, v1) (v1, v1, v1, v1)

v2 5 4 3 3(v2) (v1, v2) (v1,v3,v2) (v1, v3, v2, v2)

v3 4 3 3 3(v3) (v1,v3) (v1, v3, v3) (v1, v3, v3, v3)

v4 5 4 3(v2, v4) (v1, v2, v4) (v1,v3,v2,v4)

v5 4 4 4 3(v3, v5) (v3, v5, v5) (v3, v5, v5, v5) (v1,v3,v2,v4,v5)

Figure 1.5. Résolution du plus court chemin bottleneck.

1.7. Quelques extensions

Après avoir vu quelques exemples classiques de résolution de problèmes qui s’ex-primaient directement dans le cadre utilisé ici, nous allons dans cette partie proposerquelques extensions permettant de résoudre d’autres problèmes par la méthode de laprogrammation dynamique. Dans la section 1.7.1, nous généralisons la problématiqueau cas (de l’optimisation multicritère notamment) où l’ensemble de valeursZ est munid’un ordre supposé seulement partiel. Ensuite, dans la section 1.7.2, nous nous inté-ressons à la programmation dynamique dans l’incertain. Enfin, dans la section 1.7.3,

Page 21: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 21

objet 1 objet 2 objet 3 objet 4 objet 5masses 6 5 3 2 1profits 20 19 9 5 2

PP

PP

PP

PPmasse

période0 1 2 3 4 5

0 0 0 0 0 0() (0) (0, 0) (0, 0, 0) (0, 0, 0, 0)

1 0 0 0 0(0) (0, 0) (0, 0, 0) (0, 0, 0, 0)

2 0 0 0 5(0) (0, 0) (0, 0, 0) (0, 0, 0, 1)

3 0 0 9 9(0) (0, 0) (0, 0, 1) (0, 0, 1, 0)

4 0 0 9 9(0) (0, 0) (0, 0, 1) (0, 0, 1, 0)

5 0 19 19 19(0) (0,1) (0, 1, 0) (0, 1, 0, 0)

6 20 20 20 20(1) (1, 0) (1, 0, 0) (1, 0, 0, 0)

7 20 20 20 24(1) (1, 0) (1, 0, 0) (0, 1, 0, 1)

8 20 20 28 28(1) (1, 0) (0,1,1) (0,1,1,0)

9 20 20 29 29 30(1) (1, 0) (1, 0, 1) (1, 0, 1, 0) (0,1,1,0,1)

Figure 1.6. Résolution du sac à dos.

nous présentons la programmation dynamique généralisée qui a été introduite pourtraiter des problèmes où la fonction de valuation n’est pas monotone.

1.7.1. Ordre partiel et optimisation multicritère

1.7.1.1. Nouvelle formulation du problème

Nous supposons ici que la fonctionv de valuation des politiques est à valeursdans un ensembleZ muni d’un ordre partiel4. Cela signifie que deux politiquesne sont plus forcément comparables. On introduit alors le concept de politique non-dominée : une politiqueδ0 est dite non-dominée ssi il n’existe pas de politiqueδ tellequev(δ) ≺ v(δ0).

Page 22: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

22 Optimisation Combinatoire

Le but du problème est alors modifié : il ne s’agit plus de trouver une politiqueδ∗ ∈ ∆(s0, sn) meilleure que toutes les autres (car bien souvent une telle politiquen’existera pas), mais de trouver l’ensemble des politiquesnon-dominées1.

Soit ∆0 un ensemble de politiques réalisables. Nous notonsND(∆0) un sous-ensemble de∆0 minimal pour l’inclusion tel que :

∀δ ∈ ∆0,∃δ∗ ∈ ND(∆0) : v(δ∗) 4 v(δ)

Résoudre le problème consiste alors à trouver un ensembleND(∆(s0, sn)).

1.7.1.2. Résolution

Les méthodes de résolution avant et arrière sont toujours applicables sous les hypo-thèses de monotonie à droite ou à gauche de la fonction de valuation. Il faut cependantles adapter à la nouvelle problématique en déterminant, pour chaque étatsi de chaquepériodei, l’ensemble∆∗(si) des politiques non-dominées des0 àsi (ou desi àsn).

La procédure avant s’exprime comme suit :

1 Définir S′0 = {s0} et ∆∗(s0) = {()} (l’ensemble contenant un élément : la

politique vide) ;

2 Pouri allant de1 àn :

2a DéterminerS′i = {t(si−1, x) : si−1 ∈ S′

i−1 et (si−1, x) ∈ A}

2b Pour toutsi ∈ S′i, déterminer un ensemble :

∆∗(si) = ND({(δ, x) : δ ∈ ∆∗(si−1) et t(si−1, x) = si})

3 Renvoyer∆∗(sn)

Cette méthode de procédure avant est valable sous l’hypothèse de monotonie àdroite :

THÉORÈME.– Si la fonction de valuation est monotone à droite, alors∆∗(sn) =ND(∆(s0, sn)).

La preuve, similaire à celle du cadre traditionnel, est omise.

1.7.1.3. Exemples

Dans les problèmes multicritères [TRZ 94], on dispose deq fonctions de valuationv1, . . . , vq de∆ dansN (lescritères), que l’on suppose monotones.

1. En réalité, si deux politiques non dominées ont même valuation, on n’en retiendra qu’une.

Page 23: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 23

A chaque politique réalisable correspond donc un point dansl’espace des critères.L’ordre partiel le plus utilisé entre vecteurs-coûts est laPareto-dominance4P :

∀x, y ∈ Nq, x 4P y ⇐⇒ ∀i ∈ {1, . . . , q}, xi ≤ yi

On considère que l’on a modélisé un problème multicritère sous la forme du graphed’états de la figure 1.7. Lors de l’exécution de la procédure avant indiquée dans la sec-tion précédente, les ensembles∆∗(vi) retenus sont (en notantvj la décision menant àl’état vj) :

- ∆∗(v1) = {(v1)}- ∆∗(v2) = {(v2)}- ∆∗(v3) = {(v1, v3)}- ∆∗(v4) = {(v1, v4), (v2, v4)}- ∆∗(v5) = {(v2, v5)}- ∆∗(v6) = {(v2, v4, v6), (v2, v5, v6)}Pour∆∗(v4) par exemple, les deux politiques possibles(v1, v4) et (v2, v4), de va-leurs respectives(5, 3) et (3, 4), doivent être retenues car elles sont toutes deux non-dominées.

v3

v1

v0 v4 v6

v2

v5

(2,2)

(1,2)

(3,1)

(2,2)

(2,2)

(2,1)

(2,2)

(1,1)

(2,1)

Figure 1.7. Graphe d’états d’un problème multicritère.

Page 24: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

24 Optimisation Combinatoire

1.7.2. Programmation dynamique dans l’incertain

Dans la plupart des problèmes réels, on est amené à prendre encompte l’incertain.Le processus fait intervenir non plus seulement les choix dudécideur mais égale-ment une part d’incertitude liée à des paramètres extérieurs : on doit alors modifier lecadre déterministe étudié jusqu’à présent. Dans un problème de gestion de stocks parexemple, il est rare que la demande soit déterministe. Des données statistiques per-mettent néanmoins généralement de modéliser l’incertain sous forme d’une variablealéatoire correspondant à la demande. On évalue alors la séquence de choix au regardd’un critère de décision donné (par exemple l’espérance de la valeur de la solution).

1.7.2.1. Processus décision-hasard

Dans ce nouveau cadre, une période se divise en deux phases successives : unedécision, puis l’intervention du hasard qui détermine l’état dans lequel on va se trouverà la fin de cette période. Nous considérons que, étant donnés un état et une décision,le hasard est la donnée d’un ensemble d’états susceptibles d’être atteints et d’uneprobabilité pour chacun d’eux qu’ils soient effectivementatteints. Ainsi, cela revientà considérer une fonction de transition non plus déterministe mais aléatoire.

Une politique ne consiste plus ici en une séquence de décisions, car une telle sé-quence n’aurait pas de sens en présence du hasard. Il s’agit maintenant de donnerpour chaque états ∈ S la décisionx(s) que l’on prendrait (si les décisions précé-dentes et le hasard nous y conduisaient). Il est commode de représenter le processusdécision-hasard par un graphe d’états particulier, appeléarbre décision-hasard, oùl’on distingue deux types de sommets :

- des sommetssi ∈ Si correspondant aux différents états,

- des sommetshi ∈ Hi correspondant à l’intervention du hasard.

Dans ce graphe, un arc(si, hi) correspond à une décision, et l’ensemble des arcs{(hi, si+1) : si+1 ∈ Γ+(hi)} correspond aux différentes transitions aléatoires pos-sibles. De plus, une probabilité de transitionP (hi, si+1) est associée à chaque arc(hi, si+1).

Dans un tel contexte, l’état final possible n’est bien souvent pas unique : on disposed’un ensemble d’états finauxSn qu’on est susceptible d’atteindre. En outre, on attribueune valeur scalairev(sn) à chaque état finalsn ∈ Sn. La valeur d’une politiqueδcorrespond alors à l’espérance :

E(δ) =∑

sn∈Sn

Pδ(sn)v(sn)

où Pδ(sn) désigne la probabilité que l’on aboutisse à l’étatsn en menant la politiqueδ.

Page 25: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 25

Selon que les valeurs associées aux états finaux représentent des coûts ou des pro-fits, on recherche une politique minimisant ou maximisant l’espérance.

1.7.2.2. Résolution

La valeur d’une politique optimale est obtenue en remontantà partir des états fi-naux vers l’état initial selon les relations de récurrence suivantes :

v(si) = min{v(hi) : hi ∈ Γ+(si)}v(hi) =

si+1∈Γ+(hi)P (hi, si+1)v(si+1)

On associe une étiquette à chaque sommet du graphe de décision correspondant à lavaleur d’une politique optimale de ce sommet à un état final. Une décision optimalex∗(si) en un étatsi correspond à un arc(si, hi) pour lequel l’étiquette associée ausommethi est minimale. L’ensemble de ces décisions optimales constituent une poli-tique optimale.

1.7.2.3. Exemple

Considérons un contrat d’assurance auquel on peut décider de souscrire pour uneannée 1 et/ou une année 2. Bien évidemment, on ne sait pas si onsera amené ounon à le faire valoir à la suite d’un sinistre. De plus, la probabilité d’avoir un sinistredurant l’année 2 est conditionnée au fait qu’on ait déjà subiou non un sinistre durantl’année 1. L’arbre décision-hasard correspondant à ce problème est représenté sur lafigure 1.8. Le sommetd1 concerne le choix de souscrire (branche 1) ou non (branche0) au contrat lors de la première année. Les sommetsh1 ouh2 concernent l’occurrence(branche 1) ou non (branche 0) d’un événement nécessitant defaire jouer ce contrat(P (0) = 2/5 et P (1) = 3/5). Les sommetsd2, d3, d4 et d5 concernent le choix desouscrire ou non au contrat lors de l’année 2. Enfin, les sommets h3, h4, h5, h6, h7,h8, h9 et h10 concernent l’occurrence d’un événement nécessitant de faire jouer lecontrat lors de la deuxième année. Si on a déjà connu un sinistre lors de l’année 1, laprobabilité d’occurrence d’un tel événement estP (0) = 3/4 (et doncP (1) = 1/4).Par contre, si on n’a pas connu de sinistre lors de l’année 1, les probabilités demeurentP (0) = 2/5 etP (1) = 3/5. En chaque feuille de l’arbre décision-hasard figure le coûttotal engendré. La souscription à un contrat coûte 1, alors que faire face à un sinistrenon couvert coûte 2 (contre 0 si l’on est assuré). Le lecteur vérifiera sans peine quede telles paramètres conduisent à associer la valeurmin{6/5, 1} = 1 au sommetd2,5/2 au sommetd3, 2 au sommetd4 et 3/2 au sommetd5. Par conséquent, l’étiquettedu sommeth1 vaut1 × 2/5 + 5/2 × 3/5 = 19/10, et l’étiquette du sommeth2 vaut17/10. La politique optimale consiste donc à souscrire au contrat la première année, età ne souscrire au contrat la deuxième année que si l’on n’a passubi de sinistre lors dela première année.

Page 26: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

26 Optimisation Combinatoire

d1

h1

0

d2

0

h30

b00

b21

h41b10

b11

d3

1h50

b20

b41

h61b30

b31

h2

1d4

0

h70

b10

b31

h81b20

b21

d5

1h90

b10

b31

h11b20

b21Figure 1.8. Arbre décision-hasard pour le problème des contrats d’assurance.

1.7.3. Programmation dynamique généralisée

On s’intéresse ici à une problématique similaire à celle évoquée dans un articlede [SNI 81], concernant la procédure de [KAO 78] pour un problème de voyageurde commerce avec des coûts stochastiques. Nous étudions dans cette optique un pro-blème de plus court chemin stochastique où une probabilité de retard est associée àchaque arc. Considérons le graphe de la figure 1.9. On part du sommets à 12H00 eton suppose qu’on prend des bus en chaque sommet du graphe, afinde se rendre ausommett où l’on a un train à prendre qui part à 16H00. En chaque sommet du grapheet à chaque heure pile part un bus pour se rendre au sommet suivant en un temps deparcours normalement inférieur à une heure. Néanmoins, lesaléas du trafic peuventallonger le temps de parcours au-delà de l’heure, et sont modélisés par une probabilité

Page 27: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 27

1

s 3 t

2

0.9

0.6

0.9

0.1

0.6

Figure 1.9. Une instance de plus court chemin stochastique.

d’occurrence de cet événement. On recherche le chemin le plus adéquat pour arriver àdestination avant 16H00. Remarquons que cet horaire est respecté si et seulement si unbus au plus est en retard. SoitR(P ) la variable aléatoire représentant le nombre de busen retard sur le cheminP . On cherche donc à maximiser la probabilitéP (R(P ) ≤ 1).Au sommett, on aP (R(s, 1, 3, t) ≤ 1) < P (R(s, 2, 3, t) ≤ 1). En effet, en addition-nant la probabilité que tous les bus soient à l’heure, avec les probabilités qu’un seulbus soit en retard, on obtient :

P (R(s, 1, 3, t) ≤ 1) = 0.009 + 0.9 × 0.09 + 0.1 × 0.01 + 0.9 × 0.09= 0.172

P (R(s, 2, 3, t) ≤ 1) = 0.016 + 0.6 × 0.04 + 0.6 × 0.04 + 0.9 × 0.16= 0.208

et donc la solution optimale est le chemin(s, 2, 3, t). Malheureusement, si l’on prendcomme valeur du cheminP la probabilitéP (R(P ) ≤ 1), l’application de la méthodede programmation dynamique conduit à une erreur car le critère n’est pas monotone.En effet, au sommet 3 on a :

{

P (R(s, 1, 3) ≤ 1) = 1 − 0.09 = 0.91P (R(s, 2, 3) ≤ 1) = 1 − 0.36 = 0.64

En conséquence, le chemin(s, 2, 3) serait coupé lors de l’exécution de la méthode.

La programmation dynamique généralisée a été développée par [CAR 89, CAR 90]pour faire face à ce type de situation. Elle est basée sur un principe faible d’optimalitéqui s’énonce comme suit :

Une politique optimale est composée de sous-politiques susceptibles de fairepartie d’une politique optimale.

Plus précisément, il s’agit d’adapter le principe d’optimalité au cas où la fonc-tion de valuation des politiques n’est pas monotone, en élimininant les politiques par-tielles dont on sait qu’il n’est pas possible de les compléter en une politique optimale.

Page 28: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

28 Optimisation Combinatoire

Pour cela, nous utilisons pour chaque états le préordre partiel4s tel que pour tout(δ1, δ2) ∈ ∆(s0, s)

2 :

δ1 4s δ2 ⇔ ∃δ′ ∈ ∆(s, sn) : ∀δ ∈ ∆(s, sn), v(δ1, δ′) ≤ v(δ2, δ)

La méthode de la programmation dynamique généralisée consiste alors à ne retenir,pour chaque états, que les politiquesδ ∈ ∆(s0, s) pour lesquelles il n’existe pas depolitiqueδ′ réalisable des0 às telle queδ′ ≺s δ. En procédant ainsi, nous aboutissonspour la dernière période à un ensemble de politiques réalisables des0 à sn contenanttoutes les politiques optimales.

Dans la pratique, il peut être difficile de construire dans son intégralité le préordre4s ; il est néanmoins souvent possible de déterminer une condition suffisante pourqueδ ≺s δ′. Cela permet d’effectuer des coupes et de gagner ainsi sensiblement enefficacité par rapport à une méthode exhaustive.

Dans l’exemple du plus court chemin stochastique, une telleapproche consisteraità remarquer qu’un chemin partielP1 ne peut conduire à un chemin optimal dès lorsqu’il est strictement dominé par un autre cheminP2 au même sommet, au sens de ladominance stochastique4S définie comme suit :

P2 4S P1 ⇐⇒ ∀k ∈ {0, 1, 2, 3}, P (R(P2) ≤ k) ≥ P (R(P1) ≤ k)

Dès lors, un chemin n’est coupé par l’algorithme que s’il remplit cette condition.Sur le graphe de la figure 1.9, le chemin(s, 2, 3) n’est pas coupé au sommet 3 carP (R(s, 2, 3) ≤ 0) > P (R(s, 1, 3) ≤ 0).

En évaluant des politiques partielles vis-à-vis de leur impact sur le problème glo-bal, les errements potentiels liés à la vision locale de la programmation dynamiquetraditionnelle sont évités. Ainsi, l’exactitude de la procédure de résolution est assurée.

1.8. Conclusion

Dans ce chapitre, nous avons présenté un cadre formel pour laprogrammationdynamique, méthode d’énumération implicite des solutionscouramment utilisée enoptimisation combinatoire. Cette approche présente l’intérêt de pouvoir s’appliquerà une large variété de problèmes, dont l’aspect séquentiel n’est pas forcément im-médiat. Deux procédures de résolution sont mises en avant dans la littérature, uneprocédure avant et une procédure arrière, pour lesquelles nous avons donné des condi-tions suffisantes de validité (monotonie à droite, monotonie à gauche, monotonie).Nous avons ensuite illustré ces procédures sur des exemplestypiques en program-mation dynamique (gestion de stocks, plus court chemin, sacà dos). Enfin, quelquesextensions classiques de notre cadre d’étude (fonction de valuation multicritère ounon-monotone, décision dans l’incertain) ont été étudiéesdans une dernière partie.

Page 29: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Programmation dynamique 29

1.9. Bibliographie

[BEL 54] BELLMAN R., « Some applications of the Theory of dynamic programming - a re-view », Journal of the Operational Research Society of America, vol. 2, n°3, p. 275-288,1954.

[BEL 57] BELLMAN R.,Dynamic programming, Princeton University Press, 1957.

[BEL 84] BELLMAN R., Eye of the Hurricane, World Scientific Publishing Company, Singa-pour, 1984.

[CAR 89] CARRAWAY R., MORIN T., , MOSKOWITZ H., « Generalized dynamic program-ming for stochastic combinatorial optimization »,Operations Research, vol. 37, n°5, p. 819-829, 1989.

[CAR 90] CARRAWAY R., MORIN T., MOSKOWITZ H., « Generalized dynamic programmingfor multicriteria optimization »,European Journal of Operational Research, vol. 44, p. 95-104, 1990.

[DRE 77] DREYFUS S., LAW A., The art and theory of dynamic programming, Academicpress, 1977.

[DRE 02] DREYFUS S., « Richard Bellman on the birth of dynamic programming »,Opera-tions Research, vol. 50, n°1, p. 48-51, 2002.

[KAO 78] K AO E., « A preference order dynamic program for a stochastic traveling salesmanproblem »,Operations Research, vol. 26, n°6, p. 1033-1045, 1978.

[KAR 67] K ARP R., HELD M., « Finite-state processes and dynamic programming »,SIAMJournal on Applied Mathematics, vol. 15, n°3, p. 693-718, 1967.

[LAU 79] L AURIÈRE J.,Éléments de programmation dynamique, Gauthier-Villars, 1979.

[MIN 83] M INOUX M., Programmation Mathématique, théorie et algorithmes, vol. 2 deCol-lection Technique et Scientifique des Télécommunications, Bordas, 1983.

[MIT 64] M ITTEN L., « Composition principles for synthesis of optimal multistage pro-cesses »,Operations Research, vol. 12, n°4, p. 610-619, 1964.

[MIT 74] M ITTEN L., « Preference order dynamic programming »,Management Science,vol. 21, n°1, p. 43-46, 1974.

[MOR 82] MORIN T., « Monotonicity and the principle of optimality »,Journal of Mathema-tical Analysis and Applications, vol. 86, p. 665-674, 1982.

[SNI 81] SNIEDOVICH M., « Analysis of a preference order traveling salesman problem »,Operations Research, vol. 29, n°6, p. 1234-1237, 1981.

[TRZ 94] TRZASKALIK T., « Multiple criteria discrete dynamic programming »,MathematicsToday, vol. XII-A, p. 173-199, 1994.

Page 30: Programmation dynamique - IAspanjaard/articles/beosdp.pdf · 2004-09-14 · Chapitre 1 Programmation dynamique 1.1. Introduction La programmation dynamique est une méthode d’optimisation

Chapitre 2

Index

plus court cheminbottleneck, 10stochastique, 26

programmation dynamique, 1généralisée, 26

espace d’états, 5gestion de stocks, 9monotonie, 8

à droite, 8à gauche, 8

optimisation multicritère, 21politique

optimale, 8réalisable, 7

principe d’optimalité, 16procédure

arrière, 15avant, 14

processus décision-hasard, 24sac à dos, 12

31