Tools for Supply Chain Management, Demand and Supply Planning

Perform flexible and quick calculations for Demand and Supply Planning, such as projected inventories and coverages, as well as replenishment plan. For any time bucket, daily, weekly or monthly, and any granularity level, product or group of products.


CRAN Status CRAN Downloads CRAN download

planr

About

The R package planr is for Supply Chain Management.
The goal is to provide some functions to perform quickly some classic operations in the scope of Demand and Supply Planning or to run the S&OP (Sales & Operations Planning) process.

There are currently 7 groups of functions :

  • Calculation of projected inventories & coverages :

    • simple calculation : light_proj_inv()

    • calculation & analysis : proj_inv()

  • Calculation of projected inventories & constrained demand and allocation:

    • calculation of constrained demand : const_dmd()
    • allocation of a constrained demand : alloc_dmd()
  • Calculation of Replenishment Plan (also called DRP) : drp()

  • Breakdown of Monthly Demand into Weekly Buckets :

    • by default breakdown evenly distributed : month_to_week()
    • custom distribution : month_to_weekx()
  • Calculation of Short Shelf Life (SSL) stocks : ssl()

  • Projection of In Transit inventories : proj_git()

  • Conversions :

    • of coverages into volumes : proj_cov()

    • of projected volumes (inventories) into coverages : inv_to_cov()

Calculations are performed at monthly or weekly buckets.

To learn how to use those functions, refer to the Cheatsheets and the Get Started sections of the website R planr

In the parts Gallery and Gallery Shiny we can find some examples of visuals and shiny apps using this package.

Installation

To install the CRAN version:

#install.packages("planr")
library(planr)

To install the latest development version from GitHub:

library(devtools)
#install_github("nguyennico/planr")

library(planr)

Get started

This section introduces the different functions of the package planr through :

  • a simple demo on a few items

  • an application on a product portfolio

We will start with a few functions to calculate projected inventories and coverages.

Projected Inventories & Coverages

The 1st, basic (light) function : light_proj_inv()

  • Allows to calculate quickly the projected inventories and coverages:

    • for a SKU
    • a group of SKUs
    • at an aggregated level (a Product Family for example)
  • To use it :

Calculated Projected Inventories using light_proj_inv()

Calculation & Analysis

The 2nd function : proj_inv()

  • Allows to calculate the projected inventories and coverages

    • and also to analyze the projected values based on some parameters (targeted stocks min & Max).
  • Useful to filter the data later on and spot which SKU is below the safety stock or in an overstock situation.

    • We easily can identify when it will be in this situation
    • and how much, compared to those thresholds
  • To use it :

Calculated Projected Inventories using proj_inv()

The 3rd function : const_dmd()

  • Allows to calculate the projected inventories and coverages, as well as the Constrained Demand, which is the Demand which can be delivered, considering the actual projected inventories.

  • Useful to provide to a customer (or a receiving entity) the actual Demand which can be fulfilled, and then to calculate the impact on their side.

    • For example if an Entity 1 supplies and Entity 2 : the Constrained Demand of the Entity 1 becomes the possible Supply Plan to the Entity 2. We then can calculate the expected projected inventories of the Entity 2.

    • Another usage can be to manage some Allocations : we capture in the initial Demand the full potential of Sales, and based on the projected inventories, we get the Constrained Demand.

  • To use it : here a demo

Calculated Projected Inventories and Constrained Demand using const_dmd()

Replenishment Plan

A function to calculate a Replenishment Plan (also called DRP : Distribution Requirement Planning).

The 4th function : drp()

  • Based on some parameters (safety stocks, frequency of supply, minimum order quantity) allows to calculate a Replenishment Plan for an entity, for example at a Distributor level, and Affiliate, a Regional Distribution Center,...

  • Also useful in the scope of the S&OP (Sales & Operations Planning) process, to calculate a theoretical, unconstrained, Replenishment Plan.

  • To use it :

Calculated Projected Inventories and Replenishment Plan using drp()

Conversion Monthly to Weekly Bucket

The 5th function : month_to_week()

  • Allows to convert a Demand initially in Monthly buckets into Weekly buckets.

    • By default, it assumes that the Demand is evenly distributed for each week (i.e. 25% of the Demand for each week of the month).
  • We often generate monthly sales forecasts, and want to express this quantity into weekly bucket, to use it later on for the calculation of weekly projected inventories or a DRP for example.

  • To use it : RPubs - Transformation of Monthly Demand into Weekly Demand

