Sometimes you would like to put more material in a single FIFO lane than the space you have available. In this case you would have to use a combination of two or more parallel FIFO lanes. In my last post I described how to maintain a strict FIFO sequence in parallel lanes. This post looks at an easier but less accurate method.
Please check my last post on why you may need parallel FIFO lanes in the first place instead of a long single lane between processes or in a supermarket. In my last post I presented a method that can maintain a strict FIFO sequence, although it may be a bit cumbersome to implement. Such a strict FIFO is in academia sometimes also called a strong FIFO.
In this post I would like to talk about a weak FIFO sequence. In such a weak sequence, the FIFO sequence is not perfect, but … meh … good enough. This post is based on the master’s thesis of one of my students, Kaan Kalkanci. For the full source see below.
When Is It “Good Enough”?
A strict FIFO can help you with tracking and fixing errors, implementing traceability, and avoiding excessive aging of items while newer ones are already consumed. And, do not underestimate this, such a strict FIFO can help you a lot. With a single lane FIFO, it is very easy to implement. With two or more parallel FIFOs, however, this becomes trickier.
However, not all shop floors are on the pinnacle of manufacturing, often not even close, and tracking of errors and traceability are on a level that does not (yet) benefit much from a strict FIFO. In this case a weak FIFO with a few smaller errors could be good enough if it requires less effort. I myself have done this in one of my plants too, simply because the surrounding system does not allow you to benefit much from a strict FIFO.
On the other hand, you do not want your sequence to go totally out of control. Imagine getting an old product version out of your parallel FIFO system that you stopped making six months ago. While you may not mind getting a few stragglers in the hours or days after you changed the design, you do not want them long after the design change. Hence, what you may need is a weak FIFO, where the sequence is not perfect, but … meh … good enough.
Of course you have the option to ignore FIFO completely. If your shop floor is total chaos and major problems are crashing over you multiple times per day, a FIFO sequence for the (probably rare) parallel FIFO lanes may not be at the front of your mind. Work your problems, establish FIFO where it is easier (and a single FIFO lane is about as easy as it gets), and try to get things under control (good luck!). Eventually, however, you may come to the issue of FIFO quality if you have parallel lanes.
What Did We Look At?
My master’s student looked at the quality of the sequence (i.e., the error in the sequence). If a part was added as the 37th part into the FIFO, but left it as the 39th part, then you have an error of 2. We measured the mean squared error between the position in the arriving sequence and the departing sequence.
We simulated a simple system with a single exponentially distributed random arrival and a single exponentially distributed random departure, and for a low, medium, and high utilization of ten parallel FIFO lanes with capacity ten each (details in the thesis if you are interested). We compared five different strategies to add and remove parts for a total of twenty-five strategy combinations.
- The first strategy was to add or remove items randomly. Let’s call this Add Random for adding and Take Random for removing.
- The second strategy was to add and remove items from the FIFO lane with the largest inventory. Let’s call this Add Max for adding and Take Max for removing.
- The third strategy was to add and remove items from the FIFO lane with the smallest inventory. Let’s call this Add Min for adding and Take Min for removing.
- The fourth strategy was to add (or remove) items always from the lane where the last item was added (or removed), until it was full (or empty), in which case the next lane was used. Let’s call this Add Repeat for adding and Take Repeat for removing.
- The fifth strategy was to always use the next lane from the previous one for adding or removing items respectively. When arriving at the last lane, the system starts over from the first lane. Let’s call this Add Cyclic for adding and Take Cyclic for removing. Please note that the “Add Cyclic” – “Take Cyclic” combination gives a strict FIFO as described in my previous post.
To spare you all the mathematical and technical details, the result was:
It does not really matter in what sequence you add the parts to the parallel FIFO, as long as you always take the next part from the next adjacent lane of the previous one (Take Cyclic from above)
The graph below shows the mean squared errors of different combinations of adding and removing methods. Removing by “take cyclic” was by far the best, regardless of the method in which you added the parts to the system. The average “out of sequence” error was around 5. While not perfect, it avoids stragglers that are significantly out of sequence.
If you want to make it even a bit better, adding the parts also in a cyclic fashion (“add cyclic”) was the very best combination that maintained a strict FIFO sequence as shown in my last post. However, in this case you would need a system to ensure the cyclic behavior not only for the removal but also the adding of the part, hence double the work. Below is the average root mean squared error of the different simulation combinations under different loads.
Another method that worked pretty well was to remove the parts in a random order. For every removal, you pick a random lane. This had an average sequencing error of around 14, which may or may not be acceptable. At a first glance the benefit of taking parts from a random line may be that you do not need any system to pick the lane; the employee simply chooses any lane. However, humans are pretty bad at generating randomness, and there is a huge difference between “pick any lane” and “pick a random lane.” In case of doubt the employee may simply go for the lane closest to him or easiest to reach. Hence, I would not really recommend this method.
If you do not need a perfect (strong) FIFO sequence from your parallel FIFO lanes, but a weak FIFO is good enough, simply have the parts removed always from the next lane to the previous part removal. Hence the removal cycles lane by lane through the entire set of parallel lanes over and over again. While this will not give you a perfect FIFO sequence, it will be a reasonably good sequence, and good enough for many cases, especially if it is easier to implement than a perfect FIFO sequence.
Okay, I hope this problem was relevant to at least some of you. I definitely faced this issue on the shop floor – and the wrath of the purists that wanted a strict FIFO no matter what. In any case, go out, get your parts in an approximate sequence, and organize your industry!
Kalkanci, Kaan: “Entwicklung und Simulation von Ein- und Auslagerungsstrategien zur Sicherstellung des FIFO-Prinzips bei dezentralen parallelen Materiallagerungen,” Master Thesis, Karlsruhe University of Applied Sciences, Karlsruhe, Germany, 2019.
3 thoughts on “Maintaining Weak FIFO in Parallel FIFO Lanes”
This is a really useful and pragmatic approach to managing FIFO stock rotation without the overhead of excessively tight controls. Thanks.
Hi Christoph, great blog. I have learned so much from your posts. You manage to keep your posts so easy to read too, which is not always an easy feat.
I have a similar problem in the department that I lead. We have pallet lanes for our material, which are LiFo instead of FiFo. However, our processing ought to be at least a weak FiFo, or we end up running into problems where some customer orders don’t get processed in time. The pallet lanes are LiFo due to space constaints (they are against a wall), which is not something I can readily change right now.
My thinking is that is if I use “take repeat” and “add random” in this situation, I will still get a weak FiFo. I don’t have a lot of control over the adding process, but I can at least block the lane that I am taking from until it’s fully empty. I’d be curious to hear your thoughts on this problem!
Hi Jeremiah, as you said, FIFO would be better, the question is at what cost. The situation you describe sounds like not a prime example for converting to a full FIFO. To get at least a “weak FIFO” I would make sure each stack is emptied regularly. I would guess, human nature often would return a pallet to the longest stack (since it is closest), and also take a pallet from there (same reason). The shorter stacks and the pallets at the end may stay for quite some time, and may even rot if outdoors. Maybe have a system where pallets are added only on one stack until full (and then added to the next one on the right), and pallets are removed only at one stack until empty (and then removed from the next one to the right). This way each stack should get emptied completely every now and then, and you avoid really old pallets. But as often, this is easier said than done, and there are lots of details to make this a workable system. Hope this helps 🙂