next up previous contents
suivant: À propos de ce monter: Programmation Dynamique précédent: Programmation Dynamique   Table des matières

Un problème de gestion de stock

Exercice 4.1   Un homme d'affaire dispose d'un hangar de $ 2$ places pour ranger des containers. Dans chaque place il ne peut ranger qu'un seul container. Cet homme peut scrupuleux c'est arrangé pour connaître le prix sur le marché de ces containers pour les $ 5$ jours à venir. Il sait alors que $ p_{1}=5, p_{2}=10, p_{3}=18, p_{4}=11, p_{5}=13$. Chaque jour il ne peut faire que les mouvements suivants sur son stock : On note $ x_{t}$ ( $ t=1,\ldots,5$) l'état du stock à l'instant $ t$, c'est-à-dire le nombre ($ 0,1$ ou $ 2$) de containers dans le hangar, et $ u_t$ la décision de l'homme d'affaire. Interpréter les formules suivantes :

$\displaystyle x_{t+1}=x_{t}+u_{t}
$

et :

$\displaystyle V_{t}(x)=\max_{u=0,1,-1}\left\{-p_{t}u+V_{t+1}(x+u)\right\},\quad V_{5}=13x.
$

  1. Quel profit peut-il espérer réaliser en partant d'un stock vide ?, en suivant qu'elle stratégie (c'est-à-dire qu'elle suite $ u_1,u_2,u_3,u_4,u_5$ de décisions devra t'il prendre) ?
  2. Discuter de la mise en \oeuvre informatique d'un programme permettant de calculer une stratégie optimale en fonction des prix du marché.

Le programme permettant de mettre en \oeuvre la dynamique rétrograde est le suivant :

function [V,control]=progdyn(prix)
  // Programmation dynamique pour un problème de gestion de stock
  time=size(prix,'*')
  etat=3 //(0,1,2)
  V=zeros(etat,time);
  control=V;
  for i=1:etat
    V(i,time)=prix(time)*(i-1); //cout a l'etat final
  end
  for t=time-1:-1:1
    for i=1:etat
      arg=[];
      decision=[];
      for u=-1:1
        if ((i-1+u)==0 | (i-1+u)==1 | (i-1+u)==2) then
          decision=[decision u]
          arg=[arg -prix(t)*u+V(i+u,t+1)]
        end
      end
      [val1,val2]=gsort(arg,'c','d')
      V(i,t)=val1(1);
      control(i,t)=decision(val2(1));
    end
  end
endfunction


\begin{sessioncmd}
% latex2html id marker 627\par prix=[5 10 18 11 13] \slefta...
... 2. 2. 0. !
! 28. 23. 20. 15. 13. !
! 33. 33. 33. 26. 26. !
\par\end{sessioncmd}


next up previous contents
suivant: À propos de ce monter: Programmation Dynamique précédent: Programmation Dynamique   Table des matières
barty 2004-04-29