End of 2014, early 2015, Christoph Roser wrote an interesting series of posts about leveling and heijunka that already triggered me at the time, as I have personally been involved in many leveling, pull flow, kanban and EPEI initiatives during my career. And although in many cases I can align myself with Christoph’s views, in some aspects I don’t think his posts have done justice to the way in which leveling, pull, EPEI and the one-piece flow ambition can actually work together. Only recently, however, I have taken the time to put my thoughts on paper. Bear with me, as this post is more technical and longer than my typical posts.
Let me start with first complimenting Christoph on his posts. His articles are among the first that I read and always with much interest. Like Michel Baudin, Christoph is among the ones that share my interest in the industrial engineering aspect of Lean in the tradition of Shingo and Suzaki. An aspect often overlooked and downplayed in the recent tsunami of Lean culture and leadership type of posts across the web.
In his posts, Christoph introduces three elements of leveling:
- Capacity leveling, which in my view is implied in heijunka (in English normally referred to as mix and level-loading). But I’m OK with mentioning it separately as is a distinct element of heijunka next to mixing demand over time. We should take care however not to see as an element that is independent of mixing demand we will see.
- Creating a repetitive pattern, which he refers to as EPEC or Every Part, Every Cycle, also known as Every Part, Every Interval (EPEI). Christoph mentions that this is what most people talk about when they talk about heijunka, however, this definitely is not my experience. Furthermore, he also goes on to state that it is one of the biggest sources of waste and chaos in the name of Lean. Now that is a bold statement that caught my attention, as it doesn’t match with my experience and use of the concept of EPEI. I will try and explain in this post.
- One-piece flow, in fact, an ideal state in which you produce with lot size one and a full distribution (mix) of part types across the available time.
Christoph Roser describes capacity leveling as “Do not add more production orders into the system than what the system can handle. Try to produce the same total quantity every day”. Now I cannot agree more to what is mentioned in the first sentence, however, we should be careful with the second one. Loading a facility to a certain level is determined by the actual cycle times of the different part types on a resource. And not all cycle times are the same. In his comments on Christoph’s posts, Michel Baudin also referred to this when he mentions that it is about leveling capacity utilization. In my opinion, this is also why mix-level loading should always be considered concurrently and at all levels of planning and scheduling.
From my experience, it is useful in this context to speak of what I refer to as planning families that share a similar capacity usage (based upon their cycle time or cycle time range). And during planning and – later on – the actual leveling in the heijunka box, we should take care of the mix of these families during days and weeks. As part types are, unfortunately, not always created equal.
You can think of a simple analogy to explain the above, viz. when you think of the queue in front of the cash register in a supermarket. I think you all agree that just saying that you have limited the number of shopping carts to be processed to let’s say 15 per hour, knowing that the cycle time of the cart can vary significantly based upon its contents…
Using EPEI to Mix Production
Now, this is where my views on EPEI, or “Every Part, Every Interval”, start to deviate from Christoph’s explanations and experiences. The key to this difference in views is related to Christoph’s view of leveling as something that you do in production. In his first post, Christoph correctly mentions that leveling in most cases can more correctly be referred to as demand leveling. And I’m happy he also refers to measures that counter demand fluctuations and typically are referred to as level selling. However, in later posts, leveling is more and more described in the context of directly leveling production. For instance when he writes that “EPEI leveling is the creation of a production pattern” or by the use of words like breaking down “production quantities in lots as small as feasible”, “to distribute the production orders evenly “ and that he introduces the compromise to be made with changeover times in the sequence. Other hints are that the heijunka box is described as to hold production orders and that this heijunka box should be close to production. When described like this, I agree with Christoph that when this use of EPEI – to create and fix a schedule – would be labeled Lean, it would be a disgrace to everything that Lean stands for.
In my opinion, however, this is a fundamental flaw. Leveling is something that you do to demand, not to production directly and the heijunka box that is used to level demand should definitely not be close to production! Instead of speaking about production smoothing or fixed repeating sequences and the lot, it is therefore better to explicitly refer to the concept as demand leveling. To speak in kanban terminology, you level withdrawal cards, not production cards. So demand leveling takes place in another kanban loop than the production kanban loop. It mixes and level loads the withdrawal of parts, not directly the production of those parts.
That you mix and level demand instead of production directly has a fundamental implication. It implies that you can mix and level load using the ideal of lot size one, something Christoph later refers to as the ideal of one-piece flow. And that is exactly how it should be. In the heijunka box you mix and level-load demand using lot size one and fully mixing all product types. Therefore I always refer to the heijunka box as being “the perfect customer”. The foregoing implies that in pull flow, the resulting pattern in the heijunka box is nothing more or less than an idealized demand pattern that – through the withdrawal of parts – will serve as the starting point for the production kanban loop. In that respect, it is important to note that EPEI, therefore, does not play a role in heijunka and in the withdrawal loop, but in the production loop only.
Christoph then goes on in his next posts in the series about leveling and EPEI on why it does not work. In my opinion, this is based upon the earlier and flawed assumption that leveling takes place in the production loop instead of in the withdrawal loop. And don’t get me wrong here. Everything Christoph writes about why fixed sequences, fixed quantity schedules fail I agree with! However, it is not EPEI leveling that fails, it is the fact that you fixed a schedule into the future that is at the source of these horror stories. In other words, he describes why push fails. And I cannot agree more with him on that one.
Using EPEI in Pull Flow
So you now might wonder how you could use the concept of EPEI in the actual production loop. Therefore you need to think about the two kanban loops that work together in a pull flow system. The withdrawal loop organizes the picking of parts from the supermarket; the production loop organizes the replenishment of the parts that were taken. Now with heijunka you have created “the perfect customer” as we have seen. A customer that picks up a full mix of all part types in evenly distributed intervals; so no big swings and waves in demand. However, this typically is not how we are able to produce the parts to replenish what has been taken. In other words, we need a translation mechanism, an interpreter, that translates the demand language of the heijunka box into production language for replenishment. Now, this is where EPEI comes in.
EPEI can be seen as a key part of the mechanism that translates the idealized one-piece flow pattern of the heijunka box into the actual sequence of production lots and campaigns that you will be able to produce. But there are more elements to this translation. As an example, you will maybe need to “translate” a box picked up the withdrawal loop (the handling unit on the customer side of the supermarket) into a pallet, roller, coil or mixing vessel (which is the handling unit of the producer). Now let’s assume that to satisfy downstream demand we on average withdraw 6 boxes per day of a certain product type A and that the handling unit on the producer side is a pallet with 24 boxes. So we would need to accumulate the production cards of 24 boxes in order to trigger the production of the full pallet. This would imply that the production kanban loop would trigger the production “lot” of one pallet, on average, once every 4 days. This is the EPEI parameter of the lot.
The other constraining factor that often comes into play in determining lot (for individual part numbers) and campaign (for families of part types) sizes, and therefore EPEI, are changeover times. This was also rightfully mentioned by Christoph. Now here I have seen two main methods to determine the required production quantity.
The first one has been described briefly by Christoph. It comes down to exploiting the available capacity that is not required for producing the required numbers. To do this you have to determine the so-called operable capacity (this is the opening time minus planned and unplanned downtime) and to then subtract from this capacity the so-called operating time (which is the gross required time to produce the required numbers including rejects and speed losses, however without the possibly required changeover time). The difference is called excess capacity that you can choose to exploit for the sake of flexibility, lead time, and inventory if you wish to do so. When you do so, you try and fit in the maximum number of changeover cycles possible and this will give you the EPEI interval and the lot sizes for all part types on the resource. A very simplified example was provided by Christoph but it clarifies the idea behind the approach.
And surely, Christoph makes an important point about this approach, namely whether an organization actually wants to use this excess capacity for flexibility. I consider this a policy question and not so much an operational one. But clearly, it will be on the management agenda and it needs to be. Please also note that the approach (and the pull flow approach as a whole) also requires the allocation of part types to resources, which companies are not always willing to do.
There is, however, also a more operational risk related to this first method to determine EPEI and subsequently the actual lot sizes. When you determine EPEI on a resource level as described above, you have one single EPEI interval for all part types on the resource but every individual part type will potentially have a very different production lot quantity depending upon their average demand volume. For instance, a 5 day EPEI for a part type with a demand of 1 part a day will imply a production lot of 5 parts; the same EPEI for a part type with an average demand of 5 parts/day is a production lot of 25 parts. Now this in itself is not a problem, but the consequence is. With a similar cycle time, a big difference in production lot size on a production resource implies big differences in the production time of the lots. And with differing cycle times, this can result in even more significant differences. This leads to big variations in the waiting time of the lots in the launcher. And this can become problematic as variations in waiting time can accumulate and lead to big delays in replenishment times and ultimately out-of-stock situations. Prasad Velaga has been kind enough to help me go through some simulations based upon some cases he provided me with on LinkedIn which showed me the possible negative effect when production run times start to differ too much. And besides this, as lots have different production times, it is also more difficult to visually oversee, interpret and manage the workload that is accumulated in the launcher of each work center on the shop floor.
So let’s go to the second method that I know of, which is a somewhat more arbitrary approach known as the 10% rule. The rule implies that in order to absorb the changeover time with sufficient production time, a production lot should at least be 10x the changeover time. So as an example, when your changeover time is 30 minutes, you will define your production lot on the machine as 10x the changeover time, so a production lot of 300 minutes or 5 hours. Now if your cycle time for a part type is 20 minutes, the production lot will be 15 parts. And finally, when average demand is 5 parts/day, this part type will have an EPEI interval of 3 days.
The advantage of this approach is that production runs are similar in the time they require which prevents delays to accumulate. It also helps in implementing visual launcher management and therefore real-time production re-allocation between work centers by shop floor supervisors if need be. The criticism that one could have on this method is that it is a somewhat arbitrary approach. The 10% or 10x rule can, however, of course, be replaced with any other number deemed desirable and possible from a capacity point of view.
In this approach, EPEI is not so much a concept defining the lots, as that it is a concept to evaluate the resulting lot sizes in a meaningful way from a Lean and flow perspective. Look at EPEI as a second level indicator to evaluate the level of flow at the value stream or even part type level, and to drive improvements. I guess this is also what Michel Baudin referred to in his post following Christoph’s series, when he referred to EPEI as a resulting metric. The larger the EPEI interval, the less frequent we will be producing this part type, the longer the replenishment interval will be, the more production kanban cards we will need, and the higher our inventories and WIP will be as a result. As we can see, we have an interest in reducing EPEI. Many have an ambition of an EPEI interval of one day (“Every Part, Every Day”), however, I personally think the ambition is to have an EPEI equal to the takt time of the part type (for a lot) or family (for a campaign), which means lot size one or one piece flow. When interested, I can recommend THE JIT COMPANY’s CO-EPEI dashboard application to track your changeovers and EPEI-intervals by machine and item (family).
In summary, I think we should not throw away the EPEI approach based upon the way Christoph Roser described the approach. We should do away, however, with push flow though based upon pre-planned, fixed quantity fixed sequence schedules. Even when the quantities and patterns are based upon EPEI thinking.
What we should be doing however, is correctly implementing pull flow combining the ideal of one piece flow in demand leveling, and translating this into a practical production sequence of lots and campaigns. And to subsequently use EPEI as both a measure of the level of flow (or the absence of it) at each work center in the value stream, and to drive improvements in flow by demanding ever-shorter EPEI-intervals.
I would like to thank Christoph again for bringing up this topic and to share his experiences with us.