Multi-echelon Supply Chain Inventory Optimization

Sdílet
Vložit
  • čas přidán 13. 07. 2024
  • Determining appropriate inventory levels at each node of a multi-echelon supply chain in order to guarantee customer service levels is a challenging task for supply chain planners because of the complexities that arise due to various sources of uncertainties. In this seminar, I will discuss various concepts and ideas we have explored while working on such problems at Dow Chemical. Starting with single-echelon systems, I will demonstrate how conventional type-II service level models become inaccurate for practical systems that review inventory periodically, though frequently but not perpetually, because they fail to capture the undershoot caused by such periodic inventory monitoring, and will present an improved model. Various challenges presented by the multi-echelon systems for inventory assessment will be highlighted. Mathematical programming based multi-echelon inventory optimization models developed in the literature quantify uncertain demand or lead time assuming a Normal or Poisson distribution. I will demonstrate how such assumptions can severely impact and underestimate optimal inventory, and discuss the drawbacks of mathematical programming approaches. A novel simulation-optimization framework will be presented that not only generates more accurate results by bootstrapping historical data, but is also versatile to capture non-standard inventory policies and decisions. The discussion will be supported using a few business case studies from Dow Chemical.
    Biography:
    Anshul Agarwal is an Associate Research Scientist in Core R&D in The Dow Chemical Company with his research focused on application of computational methods, statistical data analysis, discrete event simulation, and operations research to production planning, batch scheduling, supply chain optimization, and various other R&D and manufacturing problems. He is a certified Six Sigma Green Belt Project Leader. Dr. Agarwal earned his PhD in Chemical Engineering from Carnegie Mellon in 2010 and his Bachelor of Technology from the Indian Institute of Technology Delhi.
  • Věda a technologie