The 5bis function : month_to_weekx()

  • Allows to convert a Demand initially in Monthly buckets into Weekly buckets based on a custom pattern.
  • Useful to get a more accurate :
    • projection of inventories & coverages
    • calculation of Replenishment Plan
  • To use it : month_to_weekx demo

Short Shelf Life (SSL)

The 6th function : ssl()

Allows to calculate the projected Short Shelf Life quantities from based on :

  • the details of Opening Inventories : at which Period of time will some stocks expire or won't have enough Remaining Shelf Life (RSL) for sale and will be blocked

  • the Demand Forecasts

This leads to :

  • a more precise calculation of the projected inventories and DRP

  • get a summary view of the Obsolescence risks, and take some actions

  • To use it : SSL demo

Projected In Transit

The 7th function : proj_git()

Allows to calculate the projected In Transit quantities to one Entity and a defined product.

It takes into consideration :

  • the current quantity in transit

  • the next (not shipped yet) quantity in transit

    • which could be calculated through a DRP for example
  • the Transit Time

It can be useful to :

  • monitor the total (local + in transit) projected inventories of one Entity

  • to run some simulations to optimize some DRP parameters & stocks levels

  • To use it : Projected In Transit demo

Links

R book for Demand and Supply Planning

Hey, do you want a book to learn how to master R in Supply Chain?

eBook Demand and Supply Planning using R{width="300"}

Book Summary

Do you work in Supply Chain and are you looking for a way to perform easily some data processing, run demand and supply planning calculations and share your results into an interactive web app?

If yes, then this book is for you!

It provides a comprehensive, hands-on guide to leverage the robust capabilities of the R statistical programming language to address the core demand and supply planning challenges.

From data acquisition, cleaning and transformation to advanced statistical modeling, data visualization, and automation; you will learn how to plan your demand and supply, balance your charge and capacity, model an End-to-End supply chain network, and run different scenarios.

This book guides you through practical applications of key R packages for demand forecasting, inventory management, Distribution Requirements Planning (DRP), scenarios optimization and the creation of dynamic (shiny) web apps.

R is a popular open-source programming language and is specifically designed for statistical computing, data analysis, and high-quality graphics. It is widely used by researchers, data scientists, and statisticians for its extensive libraries and robust data visualization tools. R consistently ranks among the top 10 programming languages worldwide.

Key Topics Covered in this book

  • Data Processing and Visualization : learn the techniques to import, transform and visualize diverse supply chain data sets with R, through famous packages such as tidyverse, highcharter or reactable.

  • Automation : break free from Excel constraints and reduce hours of manual work into a single script execution.

  • Ready-to-Use scripts : allowing you to plug-in your own data to perform classic Supply Chain calculations.

  • Supply Planning and Inventory Management : master methods to calculate projected inventories, stocks coverage, replenishment plans, constrained demand, and explore "what-if" scenarios using various functions from the R package planr.

  • Demand Forecasting : utilize R's statistical and machine learning libraries (e.g., forecast, xgboost) for predicting future demand.

  • Optimization & Scenario Analysis : use R to optimize resources allocation or capacity planning through the R package lpSolve.

  • Analytics & Reporting : create interactive reports and visualizations, web apps, using the R package shiny for better analysis and decision-making.

Designed for supply chain professionals, students, data analysts, and R users looking for practical applications, this book creates the link between theoretical data science knowledge and real-world supply chain implementation.

You will get the skills to develop efficient, custom, and data-driven Demand & Supply planning solutions.

Ready? Let's start!

Some links about planr R Consortium interview :

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("planr")

0.6.5 by Nicolas Nguyen, 2 months ago


https://github.com/nguyennico/planr


Report a bug at https://github.com/nguyennico/planr/issues


Browse source code at https://github.com/cran/planr


Authors: Nicolas Nguyen [aut, cre]


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports dplyr, tidyr, lubridate, magrittr, RcppRoll

Suggests highcharter, knitr, reactable, rmarkdown, shiny, tidyverse, sparkline, DT, networkD3, testthat


See at CRAN