12 August 2011

Simpler is better: Dynamic Buffer Management (DBM)

Somehow, in the dark recesses of the past, someone came up with the idea that we should (at least in our minds) segregate our regular stock (inventory quantities) from our “safety stock” as if there were some difference between the two. “Safety stock,” APICS and others suggest, is to cover “variations” in lead-time or demand, while our “regular stock” is to cover “normal demand”—whatever that is. But for most businesses today, variation in demand is the rule, and not the exception. Furthermore, isn’t it true that our whole stock quantity is really what we want to manage—not some isolated portion of our stock that we describe logically as “safety stock.”

Simpler is better. Our whole stock quantity should buffer the system (read: the whole enterprise) from losses in throughput (read: profits).

For years I have worked with small-to midsized enterprises (SMEs), many of which I first touched when they were in transition from entrepreneurial to enterprise in nature. When I found them, they generally knew very little about their inventory. Oh, sure: they knew in a general sense which items were profitable and which were not. They also had a general handle on which items in their inventory were the “fast movers” and which were “the dogs.” Nevertheless, when it came to managing their inventory quantities they almost all struggled with the all too common problem of being sold-out of some items (and thus incurring losses of potential sales and profits) while, at the same time finding that they were overstocked on dozens of other items (so that they were simultaneously incurring high carrying costs and lower cash flows as a result). The problem was, from month to month, it was almost never the same items that were sold-out versus over-stocked. They could never predict what quantities were going to sell, so they couldn’t predict what quantities to stock.

Constraints management (Theory of Constraints) suggests—as I said above—that our whole stock of any item (taken in total) should serve one purpose: to buffer the system from losses to throughput. Now, it is not the purpose of this present writing cover all of the various details of a full Dynamic Buffer Management solution. The simplicity of Dynamic Buffer Management (DBM) is what makes it so appealing. The following is a real-life application of DBM in action.

The raw data we have on our example SKU looks like this:
We have just two months of data from 2007, full years’ data from 2008 and 2009, and a partial year for 2010. Note that demand in 2008 was fairly stable, ranging between 72 and 220 units per day. However, demand is 2009 become wildly erratic—ranging from just 1 unit per day to 389 units per day. Over the entire recorded history for this SKU, we find the following statistics:
If we graph these data, the results look like this:
Now, it’s nice to know that a third-order polynomial curve fits pretty nicely with a six-period moving average of these data, but most SMEs do not have a staff statistician available to them to help analyze all their inventory history in order to determine how to set parameters like stock levels, safety stock, reorder points, line points and more. Nor, do they have confidence that statistics will necessarily serve them better than their intuition has in the past.

What they are looking for is something SIMPLE, RELIABLE, EASY TO UNDERSTAND and EFFECTIVE. Dynamic buffer management is all of that.

Let’s imagine that we are at the end of year 2008 and we want to set up DBM for year 2009. We’re going to do so based on our 2008 history.

The first thing we need to know is: how big should our starting buffer be for this item?

Well, it ain’t rocket science! Establishing a starting buffer quantity requires the knowledge of a few facts because it is more important to be “approximately right” than to be “precisely wrong.” No matter how much precision (read: time, energy and money) is put into calculating a “precise number” for the size of the buffer (or any other business ‘forecast’ number) that number will end up being “precisely wrong” 99.999 percent of the time.

So, to find an “approximately right” number for the starting buffer is more important than finding a “precisely wrong” one. In our example, we used the following formula:

Starting Buffer Size = average period consumption over the Last 12 months + (safe replenishment time in days * average consumption/day * 2 * paranoia factor)

Some of these numbers are arbitrary:
  1. “Safe Replenishment Time” is nothing more than a “safe” estimate of the time it would take to replenish the item under normal circumstances. Almost anyone working in purchasing or replenishment or manufacturing can pick that number for items with which they work day-in and day-out. If one says, “Five,” and another says, “Eight,” then use eight. It’s that simple.
  2. The number “2” used in the formula is also arbitrary. It is nothing more than an additional safety factor to cover unusually high demand or unusually slow delivery. In a moment you’ll see why it is not terribly important in the long run.
  3. “Paranoia Factor” is our third arbitrary number. This value is used to cover management’s concern about things like:
    1. “Our inventory will skyrocket” – so let management set a paranoia factor of less than 1.0 on some items
    2. “If we run out of this item, we lose sales on other things, too! – so increase the paranoia factor
    3. “This is a high-margin item and we don’t want to lose a single sale” – so make the paranoia factor larger