Komentáře • 14

  • @abhinavgaur13
    @abhinavgaur13 Před 4 lety +3

    Great work .. I liked how Dr. Anshul explained the pitfalls of assuming Normal Distribution of demand ..

  • @muhammadrivaldi7970
    @muhammadrivaldi7970 Před 4 lety +3

    Mantap

    • @apm
      @apm  Před 4 lety +1

      I had to use Google translate to figure out that this means "Great" in Indonesian. If that is the case, I'm glad you enjoyed it.

    • @user-wh4ke3rd5u
      @user-wh4ke3rd5u Před 11 měsíci

      @@apm Can you make a video about this:
      A single buyer single vendor supply chain system faces lumpy demand that follows normal distribution with (µ,δ)= (150,30). Holding cost in the buyer and vendor is IDR 7000 /unit/month and IDR 5000/unit/month respectively. Retailing profit in buyer per unit is IDR 30000, while profit per unit in the vendor is IDR 20000. Ordering cost in the buyer when place an order to the vendor is IDR 100000/order. Based on that description, develop a spread sheet-based simulation based on periodic review order (or production) up to R policy in order to minimize the total supply chain cost (total cost of the buyer and vendor).

    • @apm
      @apm  Před 11 měsíci

      @@user-wh4ke3rd5u I got this from ChatGPT:
      To simulate the periodic review order (R) policy for the single buyer single vendor supply chain system, we can use discrete-event simulation. In this simulation, we'll model the supply chain system, simulate the lumpy demand using a normal distribution, and calculate the total supply chain cost over a specified period.
      Let's start by implementing the Python program:
      ```python
      import numpy as np
      import simpy
      # Parameters
      SIMULATION_PERIOD = 12 # Simulation period in months
      REVIEW_PERIOD = 1 # Review period (R) in months
      # Demand distribution parameters
      mean_demand = 150
      std_demand = 30
      # Costs
      buyer_holding_cost = 7000
      vendor_holding_cost = 5000
      retailing_profit_buyer = 30000
      profit_vendor = 20000
      ordering_cost_buyer = 100000
      def generate_lumpy_demand(mean, std):
      """Generate lumpy demand based on normal distribution."""
      return max(0, np.random.normal(mean, std))
      class Buyer:
      def __init__(self, env):
      self.env = env
      self.inventory = 0
      self.total_cost = 0
      self.order_quantity = 0
      self.next_review_time = REVIEW_PERIOD
      def place_order(self):
      """Place an order to the vendor."""
      order_qty = max(0, self.order_quantity)
      self.order_quantity = 0
      self.total_cost += ordering_cost_buyer
      yield self.env.timeout(0) # Time taken to place the order
      def review_inventory(self):
      """Review inventory level and place an order if needed."""
      while True:
      yield self.env.timeout(self.next_review_time)
      demand = generate_lumpy_demand(mean_demand, std_demand)
      self.inventory -= demand
      # Calculate total holding cost for the current month
      holding_cost = self.inventory * buyer_holding_cost
      self.total_cost += holding_cost
      if self.inventory = demand:
      self.inventory -= demand
      self.total_cost += self.inventory * vendor_holding_cost
      self.env.process(self.fulfill_order())
      else:
      demand -= self.inventory
      self.inventory = 0
      self.total_cost += self.inventory * vendor_holding_cost
      # Calculate total profit for the current month
      profit = min(demand, self.buyer.inventory) * (
      retailing_profit_buyer - profit_vendor
      )
      self.total_cost += profit
      self.buyer.inventory -= demand
      def run_simulation():
      env = simpy.Environment()
      buyer = Buyer(env)
      vendor = Vendor(env, buyer)
      env.process(buyer.review_inventory())
      env.process(vendor.check_inventory())
      env.run(until=SIMULATION_PERIOD)
      total_cost = buyer.total_cost + vendor.total_cost
      return total_cost
      if __name__ == "__main__":
      num_simulations = 1000
      total_costs = []
      for _ in range(num_simulations):
      total_cost = run_simulation()
      total_costs.append(total_cost)
      average_cost = np.mean(total_costs)
      print("Average Total Supply Chain Cost:", average_cost)
      ```
      This program uses the `simpy` library for discrete-event simulation. It models the behavior of a single buyer and a single vendor over the specified simulation period. The simulation is run multiple times to get an average total supply chain cost over multiple runs.
      Please note that the simulation might take some time to complete, especially when running a large number of simulations. Adjust the `num_simulations` variable based on the desired accuracy of the average cost estimation.
      The output will give you the average total supply chain cost over the specified simulation runs, which should be the result of using the periodic review order (R) policy to minimize the total cost of the supply chain.

    • @user-wh4ke3rd5u
      @user-wh4ke3rd5u Před 11 měsíci +1

      @@apm Can you explain it with Excel, I do not know anything about Excel Sir. 😅
      If you can make a video about it in channel, using Excel would be great.

    • @apm
      @apm  Před 11 měsíci

      @@user-wh4ke3rd5u Please see the introductory videos to Excel here: apmonitor.com/che263/ Unfortunately, I can't help will the many individual requests for support that I receive each week, but I can point you to some resources.

  • @LOVEONLYLOVEable
    @LOVEONLYLOVEable Před 3 lety

    Did not tell How did he bootstrap. And why even bootstrapping is required as long as you know demand is not normal.

  • @UltimateHindubloggers
    @UltimateHindubloggers Před 8 lety

    not a very interactive lecture

    • @apm
      @apm  Před 8 lety

      +arup das It would be great to have a TED talk style lecture but unfortunately we are limited to slides and audio with this platform. Please join live sessions at apmonitor.com/wiki/index.php/Main/ApplicationWebinars for more interactive sessions.

    • @apm
      @apm  Před 6 lety

      These lectures are delivered over webinar. There is opportunity for interaction during the webinars through the chat window or through the Q+A at the end.

  • @makhtar1996
    @makhtar1996 Před 6 lety

    Very poor expression that is making grasping poor to participant.

    • @apm
      @apm  Před 6 lety +1

      I'm sorry that you didn't like the webinar. The sound quality is not like a studio recording because it is done with WebEx web recorder. See apmonitor.com/wiki/index.php/Main/ApplicationWebinars for additional content in Process Systems Engineering.