• Aucun résultat trouvé

Le problème à deux étapes défini s’écrit également : min x∈X{E[c Tx + min y∈Y{q Ty : W y ≤ h − T x}]} ⇔ min x∈X{E[φ(x, ξ)}]}

Par cette écriture, nous nous rendons compte que le problème à deux étapes peut se ramener à un problème statique. Si le problème est convexe (donc si φ est convexe en x), les méthodes générales d’optimisation convexe peuvent s’appliquer. De même, les approches par scénarios présentées dans cette section s’étendent au cas statique.

2.3

Les problèmes à plusieurs étapes

Dans cette section, nous généralisons à T étapes le problème à deux étapes. Les décisions sont donc prises en T fois, à partir de l’information disponible en chaque t = 1, . . . , T . Ce problème s’écrit sous sa forme générale :

min x1∈G1 F1(x1) + E  inf x2∈G2(x1,ξ2) F2(x2, ξ2) + E  · · · + E  inf xT∈GT(xT −1,ξT) FT(xT, ξT)  , (2.6)

où les xt ∈ Rnt sont les variables de décision, Ft: Rnt × Rdt → R sont des fonctions continues

et Gt, t = 2, . . . , T sont les ensembles de faisabilité fermés de chaque étape t. F1 et G1 sont

déterministes.

Dans le cas multidimensionnel, chaque décision est prise après la réalisation de l’aléa. Chaque dé- cision est donc prise en connaissance de l’histoire du processus mais également en toute ignorance de son futur. Ce principe est le principe de non-anticipativité. Nous introduirons pour la suite la filtration ξ, représentant l’histoire du processus, à l’aide de la notation ξ[t]:= (ξ1, . . . , ξt).

Contrairement au problème à deux étapes, la difficulté principale provient du fait que nous ne pouvons plus nous ramener à un problème statique. Les problèmes de minimisation imbriqués empêchent en effet d’avoir une fonction ne dépendant uniquement que des variables de première étape.

Nous pouvons retrouver les résultats sur ces problèmes à plusieurs étapes notamment dans [101, 92].

2.3.1 La programmation stochastique sur arbre

Une approche standard pour résoudre les problèmes stochastiques à plusieurs étapes est la pro- grammation stochastique basée sur une discrétisation de l’aléa sous une forme d’arbre (Fig. 6.2) : le problème original est résolu en espérance sur une distribution discrète et connue de l’aléa. Les difficultés de cette approche peuvent être résumées en deux questions : comment construire

2.3. LES PROBLÈMES À PLUSIEURS ÉTAPES

l’arbre et comment optimiser dessus ?

Un premier point sur cette approche est que la distribution de probabilité est fixée. Cela signifie que les décisions ne peuvent pas influer sur la distribution de l’aléa ce qui est une certaine limitation (par exemple, décider de lancer une campagne publicitaire peut influencer fortement la demande). C’est pourquoi l’arbre sur lequel nous optimisons est construit à l’instant initial et n’est plus modifié.

La construction s’effectue comme suit : à t = 1, l’aléa ne prend qu’une unique valeur ξ1. A

t = 2, chaque réalisation ξi2 est représentée par un nœud i. A t = 3, nous relions ξ2i à toutes les réalisations de ξ3 qui peuvent se réaliser à la suite de ξ2i. Formellement, nous relions le nœud ξti

t à ses nœuds fils ξt+1ij par un arc, correspondant à une probabilité de réalisation pij > 0 avec

P

jpij = 1. Généralement, de tels arbres sont construits à partir de scénarios et nous utilisons

des techniques d’agrégation [76, 48] : à chaque instant, nous agrégeons en un unique nœud tous les scénarios proches au sens d’une certaine distance à définir. Si l’arbre d’aléas représente la réalité et est construit sur la base d’un nombre raisonnable de scénarios, la complexité numé- rique de résolution de ce problème est certes élevée mais pas plus difficile qu’un problème à deux étapes avec le même nombre de scénarios. Par contre, si le nombre de scénarios est très élevé, les problèmes à deux ou plusieurs étapes ne peuvent être résolus. Cependant, nous avons pu voir que certaines classes de problèmes à deux étapes pouvaient être résolus à l’aide de techniques d’échantillonnage Monte Carlo. Ces approches SAA peuvent également être appliquées pour les problèmes à plusieurs étapes : nous générons N1 réalisations de ξ2 qui représentent les nœuds de probabilités respectives 1/N1. Puis nous générons N2 scénarios pour t = 3 en prenant en compte

les distributions conditionnelles de ξ3 sachant la réalisation ξ2i. De la sorte, nous construisons

un arbre en générant N = QT −1

t=1 Nt scénarios. Cette approche de construction des arbres est

un échantillonnage conditionnel. Des études sur la stabilité de ces approches ont été effectuées [85, 36, 86, 87]. Le nombre de scénarios grandit donc exponentiellement avec le nombre de pé- riodes de temps.

Une fois l’arbre construit, nous pouvons formuler l’équivalent déterministe en attribuant une commande à chaque nœud de l’arbre, c’est à dire une commande à chaque réalisation de l’aléa. Si le problème stochastique original est linéaire, l’équivalent déterministe obtenu sera toujours un problème d’optimisation linéaire mais d’une taille bien plus importante. Dans [98, 96, 99, 97], les auteurs avancent que “les problèmes à plusieurs étapes, même linéaires, avec des recours complets sont généralement numériquement intraitables même pour une précision faible”. Ce constat n’em- pêche pas que “certains problèmes puissent être résolus efficacement”. Dyer et Stougie avancent pour leur part que “la programmation stochastique multi-étapes est au moins aussi complexe que les problèmes combinatoires difficiles”. Pour remédier à cela, il existe des techniques de réduc- tion d’arbre [47, 32] qui permettent de réduire la taille de l’arbre tout en gardant l’information principale. Utiliser la programmation stochastique consiste donc à faire un arbitrage entre les temps de calculs et la précision de la solution.