For our example, we calculated a starting buffer size of 11,954 base on a paranoia factor of 1.000. Let’s watch what happens using the actual consumption figures from year 2009.
Now, let’s see how DBM helps us out:
  • Period 1: We just stocked up to almost 12,000 units and in period one we had the worst month ever! We sold only 23 units! Have we done the right thing here?!?
    Even though it seems like we have plenty of stock, we follow our basic rule: Whatever we consume, we replenish. So, we place a replenishment order for 23 units.

    At the end of the period, our “Buffer Status” = 99.81 percent. We have almost a full buffer.
  • Period 2: Things return to normal now. We consume 3,315 units, we get our replenishment supply of 23 units, and we end the period with a buffer status of 72.27 percent. That’s okay. We really don’t get concerned as long as the buffer remains in the green zone—that is, above two-thirds.

    We dutifully place our replenishment order for your consumed quantity—3,315 units.
  • Period 3: We consume 2,153 units and get our 3,315 units from our replenishment order. True to form, we order replenishment for the 2,153 units, and we end with the buffer solidly in the green at 81.99 percent.
  • Period 4: Wow! We consume 7,903 units; get our replenishment of 2,153 units and our buffer status ends up in the red zone. The red zone is a buffer below 33.33 percent full. [NOTE: Here I’m going to play along with some anomaly in Excel’s failure to calculate and apply conditional formatting correctly. We’re at 33.89 percent and this should be “Yellow,” but it’s not. Excel says it’s “Red,” so we’re going to call it “red.” Close enough!] We take no immediate action other than to note that this is the FIRST PERIOD in which our buffer has fallen into the red zone.

    We place our standard order to replenish period consumption.
  • Period 5: We have another great period for this item. We consume 8.476 units; get our replenishment order for 7,903 units, and end the period for the SECOND PERIOD IN SUCCESSION in the red zone. The buffer reached 29.09 percent.

    Other than placing our replenishment order, we take no specific action.
  • Period 6: We’re hit with record sales and move 11,666 units. Even after replenishment order arrives, we still are sitting near the bottom of the red zone at 2.41 percent.

    Since this is the THIRD SUCCESSIVE PERIOD where we have ended up in the red zone for this buffer, we take action to INCREASE THE BUFFER SIZE BY ONE-THIRD. Our replenishment order is now for the 11,666 units consumed PLUS the buffer increase of 3,985 units.
  • Periods 7 and beyond: We will continue to monitor and manage the buffer dynamically applying these simple rules…
As you can see, this is a very SIMPLE, YET EFFECTIVE, way to facilitate stock management. There are some other principles that should be understood—such as the fact that the BUFFER actually contains both the stock in the warehouse and what is in-transit (or, in manufacturing, if a make-item) and is due within one “Safe Replenishment Time” period.

This is so simple!

Most inventory systems could do this with relatively minor tweaks. It is really just managing inventory by “max stock level”—when quantities fall below the maximum stock level, replenish back to the maximum stock level—with some kind of data view (perhaps even using Microsoft Excel™) to display the buffer status with action signals.

Let me know what you think.

[Cross-posted at Kinaxis Supply Chain Community.]


Ralph Cerecero said...

Hello Richard,
excellent example, and very descriptive.

I am currently programming an excel file to do exactly this DBM process, for a coupe of thousands items. The algorithm is basically the same as you describe. However in this example your leadtime or replenish time is one period (day i imagine), what you order, arrives the very next day. In my case the leadtime is more than one period, but with a correct initial inventory calculation that should not be a problem, but the real thing is that the increase / decrease reaction will not reflect in the inventory until after the replenishment time. I´m a little nervous because this work is for a big distribution company, so im putting my faith in DBM as the best solution for them. I´ll keep posting to you interesting findings in my work, hoping you will find it interesting and hoping that you could help me out with some doubts. Thanks! and
long live mr. Goldratt, may he rest in peace.
Ralph (zerezero@yahoo.com)

RDCushing said...


I think you will resolve your problem with regard to the one-day replenishment time if you will do what I did NOT cover in the article. That is, the size of your buffer should include the quantity on-hand PLUS the quantity in-transit.

Let’s say your present buffer size is 500, including 300 on-hand and 200 in-transit (arriving the next day). Now, let’s also say that you ship 270 units today and you also today (by rule) you calculate that you need to reduce your buffer size to 333 units. Result:

New Buffer Size = 333
Qty On-Hand = 230 (300 + 200 – 270)
Replenishment Qty = 103 (for today’s replenishment order)

Does this make sense to you?

Let me know how things go.

RDCushing said...


Also, as part of your processing, don't forget to include "cooling-off periods" after any change in the buffer size. For INCREASES in the buffer size, the cooling-off period should be at least one full replenishment cycle.

