Problèmes de lot-sizing à deux niveaux avec capacité de stockage limitée Siao-Leu Phouratsamay, Safia Kedad-Sidhoum, Fanny Pascual Sorbonne Universités, UPMC Univ Paris 06, CNRS, LIP6 UMR 7606, 4 place Jussieu 75005 Paris {siao-leu.phouratsamay, safia.kedad-sidhoum, fanny.pascual}@lip6.fr Mots-clés : Lot-sizing, programmation dynamique, analyse de complexité. 1 Introduction Nous nous intéressons à l’étude des problèmes de lot-sizing à deux niveaux (2ULS 1 ) avec une capacité de stockage limitée. Ce problème apparaît dans une chaîne logistique à deux acteurs : un fournisseur et un distributeur. Le distributeur doit satisfaire une demande pour un unique produit sur un horizon de temps discret de T périodes. Afin de satisfaire cette demande, il détermine un plan d’approvisionnement auprès du fournisseur, i.e. il détermine à quelle période produire et en quelle quantité produire. Le fournisseur détermine de son côté un plan de production dans le but de satisfaire le plan d’approvisionnement du distributeur. À une période t, chaque unité produite par le distributeur (resp. fournisseur) induit un coût unitaire F de production pD t (resp. pt ). La production d’une unité par le distributeur (resp. fournisseur) à une période t induit un coût fixe de lancement ftD (resp. ftF ). Le stockage d’une unité de la période t à la période t + 1 par le distributeur (resp. fournisseur) induit un coût de stockage F hD t (resp. ht ). Le coût total pour chaque acteur est donné par le coût fixe de production, le coût unitaire de production et le coût de stockage. Le problème 2ULS consiste à déterminer un plan d’approvisionnement et un plan de production de manière à satisfaire la demande en miminimant le coût de la chaîne logistique, i.e. le coût total des deux acteurs de la chaîne logistique. En pratique, la capacité de stockage du fournisseur et du distributeur peut être limitée. Par exemple, certaines industries telles que les industries pharmaceutiques nécessitent des sites de stockage avec des besoins complexes comme un contrôle de température ou des normes de sécurité. Ces contraintes industrielles peuvent induire une capacité de stockage limitée [2]. Le problème de lot-sizing à un niveau avec capacité de stockage (ULS-IB 2 ) a été étudié par de nombreux auteurs [1, 2, 3, 7, 5]. Le problème ULS-IB a été introduit par Love [5], qui a proposé un algorithme de résolution en O(T 3 ). Par la suite, Atamtürk et al. [2] ont proposé un algorithme de meilleure complexité en O(T 2 ) pour résoudre ce problème. Jaruphongsa et al. [4] ont étudié le problème 2ULS avec une capacité de stockage limitée au niveau du fournisseur et des fenêtres de temps. Ils proposent un algorithme de programmation dynamique en O(T 3 ) pour résoudre ce problème en considérant des coûts spécifiques. Dans notre étude, nous nous intéressons à la résolution des problèmes 2ULS où la capacité de stockage est limitée au niveau du fournisseur, au niveau du distributeur ou aux deux niveaux de la chaîne logistique. Dans la section 2, nous proposons de résoudre le problème 2ULS avec une capacité de stockage limitée au niveau du distributeur par un algorithme en O(T 4 ). Dans la section 3, nous montrons que le problème 2ULS avec une capacité de stockage limitée au niveau du fournisseur est au contraire NP-difficile. 1. Two-level Uncapacitated Lot-Sizing problem 2. Uncapacitated Lot-Sizing problem with Inventory Bounds Formulation mathématique du problème 2ULS F Nous noterons xD t (resp. xt ) la quantité d’unités produite à la période t par le distributeur D (resp. fournisseur), st (resp. sFt ) le niveau de stock du distributeur (resp. fournisseur) à la fin de la période t et ytD (resp. ytF ) la variable binaire associée au lancement d’une production à la période t par le distributeur (resp. fournisseur). Cette dernière vaut 1 s’il y a un lancement à la période t au niveau du distributeur (resp. fournisseur) et 0 sinon. La formulation mathématique du problème 2ULS est donnée par : min X T X (fti yti + pit xit + hit sit ) i∈{D,F } t=1 F s.t. sFt−1 + xFt = xD t + st ∀t ∈ {1, . . . , T }, sD t−1 D + xD ∀t ∈ {1, . . . , T }, t = dt + s t T X xit ≤ yti dk ∀i ∈ {D, F }, ∀t ∈ {1, . . . , T } k=t xF , xD ∈ RT+ , sF , sD ∈ RT++1 , y F , y D ∈ {0, 1}T (1) (2) (3) Le problème 2ULS peut être résolu à partir d’un algorithme de programmation dynamique en O(T 2 logT ) [6]. Pour ce problème, il existe toujours une solution optimale vérifiant la propriété ZIO (Zero Inventory Ordering) définie par : pour tout t ∈ {1, . . . , T }, pour tout i ∈ {D, F }, sit−1 xit = 0. En d’autres termes, à chaque période t, le fournisseur et le distributeur ne produisent que lorsque le niveau de stock est à zéro. Dans le cas où la capacité de stockage est limitée, la quantité d’unités stockée par le distributeur (resp. fournisseur) à une période t ne doit pas dépasser la capacité de stockage uD t (resp. uFt ). La propriété ZIO n’est alors plus valide, comme le montre cette instance : T = 2, uD = [B, B], pF = hF = f D = hD = [0, 0], f F = [0, 1], pD = [0, 1], d = [0, B + 1]. La meilleure solution vérifiant la propriété ZIO est xF = [d2 , 0] et xD = [0, d2 ]. Le coût de cette solution est B + 1 alors que la solution optimale qui ne vérifie pas la propriété ZIO est donnée par xF = [B + 1, 0] et xD = [B, 1] de coût égal à 1. 2 Capacité de stockage au niveau du distributeur Dans cette section, nous étudions le problème 2ULS où le distributeur a une capacité de stockage limitée uD . Ce problème sera noté 2ULS-IBD . Nous montrons que ce problème peut être résolu en temps polynomial par un algorithme de programmation dynamique en O(T 4 ). La propriété ZIO est valide au niveau du fournisseur mais ne l’est plus au niveau du distributeur. Il est possible de caractériser une solution optimale pour le problème 2ULS-IBD en utilisant une décomposition par blocs [2, 5]. D Définition 1 Soit i, j deux périodes telles que 1 ≤ i ≤ j ≤ T , α ∈ {0, uD i−1 } et β ∈ {0, uj }. D D D Les périodes i et j définissent un bloc, noté [i, j]αβ , si sD t−1 = α, uj = β et 0 < st < ut pour tout t ∈ {i, . . . , j − 1}. En d’autres termes, le niveau de stock entrant et sortant d’un bloc [i, j]αβ est soit nul soit saturé (égal à la capacité de stockage). Les niveaux de stock entre les périodes i et j − 1 sont strictement positifs mais ne saturent pas la capacité. Les deux propositions suivantes ont permis de proposer un algorithme polynomial pour résoudre le problème 2ULS-IBD . Proposition 1 Il y a au plus une période de production dans un bloc [i, j]αβ . Proposition 2 Il existe une solution optimale du problème 2ULS-IBD où : i) la propriété ZIO est observée pour tout t au niveau du fournisseur. ii) le plan d’approvisionnement xD est décomposé en une succession de blocs. L’idée de l’algorithme consiste à déterminer la manière optimale de décomposer le plan d’approvisionnement en une succession de blocs afin de satisfaire la demande. Il faut également déterminer la période d’approvisionnement optimale dans chaque bloc. De plus, la propriété ZIO au niveau du fournisseur implique qu’une période de production peut permettre de satisfaire plusieurs périodes d’approvisionnement. Il faut alors déterminer à quelle période le fournisseur doit produire et combien de périodes d’approvisionnement seront couvertes par cette production. L’algorithme proposé est de complexité O(T 4 ). 3 Capacité de stockage au niveau du fournisseur Nous étudions dans cette section le problème 2ULS où le fournisseur a une capacité de stockage limitée uF . Ce problème sera noté 2ULS-IBF . Théorème 1 Le problème 2ULS-IBF est NP-difficile. Preuve : Montrons que le problème 2ULS-IBF est NP-difficile par une réduction du problème subsetsum. Le problème subset-sum est le suivant : étant donné un entier P S et un ensemble S de n entiers (a1 , . . . , an ), existe-t-il un sous-ensemble I ⊆ S tel que ai ∈I ai = S ? Nous transformons une instance de subset-sum en une instance du problème 2ULS-IBF de la manière suivante : - T = 2n + 1. Nous noterons T1 (resp. T2 ) l’ensemble des périodes impaires (resp. paires) dans {1, . . . , 2n}, - ftF = 1 pour tout t ∈ T1 et ftF = 2S pour tout t ∈ T2 ∪ {T }, - ftD = 2S pour tout t ∈ T1 ∪ {T } et ftD = 0 pour tout t ∈ T2 , - pFt = (ad t e − 1)/ad t e pour tout t ∈ T1 ∪ T2 ∪ {T }, 2 2 F D - pD t = ht = ht = 0 pour tout t ∈ T1 ∪ T2 ∪ {T }, - uFt = ad t e pour tout t ∈ T1 ∪ T2 , uFT = 0. 2 Nous montrons alors pour cette instance qu’il existe une solution au problème 2ULS-IBF de coût au plus S si et seulement si il existe une solution au problème subset-sum. Supposons qu’il existe une solution SI à une instance I du problème de subset sum, et montrons qu’il existe une solution de coût au plus S à l’instance correspondante de notre problème. Cette solution est la suivante : si ai ∈ SI , alors le fournisseur produit à la période t = 2i − 1 une quantité ai d’unités. Ceci lui coûte ftF + pFt × ai = 1 + ((ai − 1)/ai ) × ai = ai . Le fournisseur stocke alors à un coût nul la quantité d’unités produite pendant une période (ce qui est possible car égale à la limite de capacité entre t et t + 1). Ensuite toutes les unités sont envoyées au distributeur à un coût nul, et sont stockées à un coût nul chez le distributeur. P Cette solution est donc de coût ai ∈SI ai = S. De la même façon, nous montrons que s’il existe une solution de coût au plus S, alors il existe une solution au problème subset-sum (notons que s’il existe une solution de coût au plus S alors les unités sont nécessairement produites par le fournisseur aux périodes impaires, et ensuite stockées pendant une période chez le fournisseur). La figure 1 représente l’instance de notre problème correspondant à une instance de subset-sum avec n = 3 pour laquelle la réponse est oui (a1 + a3 = S : pour notre problème les productions, de quantités a1 et a3 , ont lieu aux périodes 1 et 5 chez le fournisseur). Comme le problème 2ULS-IBF est NP-difficile, le problème 2ULS où la capacité de stockage est limitée chez le fournisseur et le distributeur est également NP-difficile. Nous avons mis en place un algorithme de programmation dynamique pseudo-polynomial pour le résoudre. Dans le cas où la capacité de stockage est présente à chaque niveau, la propriété ZIO n’est valide à aucun niveau. L’idée de l’algorithme consiste à évaluer à chaque période t tous les niveaux de stock F possibles du fournisseur et du distributeur limités par uD t et ut respectivement. La complexité PT PT D F PT D F de l’algorithme mis en place est en O( t=1 ut ut k=t Mk Mtk ) où MkD = min(uD i=k di ) k , P F et Mtk = min(uFt , Ti=k+1 di ). 1 fF a1 Fournisseur 1 0 Distributeur 1 fD 0 2S 1 2S a1 0 0 0 2 a1 2 0 a1 0 0 3 0 3 0 2S 1 2S 0 a1 0 0 4 0 4 0 a1 0 a3 5 0 5 0 2S 2S a3 a1 0 2S 0 6 a3 6 0 S 0 0 7 0 7 Production Stockage S 2S FIG. 1 – Illustration d’une solution du problème 2ULS-IBF dans la preuve du théorème 1 où n = 3, S = {a1 , a2 , a3 } et a1 + a3 = S 4 Conclusion Nous avons étudié différents problèmes de lot-sizing à deux niveaux avec capacité de stockage limitée. Lorsque la contrainte de stockage concerne le distributeur, en nous appuyant sur une caractérisation des solutions optimales, nous avons proposé un algorithme de programmation dynamique en O(T 4 ) résolvant ce problème. Quand la contrainte de stockage concerne le fournisseur, nous avons montré que le problème est NP-difficile. Nous avons également proposé un algorithme pseudo-polynomial lorsque les deux acteurs ont une capacité de stockage limitée. Il serait intéressant d’étudier le cas où la capacité de stockage au niveau du fournisseur est constante. Par ailleurs, dans le cas où le fournisseur et le distributeur font partie d’une même entreprise, il est possible que les acteurs partagent le même site de stockage. Nous pouvons alors considérer une capacité de stockage limitée qui soit partagée, i.e. qu’à chaque période, le niveau de stock du distributeur et celui du fournisseur ne doivent pas dépasser cette capacité de stockage partagée. La complexité de ce problème n’a pas encore été étudiée. Nous avons considéré des problèmes 2ULS comprenant un unique produit et un distributeur. Il serait également intéressant d’étudier des problèmes 2ULS avec capacité de stockage limitée comprenant plusieurs produits, plusieurs distributeurs ou plusieurs fournisseurs. Remerciements Ce travail a été soutenu par le projet FUI RCSM "Risk, Credit Chain & Supply Chain Management" financé par la région Ile-de-France. Références [1] Alper Atamtürk and Simge Küçükyavuz. Lot sizing with inventory bounds and fixed costs : Polyhedral study and computation. Operations Research, 53(4) :711–730, 2005. [2] Alper Atamtürk and Simge Küçükyavuz. An o(n2 ) algorithm for lot sizing with inventory bounds and fixed costs. Oper. Res. Lett., 36(3) :297–299, May 2008. [3] Hark-Chin Hwang and Wilco van den Heuvel. Improved algorithms for a lot-sizing problem with inventory bounds and backlogging. Naval Research Logistics (NRL), 59(3-4) :244–253, 2012. [4] Wikrom Jaruphongsa, Sila Çetinkaya, and Chung-Yee Lee. Warehouse space capacity and delivery time window considerations in dynamic lot-sizing for a simple supply chain. International Journal of Production Economics, 92(2) :169 – 180, 2004. [5] Stephen F. Love. Bounded production and inventory models with piecewise concave costs. Management Science, 20(3) :313–318, 1973. [6] Rafael A. Melo and Laurence A. Wolsey. Uncapacitated two-level lot-sizing. Oper. Res. Lett., 38(4) :241–245, July 2010. [7] Eugeniusz Toczyłowski. An o(t2 ) algorithm for the lot-sizing problem with limited inventory levels. In Emerging Technologies and Factory Automation, 1995. ETFA ’95, Proceedings., 1995 INRIA/IEEE Symposium on, volume 3, pages 77–85 vol.3, Oct 1995.