Cette approche est très répandue et est particulièrement développée dans l’industrie électrique [46, 44, 71, 45, 41, 29, 38, 23, 42, 102, 72, 21].

2.3. LES PROBLÈMES À PLUSIEURS ÉTAPES

Fig. 2.1 – Représentation de l’aléa par un arbre

2.3.2 La programmation dynamique et ses extensions

Une autre façon de résoudre ce problème est la programmation dynamique introduite par Bell- man [6, 7, 8]. Pour cela, considérons le problème de dernière étape

min

xT∈GT(xT −1,ξT)

FT(xT, ξT).

La valeur optimale de ce problème, notée VT(xT −1, ξT), dépend du vecteur de décision xT −1 et

des données ξT . En introduisant l’histoire ξ[t] du processus ξ, nous pouvons écrire le problème général pour les pas de temps t = 2 à T − 1 :

min

xt

Ft(xt, ξt) + E[Vt+1(xt, ξ[t+1]) | ξ[t]]

s.t. xt∈ Gt(xt−1, ξt),

où E[.|ξ[t]] est l’espérance conditionnelle à l’histoire de ξ. La valeur optimale de chacun de ces

problèmes, notée Vt(xt−1, ξ[t]) dépend de la décision prise en t − 1 et de toutes les réalisations

passées ξ[t]. L’idée de la programmation dynamique est de calculer récursivement ces fonctions valeurs Vt(xt−1, ξ[t]) en partant de T jusqu’à t = 1. C’est la phase rétrograde de le programmation

2.3. LES PROBLÈMES À PLUSIEURS ÉTAPES

Cependant, nous pouvons distinguer deux difficultés majeures dans cette formulation de la pro- grammation dynamique :

– Calculer les fonctions Vt peut être vraiment difficile voire impossible à cause de l’espérance

conditionnelle. Une façon de simplifier ce problème est de considérer que le processus aléatoire est Markovien. La fonction valeur n’est donc plus fonction de ξ[t] mais uniquement de ξt. La

fonction valeur en t s’écrit ainsi Vt(xt−1, ξt) et est désormais plus aisée à calculer ;

– Pour calculer la fonction valeur en chaque date t, la fonction valeur doit être parfaitement connue pour toutes les valeurs possibles de l’espace d’état sous-jacent. Sauf à avoir une formule analytique explicite pour les fonctions valeur, cela n’est pas réalisable. En programmation dy- namique classique, la méthodologie consiste à discrétiser l’espace des états. La fonction valeur est ainsi calculée en chaque point de ce maillage grâce à la dynamique. L’approximation de la fonction de recours est ensuite obtenue en interpolant l’ensemble de ces valeurs sur un pas de temps donné. Si nous considérons n états discrétisés chacun en d points, nous devons calculer dntransitions entre chaque point du maillage pour chaque pas de temps. Avec une description un minimum fine de l’état et sur une période de temps importante, nous atteignons assez ra- pidement des temps de calculs inconsidérables. La conséquence est que ce calcul peut devenir irréaliste si le nombre d’états est trop important. C’est la “malédiction de la dimension”.

Il existe une grande littérature sur le programmation dynamique. Nous citerons notamment les travaux de Bertsekas et al. [13, 15], Denardo [28], Hinderer [52], Nemhauser [65], Puterman [84], Ross [89] ou Sennott [95].

Pour palier aux problèmes de dimension et souvent au détriment de l’optimalité, un grand nombre d’approximations ont été mises en place. Nous pouvons citer de façon totalement ex- haustive : des approches basées sur la discrétisation des états [108, 12, 59], des approches utilisant des problèmes de petite taille et des espaces d’état finis pour résoudre des problèmes où l’espace d’états est infini [37, 94, 30, 107], des approches d’aggrégation d’états [5, 14, 25, 63], ...

Un autre type d’approximation est l’approximation des fonctions valeur. C’est le principe de base de la programmation dynamique duale. Cet algorithme est très utilisé en gestion de la production et en particulier pour la gestion hydraulique [18, 40, 62, 74, 75, 90].

Elle contourne le problème de la dimension lié à la discrétisation de l’espace des états en ex- ploitant la structure de la fonction valeur. En effet, nous pouvons montrer que sous certaines hypothèses (par exemple, la linéarité), la fonction valeur est convexe. Elle peut donc être repré- sentée comme supportée par un nombre fini d’hyperplans. La programmation dynamique duale exploite ce résultat afin de construire itérativement des hyperplans de support pour représenter de mieux en mieux la fonction valeur. Par conséquent, il n’y a plus de discrétisation préalable de l’espace des états et la malédiction de la dimension peut être contournée.

Chaque itération de l’algorithme comporte, à l’image de la programmation dynamique, deux phases : une phase rétrograde d’optimisation qui permet d’améliorer l’approximation des fonc- tions valeur en rajoutant des hyperplans et une phase de simulation qui permet d’obtenir une borne supérieure sur le coût. Les problèmes résolus à chaque itération sont des problèmes de petite taille, simples à résoudre.