For DECREASES in the buffer size, no change should occur in the buffer size until the buffer quantity falls to the "green" level (from above), since a decrease means that you have too much inventory in the buffer.

I trust this also makes sense to you.

Rafael Cerecero said...

Thank you Richard for your two responses,
i´m still finding hard to understand why to consider on transit qty. as part of the buffer too, so then should i also consider as part of the buffer the qty. in production that has been ordered but still not delivered?
In other words, qty. in process + on-transit + on-hand should be the total buffer to consider in DBM?

RDCushing said...

You should consider any quantity that will be received within one replenishment period in the buffer. For example, if your replenishment period were 90 days because you ordered items from the Pacific Rim, you would want to include in your buffer calculation any quantity that is already on a ship and would become part of your on-hand quantity within the 90-day period.

Run a simulation against historical data and I think you will see that it works out. If not, let me know.


Anonymous said...

Dear Richard

Could you please advise how the shelf life is to be considered in DBF?


RDCushing said...


That is an excellent question.

Typically, one would never want to have more than AvgDailyDemand * ShelfLifeInDays in stock. There are exceptions to this basic rule, however.

For example, if this is a very high Throughput item (where Throughput is Revenue less Truly Variable Costs per unit), the profit may make it worthwhile to take some risk by stocking more and occasionally having to write-off or write-down some expired inventory.

So, one approach would be to make AvgDailyDemand * ShelfLifeInDays your initial Buffer size and let the system manage it from there. If the second case fits, then you can add the 'Paranoia Factor' with which you are comfortable to give you some protective stock for such items.

Let me know if this sounds like a reasonable approach to you.

And, thank you for joining in on the conversation.

-- Richard

Felipe Gaviria Rios said...


Excellent discussion. Shelf life is an important issue to resolve in food industory.

I have just one thing to clarify. The formula you gave (AvgDailyDemand * ShelfLifeInDays) have to consider all stock allocation + transit?.
I mean, all supply chain inventory of one specific item, should not to be greater than this amount?. Is that right if I have my products loosing shelflife while they're being shipped and transported to consumption allocation... am I right? I appreciate any advice.

RDCushing said...

Filipe, thank you for your cogent comment.

Actually, I probably oversimplified when I made my earlier comment regarding shelf-life. Naturally, you would never want a single replenishment order (which is likely to have a single expiration date) larger than average daily demand times shelf-life days.

However, the real objective of DBM is to drive toward shorter and shorter replenishment cycles and, as a result, smaller replenishment batches. If this becomes your real goal, then shelf-life (or stock expiration) becomes a matter about which there is very little concern in the end.

-- Richard Cushing

Felipe Gaviria Rios said...

Hello RDCushioning

Thank you for clarify that.

In fact, my goal (and hope) is to increase replenishment frequency in all supply chain and therefore, obtain shorter replenishment cycles and focus on availability of our products for costumers and consumers. I want to know if you can help me to overcome traditional production practices of increasing production batches to reduce cost per Kg (or another unit). This local optimum might affect (and certainly does) global goals achievement, such as EVA or EBITDA.
My specific question is, if possible, how can I have a simple approach to show plants that they can trade off efficiency and the global metrics will improve?.

Thank you and regards!

RDCushing said...


We actually do work with firms in a consulting role to help them overcome traditional practices and metrics based on local optima.

Our general approach is to use the Thinking Process tools to help the organization and management get a different view of how the firm works--and fails to work--effectively at producing higher profits.

Next, we work with them on some small pilot projects that help them begin to see that managing the system as a whole--and not be local optima--actually increases Throughput and leads to increased profitability.

Let us know if we can be of further help to you and your firm.

RDCushing said...


We actually do work with firms in a consulting role to help them overcome traditional practices and metrics based on local optima.

Our general approach is to use the Thinking Process tools to help the organization and management get a different view of how the firm works--and fails to work--effectively at producing higher profits.

Next, we work with them on some small pilot projects that help them begin to see that managing the system as a whole--and not be local optima--actually increases Throughput and leads to increased profitability.

Let us know if we can be of further help to you and your firm.

Nur Alam Howlader said...


Excellent post. But I want to make sure whether the TOC model would work in the following situations:
1. Where there is seasonal falctuation
2. In times of Festival( for eg. fashion house during christmas).

If it works could you please explain it in a detail?


RDCushing said...

Sorry. You're reading a really old post. Standard DBM has been supplanted by the much superior DDMRP (Demand Driven Material Requirements Planning. You can read about it here: http://www.rklesolutions.com/?s=ddmrp

And, yes, it does hand seasonality and planned adjustment factors, as you ask.

Grace to you,
Richard Cushing