Storage Assignment In A Unit Load Warehouse

  • Uploaded by: Thong Yong Jun
  • 0
  • 0
  • February 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Storage Assignment In A Unit Load Warehouse as PDF for free.

More details

  • Words: 8,855
  • Pages: 20
Loading documents preview...
Storage Assignment in a Unit Load Warehouse – New Findings and New Approach

1

Introduction

All warehouses handle two types of inventory: one is the inventory of pallets; two is the inventory of storage locations. The act of storing and retrieval can be viewed as exchanging one type of inventory for another. For every inventory of pallet created, an inventory of storage location is removed, and so the other way. It is through these exchanges (storage and retrieval) that most warehouses derive their revenue. However at the same time, every exchange incurs a transaction cost: the cost forklift travelling. Pallets must be carried from the receiving dock to the storage location and subsequently from the storage location to the shipping dock. While every handle brings in the same revenue, the cost of handling depends on how far the pallet is located from the receiving and shipping dock. Therefore, the aim of the warehouse is to minimize total distance travelled in handling x number of pallets while maximizing x the number of pallets that can be processed in a given period of time with its limited capacity. In another word, an ideal warehouse will be one where all the fast moving items are stored close to the receiving and shipping doors and slow moving items far away so that most of the activities are concentrated in pallet locations that incur the least cost. This problem has traditionally been approached by either greedy heuristics or using linear programming. However, what we present here is a novel method in storage assignment that while having the advantage of being simple to implement like greedy heuristics, is able to beat the performance of linear programming in the long run. This paper will explain the intuition behind every step in arriving at our proposed method. With that said, let us begin…

2

Adding a time dimension

At any point of time, how do you differentiate a fast moving SKU from a slow moving SKU? The space occupy by a “fast moving” pallet is one pallet location (let us call this a slot from now on). The space occupy by a “slow moving” pallet is also one slot. But clearly, if we observed the same slot over a period of time, the “slow moving” pallet will hang around for much longer hence occupying more space-time. This is the reason why we choose to use a two dimensional matrix to represent our slots and pallets. On one side are the slots arranged by their distance from the receiving and shipping doors. On the other side is time. Say for example: Set of slots Time Slot 1 1 2 3 4

Set of pallets 1 1

2 2

3 3 3

4 4

5 5 5

6

6

7 7 7

1 2 3 4

1 1

2

3

4

5

4

5 5

4

5

3 2 2

3 3

6

6 6

7

7 7 7

By framing the problem in this way, we turn the assignment problem into a bin fitting problem. Of course one of the aims is to fit in as many pallets as possible using the least number of slots since that will mean we avoid the most “expensive” slots altogether. This is not difficult as bin fitting is a well studied problem in computer science and there already exist many algorithms to fit a given set of pallets in the least number of slots. However, we are more concerned about the second part of the problem. To bin fit in such a way that all the “fast moving” go to the nearer slots while the “slow moving” pallets get pushed to the further slots. To do this, let us try a few different heuristics.

3

Bin fitting heuristics in a pure deterministic model

Assume a deterministic model where all information regarding arrivals and departures of pallets within the entire planning horizon is visible to the planner. Assume it is also possible for the planner to map all the arrival dates of a particular SKU to the departure dates. This is so we know the arrival and departure of every single pallet hence also their stay length. Say SKU 21 has arrivals on day 1 & 3 and departure on day 5 & 7. One way to do this mapping is: pallet 1 arrives on day 1 and departs on day 5; pallet 2 arrives on day 3 and departs on day 7. Of course it is also possible to map the dates as: pallet 1 arrives on day 1 and departs on day 7; pallet 2 arrives on day 3 and departs on day 5. These details are important but let us not be too concerned for the time being (we will just assume FIFO inventory policy is used). The problem of mapping arrival dates to departure dates will be elaborated in the section on inventory policy. In a pure deterministic model, how can we “bin fit” the pallets such that “fast moving” pallets get allocated to the nearer slots? One greedy heuristic is as follow: 1. Rank all the pallets from shortest stay to longest stay 2. Move down the list and allocate each pallet to the nearest possible slot. Say for example: Pallet 1 will be allocated to slot 1. Pallet 2 will be allocated to slot 1 provided it does not overlap pallet 1’s space-time. If there is an overlap, pallet 2 will move to slot 2. Pallet 3 repeats: starting from slot 1, is there an overlap? If no, allocate pallet 3 to slot 1. If yes, try slot 2. Is there an overlap in slot 2? If no, allocate pallet 3 to slot 2. If yes, move to slot 3. 3. Repeat until all pallets are assigned to a slot. Let us call this greedy heuristic A. How does heuristic A perform? We’ll try this out on a small problem: Set of pallets

(arranged by stay)

1 3 5 7 7 1

2 2

3

3

4

5

4

5

6 6

7

Heuristic A Time Slot 1 1 1 2 1 3 4

2 2 2

3 3 3 3

4 4

5 5 5

4

5

6

6 6

7 7 7 7

Because pallets are assigned in order of stay length, heuristic A has no problem grouping all the short stay pallets together putting them in the nearest slot. Variance of slots’ turnover is as high as can be: slot 1 handles 4 pallets, slot 2 handles 3, slot 3 two pallets, and slot 4 one. However, heuristic A fails in one important aspect. By visual inspection, we can tell heuristic A does not use the least number of slots. 4 slots are used when in fact only 3 slots are needed. Let repeat this on a bigger problem set. Using the data provided by our Professor, we experimented on a pallet set 28915 big, made up of 63 different SKUs. We will attempt to fit all 28915 pallets into a warehouse with 3936 slots. (For more on how we choose the 63 SKUs, refer to appendix A) How does heuristics A perform on this data set? The result: we exceeded the capacity of the warehouse, using in total 4705 slots. In the first few slots, turnovers are extremely high: more than 60 pallets processed. But as it turns out, optimum bin fitting shows only 3913 slots are needed. So Heuristic A is over greedy in the sense it uses much more slots than what is needed. Here is a printout of the result: Heuristic A Top

Middle

Bottom

Slots

Time

Notice even though all the short stay pallets are at the top (i.e. assigned to the nearer slots), the space utilization there is also very low. If all these empty space are filled up, we can save at least 700 slots. What if we change the heuristic slightly: instead of moving down the list from shortest to longest stay, we do the opposite. Let us call this greedy heuristics B. The result: Heuristic B Time Slot 1 1 1 2 1 3 4

2 2 2

3 3 3 3

4 4 4

5 5 5 5

6 6 6

7 7 7 7

We achieved the minimum number of slots. But variance of slots’ turnover is reduced: slot 1 which is supposed to hold all the “slow moving” pallets actually processed 3 pallets (1 of length 4, 1 of length 2, and 1 of length 1). When used on the large data set, Heuristic B is able to fit all 29815 pallets into 3913 slots thus achieving an optimum bin fit. However, none of the slots processes more than 17 pallets. So variance of slots’ turnover greatly loses out to heuristic A. How does this happen? Visualize this: you are moving from long stay pallets to short stay pallets. After all the long stay pallets found their places, the mid length ones will fill in the gaps in between these long stay pallets. If there are still gaps left, they will be filled up by short stay pallets. So the tendency of heuristic

B is to mix the long stay pallets together with the short stay pallets in order to fill up as much of the empty space as possible. Utilization of the first few slots will be near 100% as pallets of different stay lengths are mixed together. But its overall effect is to balance out slots’ turnover. Heuristic B Top

Middle

Bottom

Slots

Time

Notice space utilization decreases as we move down the slots. Summarizing our results in two plots: Performance of Heuristic B

Performance of Heuristic A 80 70

1.0

80

0.9

70

1.0 0.9 0.8

0.8 60

60

0.7

0.7 50

0.6

40

0.5

30

0.4

50

0.6

40

0.5 0.4

30

0.3 20

0.3 20

0.2 10 0 Turnover

Utilization

0.2

0.1

10

0.0

0

0.1 0.0 Turnover

Utilization

Heuristic A has high variance in slots’ turnover but bad space utilization. Heuristic B fully utilizes space but variance in slots’ turnover is low. Thus we face a dilemma. Is it possible to get the best of both worlds? Come heuristic C: 1. Rank pallets from longest stay to shortest stay 2. Assign the pallets to slots by moving down the list. This mirrors what we do in heuristic B so at the end we’ll have an initial assignment that is based on heuristic B. 3. Because this assignment has low variance in slots’ turnover, it will not be the final assignment. However, since we know this arrangement uses the minimum number of slot, we can use this to set an upper bound for the number of slots needed (in the example earlier, the highest slot number is 3913) 4. Here comes the trick. Move down the list in reverse (starting from the pallet with shortest stay). Starting from the highest slot number, the upper bound (say 3913), iterate through the slots in reverse and find one in which the pallet can fit in. (eg. Starting with pallet 29815, see if the pallet can fit in slot 3913. If yes,

change the position of the pallet hence making an improvement. If no, try slot 3912. Continue until we reach the current position of the pallet. Then move on to pallet 29814.) In effect, what we are doing is implementing heuristic B first then followed by heuristic A. Wouldn’t the result be the same as if we only run heuristic A? The crucial difference here is that an upper bound has been set so we’ll never use more space than the minimum required. Space utilization is the same as heuristic B but we expect to see huge improvement in variance of slots’ turnover. Let us see the result: Heuristic C Top

Middle

Bottom

Slots

Time

By visual inspection, indeed the result of heuristic C doesn’t look very different from that of heuristic A (nearest slot is at the top for heuristic A while nearest slot is at the bottom for heuristic C). However, what is not shown in these diagrams is the fact that only 3913 slots are used. Turnover in the few nearest slots are all above 60. Therefore heuristic C is indeed the best of both worlds. Performance of Heuristic C 80

1.0 0.9

70

0.8 60 0.7 50

0.6

40

0.5 0.4

30

0.3 20 0.2 10

0.1

0

0.0 Turnover

Utilization

The distribution of turnovers mirrors that of heuristic A while slot utilization is in the range of 80% unlike heuristic A which is in the range of 65%. To further verify our claim, let us pit the three heuristics against each other in terms of efficiency.

4

Measuring the efficiency of different heuristics in optimizing slot assignment

The most direct way to measure efficiency is to calculate the cost saving. However, there are disadvantages to using cost as a measure of efficiency. For one, cost calculation can be biased. It depends on the layout of the warehouse. Layout impacts the relative travel time of pallet positions hence different warehouses will have different distributions of travel time even after normalizing. Cost calculation is also one dimensional so at best it provides a cardinal ranking of different heuristics but does not show why one heuristic is better than another. Hence we propose here a novel method in measuring efficiency of heuristics. Imagine a warehouse split into two zones, one being significantly nearer to the receiving/shipping doors than the other. Assume the two zones are equally sized. Start with the case that pallets are randomly assigned between these two zones. Naturally we expect the nearer zone to hold 50% of the pallets while the further zone hold the other 50%. Now assuming we have a heuristic that assign 70% of the pallets to the nearer zone. What is the cost saving provided by this heuristic? That will equal 20% of the total pallets multiply by the difference in travel time between the two zones. Now generalize this case to splitting the warehouse in the ratio x:1-x. If a heuristic assign pallets to the two zones in the ratio y:1-y, the cost saving given x is simply y-x times the difference in travel time. Let us call y-x the excess. Now how do we obtain a plot of y-x against x? Say we have a list of slots and their turnover: Slot 1 (nearest) 2 3 4 (furthest)

Turnover 4 3 2 1

Cumulative 4 7 9 10

x 0.25 0.50 0.75 1.00

y 0.40 0.70 0.90 1.00

y-x 0.15 0.20 0.15 0.00

Applying this procedure to the 3 heuristics earlier, we obtained the following plot:

Measuring efficiency of heuristics (Pure deterministic model) 35%

30%

25%

Excess

20%

Heu A Heu B

15%

Heu C 10%

Heu D

5%

0% 0%

5% 10% 15% 20% 25% 30% 35% 40% 45% 50% 55% 60% 65% 70% 75% 80% 85% 90% 95% 100%

-5%

Size

The first thing we notice is that the plot mostly resembles a skewed quadratic curve that intercept x axis at 0 and 1. This is expected since if size of the x zone is zero, it could not possibly hold any pallet hence the excess will be zero. On the other hand, if size of the x zone is the entire warehouse, it must hold all the pallets hence excess must also be zero. For other values of x, we expect excess to be positive otherwise the heuristic is not generating any cost saving. Notice the arches of heuristic A and C are the highest. This means heuristic A and C are more efficiency than heuristic B or D in generating cost saving. Say we look at the 25% area that is nearest to the receiving/shipping doors, heuristic A and C will assign 25+32=57% of the pallets to this area therefore generating cost saving that equals 32% of total pallets multiple by difference in average travel time between the 25% area nearest to the door and the other 75%. For heuristic B, the cost saving is only 15% of total pallets. The closest of the two arches indicates that heuristic C matches heuristic A in term of efficiency in generating cost saving. The arch of heuristic A does not intercept x-axis at 100% because it overused space. At 100% space, heuristic A’s assignment only holds 95% of the pallets. So the remaining 5% of pallets have to be housed in a separate warehouse. Obviously, heuristic C is the ideal heuristic. What’s interesting also is the fact that the arches peak at different value themselves. Even though the true cost saving is a fixed number that cannot be changed, but assuming we do our cost calculation on zones instead of individual slots, it is possible to get different result by altering the distribution of zone. We will expect the calculated cost saving to be the greatest if we choose a zone size of 25% since that is where the arch peaks.

5

Why inventory policy is important?

Earlier we have pointed out that given a set of arrival dates and a set of departure dates, there can be many ways to map the arrivals to departures so we get a list of corresponding arrivals and departures. How will different ways of mapping affect the result of optimization? We have avoided this question in the previous section by assuming FIFO. But what about other inventory policies? Let us illustrate with a simple example: Say we have a list of arrival dates and a list of departure dates. Our aim is to pair up the arrivals and departures in a way that none of the departure comes become arrival. How can we do that? Arrivals Departures

1 1

2 1

3 3

5 4

5 4

6 4

8 6

8 7

One way to do that will be shifting the entire block of arrival dates to the right one step at a time until we come to a point where all arrivals comes before departures: Arrivals

1

2

3

5

5

6

8

8

Arrivals Departures Pallet no. Stay

0 1 1 2

0 1 2 2

0 3 3 4

1 4 4 4

2 4 5 3

3 4 6 2

5 6 7 2

5 7 8 3 Avg

FIFO mapping

6 9 9 4 2.73

8 9 10 2 SD

8 9 11 2 0.86

Unpaired departures are assigned with beginning inventories while unpaired arrivals are assigned with ending inventories. For convenience, we use day 0 to represent initial inventory and day 9 to represent ending inventories. This method simulates FIFO inventory policy. It’s not the only method we can use so let us try a different method: Arrivals

1

2

3

5

5

6

8

8

Arrivals Departures Pallet no. Stay

1 1 1 1

0 1 2 2

2 3 3 2

3 4 4 2

0 4 5 5

0 4 6 5

5 6 7 2

5 7 8 3 Avg

EOQwSS mapping

6 9 9 4 2.73

8 9 10 2 SD

8 9 11 2 1.29

Like before, the arrival dates are displaced to the right one step at a time. However, this time we allow the block to break along the way so the string of arrival dates does not need to move together. In this method of mapping, the rule of FIFO is not strictly obeyed: some of the inventories that come later depart earlier than the beginning inventories. Notice the total number of pallets is the same; and so is the number of beginning and ending inventories we need o plug the gaps. We still uses 11 pallets, 3 beginning inventories and 3 ending inventories. Notice also that the average stay is the same (2.73). Only the variance changes from 0.86 to 1.29. This method is called EOQwSS for a reason we will explain in subsequent sections. But before that, let us move on to the third method: LIFO. Arrivals

1

2

3

5

5

6

8

8

Arrivals Departures Pallet no. Stay

1 1 1 1

0 1 2 2

3 3 3 1

2 4 4 3

0 4 5 5

0 4 6 5

6 6 7 1

5 7 8 3 Avg

LIFO mapping

5 9 9 5 2.73

8 9 10 2 SD

8 9 11 2 1.54

Notice in LIFO mapping, order of arrival dates is not preserved (the arrows can cross each other). What’s surprising is the even after all the jumbling, average stay of pallets is still the same. But variance is even higher now at 1.54. Why doesn’t average stay change? Consider we have a set of arrival dates represented by a1 , a2 , a3 ,..., an  and departure dates represented by d1 , d2 , d3 ,..., dn  . Depending on how the arrivals are mapped to the departures, the set of stay length could be d1  a1 , d2  a2 ,..., dn  an  . Or this: d1  a2 , d2  a5 ,..., dn  an3 . Or even this: d1  an , d2  an1 ,..., dn  a1 . Regardless of the ordering, average stay can be computed by the formula:

 d

ai a , d j d

j

 ai  / n 

 d

d j d

j

/ n     ai / n  . ai a

From this, we see that average stay is independent of the ordering of arrivals and departures. What does change is the variance.

Why does the choice of inventory policy matter? Recall earlier that assignment is most efficient if variance of slots’ turnover is the highest. Regardless of inventory policy, total number of pallets is the same. And their stay length is the same. But using different inventory policies will change the variance of the pallets’ stay. When variance of stay length is high, we expect variance in slots’ turnover to be high also. Let us verify this claim by testing on a large data set. FIFO

EOQwSS

LIFO

Slots

Time

It appears the number of pallets packed into the busiest slots in much higher for LIFO compared to EOQwSS which in turn is higher than FIFO. The busiest slot for FIFO handles 68 pallets. EOQwSS’s busiest slot handles 130 while LIFO’s busiest slot handles a staggering 251 pallets. That’s almost one pallet per day meaning pallets in that slot never stay more than 2 days. When FIFO is used, standard deviation of pallets’ stay is 32.1 days. For EOQwSS and LIFO, it is 47.7 and 53.4 days respectively. Average stay is 33.6 days and same for all three but the difference in variance of pallets’ stay translates to difference in slots’ turnover. In all three methods, the same 29815 pallets are bin fitted into the same 3913 slots using heuristic C yet variance of slots’ turnover differs greatly among them:

Comparison of heuristic C's performance with different inventory policies 60% 55% 50% 45% 40%

Excess

35% 30%

FIFO

25%

EOQwSS

20%

LIFO

15% 10% 5% 0% 0%

5% 10% 15% 20% 25% 30% 35% 40% 45% 50% 55% 60% 65% 70% 75% 80% 85% 90% 95% 100%

-5%

Size

Using LIFO, it is possible to handle 20+54=74% of the pallets in 20% of the slots. That’s using one fifth of your slots to handle three quarter of your pallets. Cost saving using LIFO is around EOQwSS is used and

54  44  23% more than if 44

54  31  74% more than if FIFO is used. So switching inventory policy alone is going to 31

generate tremendous cost saving. Conclusion: when there’s no restriction on inventory policy, we should choose LIFO since it gives the highest variance in pallets’ stay translating to the highest variance in slots’ turnover. Is that the end of the story? Not really. In practice, few warehouses adopt LIFO inventory policy. This finding has also implications later when we consider stochastic models. When we cannot look into the future, we need to make forecast. However, to make accurate forecast, we need the assumption of FIFO. So this presents a dilemma: LIFO can achieve the highest variance in slots’ turnover hence allowing us to handle the most number of pallets in the least number of slots. But accurate forecast of pallet stay length is not possible for LIFO. More on how we handle this dilemma will come later. But let us first attempt our first stochastic model: the “Container Yard Problem” which will illuminate how the general stochastic problem could be approached.

5

Applying heuristic C when vision is constrained – the “Container Yard Problem”

In a pure deterministic model, we assume complete vision meaning all future arrivals and departures are known in advance. In reality, warehouses will not know everything in advance. But the warehouse will probably know which pallets are coming in within the week since they have placed orders for these pallets. When the pallets eventually come in, they probably will not know how long these pallets are going to stay. But they can have some idea but looking at the historical flow rate. This is what we call a stochastic model. We’ll like to see how heuristic C can be applied to stochastic models. First, let us work on the easier version, what we called the “Container Yard Problem”. Container yards are like warehouses. They take in containers and hold them for a period of time. Every week, the manager will probably know what shipments of containers are coming in, and for these containers how long they will stay. But he will not know in advance what shipments are coming in the following week and after. The key thing here is: there is no uncertainty in the stay length of the pallets once they enter our field of vision but at any point of time, our vision is constrained to the 6 days planning horizon. I know 6 pallets of SKU 21 are coming in on Wednesday. And I know these 6 pallets will stay exactly 15 days in my warehouse. But ask me what pallets are coming in the following Wednesday, I will not know until the week has passed. Let us visualize what happens when heuristic C is applied in this model. Firstly, bin fitting in this case is done from left to right. We cut our space-time matrix into vertical strips. The width of each strip corresponds to the number of days in our planning horizon. At any of point, only pallets within the immediate planning horizon are visible to us. We will apply bin fitting to this subset of pallets before proceeding to the next strip and repeating the bin fitting procedure on the next subset of pallets. In this manner, there is an element of shortsightedness. Assume we are at the last day of the week. By coincidence, all the pallets that arrive on this day are long stay pallets. It could be possible a set of short stay pallets will arrive the following day. But because the next day pallets are not visible to us, a greedy heuristic will just assign these long stay pallets to the nearer slots thus occupying the space that could have been freed up for the short stay

pallets arriving in future. When the week has passed, the new set of short stay pallets arriving will find themselves being assigned to further slots since the nearer slots are already occupied by the long stay pallets. So how does this shortsightedness impact the performance of our heuristic?

Performance of heuristic C when vision is constrained 50% 45% 40% 35%

Excess

30% 25% 20% 15% 10% 5% 0% 0%

5%

10%

15%

20%

25%

30%

35%

40%

45%

50%

55%

60%

65%

70%

75%

80%

85%

90%

95% 100%

Size Heu C (Complete vision)

Heu C (One month)

Heu C (One week)

Heu D

As expected, shortsightedness limits the performance of our heuristic. Notice in the case of limited vision, the lines are not smooth since the assignment may not be locally optimum (i.e. as we move down the slots from nearest to furthest, turnover can increase at some point even though the general trend is decreasing turnover). Using 25% space as benchmark, complete vision will allow us to handle 25+44=69% of pallets in 25% of the space. Constraining our vision to one month reduces this number to 67%. In the case of one week, this number is further reduced to 66%. At the extreme, when vision is constrained to a single day, we are down to 61%. So in conclusion: shortsightedness reduces performance, but not significantly until we approaches the extreme. But of course, we are basing our claim on a dataset that is well balanced (distribution of pallets’ stay remains consistent from day to day). If our dataset is highly imbalance (eg. 3PL warehouses who do not have stable client base), distribution of pallets’ stay can varies a lot throughout the year. Then shortsightedness can have a huge impact. We have yet explained what heuristic D is (even though it has already appeared a couple of times). Heuristic D is one of the greedy heuristic mentioned our textbook. Its rule is as follows: Each day, incoming pallets are ranked by their expected stay length. The pallet with the shortest stay will go to the nearest available slot. The pallet with second shortest stay will go to the second nearest available slot. And so on. As we go down the list from shortest to longest, pallets are assign one at a time to the nearest available slot.

It can be seen that heuristic D is nothing more than the limiting case of heuristic A (or heuristic C) when vision is shortened to one single day. Returning to an earlier chart entitled “Measuring efficiency of heuristics (Pure deterministic model)”, it is clear that heuristic D will always lose out to heuristic C because of its shortsighted nature. By the same virtue, heuristic D is the most affected by imbalanced pallet set. With this consideration of shortsightedness of greedy heuristics, let us move on to a more general stochastic model.

6

Finally… A stochastic model – Overcoming shortsightedness of greedy heuristics

Heuristic C is by nature, a bin fitting heuristic. It works very well in a pure deterministic model but will be subjected to the problem of shortsightedness when applied to stochastic models. Is it ever possible to have a heuristic not subjected to shortsightedness? Consider the information you have when deciding where to assign an incoming pallet. You do not know the exact date when the pallet is going to depart. But you can estimate based on past data the flow rate of the SKU thus giving you a rough idea of how long it will stay. For each slot, other than knowing the travel distance, it is possible to get other information with regards to the slot. With experience, a manager can tell how much turnover to get from a slot in order to fully utilize it. Say for example a warehouse that handles a large number of fast moving pallets, each staying no more than one week. The manager should expect the nearest slot to turn no less than 52 times. If that slot’s turnover is lower than 52, it just means some other slots further in have higher turnovers (assuming space in warehouse is fully utilized) thus implying his current assignment is not efficient. It is therefore entirely possible to assign to each storage location a target turnover and use this information in getting better assignment. This gives us one clue to how to approach the bigger stochastic problem. Another clue can be gotten from visualizing the behavior of heuristic C when solving the bin fitting problem with limited vision. Take the extreme case when vision is constrained to one day: heuristic C will first rank all the incoming pallets by stay length. The longest stay pallet will be pushed all the way in and then followed by the second longest and so on (simulating heuristic B). When all the pallets have been pushed in as far back as we can, we then reverse the procedure and pull the pallets forward as far as we can (simulating heuristic A): Existing arrangement Time Slot 1 2 1 1 2 2 1 2 3 2 4 1 2 5 1 2 6 1 2 7 1 2

Incoming pallets 3 3 3

4 4

5

6

Step 1: Heuristic B Time Slot 1 2 1 1 2 2 1 2 3 2 4 1 2 5 1 2 6 1 2 7 1 2

3 3 3 3 3 3 3

4 4 4 4

5

6

5

6

3 3 X 3 X 3 X X

4 4

5

6 furthest Available slots

nearest Step 2: Heuristic A Time Slot 1 2 1 1 2 2 1 2 3 2 4 1 2 5 1 2 6 1 2 7 1 2

3 3 3 3 3 3 3

4 4

5

6

4

5

6

4

From one look, we can tell the shortcoming of this procedure. In the first step, the long stay pallet is put in the right position (as far back as possible) but position of the short stay pallet could be improved if we move it from slot 6 to slot 7. In the second step, the short stay pallet is in the correct position but the long stay pallet should not have moved out of its previous position. So we have a dilemma: if all the pallets are pushed as far back in as possible, we underutilized the nearer slots. On the other hand, if we pull all the pallets as far out forward as possible, we could potentially wrongly assign the long stay pallets to nearer slots (shortsightedness). This problem could be fixed if we had set target stay length for each slot and made sure pallets going into each slot do not exceed the target stay length. In this way, we prevent long stay pallets from being moved too far out forward while ensuring short stay pallets still goes to the nearest slots. Ideally, the result should look something like this: Ideal result Time Slot 1 1 1 2 1 3 4 1 5 1 6 1 7 1

2 2 2 2 2 2 2 2

3 3 3 3 3 3 3

4 4 4

4

5

6

5

6

Target 4 4 2 2 2 2 1

The targets should be in descending order with the longest stay furthest in and the shortest stay nearest to the doors. One point to stress is that the targets are not targets of average stay length but targets of maximum stay length of pallets within the slot. It is alright for pallet with stay length of 2 to go into any of the slot 1-6. But we will not assign a pallet with stay length of 4 to slot 3-7 since it exceeds their maximum admissible stay length. By introducing target stay length for each slot, our heuristic will no longer be shortsighted. Let us call this modified version heuristic C with targeting. So question: how do we set the targets? The targets can be set by guessing; they can be set based on experience. But a better way we propose is to collect the previous year’s data and perform an optimum bin fit on that entire year of data using heuristic C. Since the data comes from the previous year, the problem we are solving is purely deterministic. Heuristic C will work well and the result will be an optimum assignment. The result from this optimization can then be used to set stay length targets for each slot. And the targets will guide our assignment decision in the current year. The assumption here is that distribution of pallets’ stay remains the same over the two years. So the more balanced our pallet set is, the more accurate our targets could be set. To test this method on our large data set, we used the first 10 weeks of arrivals and departures as past data and tested our new heuristic (let us call it the Ungreedy heuristic) on the remaining 42 weeks since only one year of data is available. In the first step, the usual heuristic C is used to bin fit all the pallets in the first 10 weeks into 3913 slots. With the assignment for the first 10 week, we set targets for the 3913 slots. From week 11 onwards, every day when a new set of pallets comes in, we will rank them according to forecasted stay length. Starting from the pallet with the shortest stay length, we will assign the pallet to the nearest free slot whose target is not lower than the forecasted stay of the pallet. Say for example our first pallet’s forecasted stay is 15 days. If the first

20 slots have target set less than 10 days, we will keep these slot free and instead put the pallet in slot 21. Then we move on to the next pallet. Applying this rule to all the pallets coming in after week 10, we get the result:

Using our Ungreedy Heuristic in a stochastic model 40%

35%

30%

Excess

25%

20%

15%

10%

5%

0% 0%

10%

20%

30%

40%

50%

60%

70%

80%

90%

100%

Size Heu C (deterministic)

Ungreedy (stochastic)

Ungreedy (stochastic) (good targets)

Heu D (stochastic) (without targets)

The red line is what we get when working with a pure deterministic model. It represents the best case scenario. The blue line is the result of using our ungreedy heuristic in a stochastic model. As can be seen, its performance closely matches that of the best case scenario. This is because targeting stay length eliminates the problem of shortsightedness. Even when vision is limited to one day, our ungreedy heuristic will still be able to produce an assignment not very different from the one we get with complete vision. Since we are relying on targeting stay length to correct shortsightedness of our heuristic, what happens if the targets are badly set? If we set very loose targets for all slots (the case of unbinding constrains), all the incoming pallets will just go to the nearest slots. So what we are doing is just heuristic D (represented by the green line). On the other hand, if we set our targets to be very tight, all the incoming pallets will get pushed to the furthest slot every time. So what we get is heuristic B. The two represent our worse case scenarios. How near we get to our best case scenario depends on how well we set our targets. We tried setting our targets using data from the entire year instead of just the first 10 weeks. With this new set of targets, we show that performance of our heuristic can be even better (purple line). Yet no matter how well the targets are set, we can be sure that there will still be a gap between the stochastic model and the pure deterministic model. This is because in the stochastic model, we rely very much on the quality of our forecast. The targets themselves are not binding on the actual stay length of the pallets in the slots; they are only binding on the forecasted stay. Thus it is entirely

plausible for pallets to overstay in their assigned slot if forecast deviates from reality. So accuracy of our forecast can be very important.

7

EOQwSS – Pushing the performance further

In stochastic models, if we want to avoid the problem shortsightedness, we need to rely on having accurate forecast of pallets’ stay so we know where to assign these pallets based on the each slot’s target. But accurate forecast is based on the assumption of FIFO. Recall earlier in our discussion on inventory policies, we proposed LIFO as the “ideal” inventory policy since variance of slots’ turnover is highest with LIFO. Imagine we always fulfill order of a particular SKU with pallets from the nearest slots. If the nearest slots are the first to be emptied, it also means they are the first to restock. So the result is that most of the activities are concentrated in those first few slots. This is exactly what we want. To a certain extent, this strategy also mimics LIFO. Heuristics that are cost greedy such as linear programming tend to follow this pattern. But these heuristics are not immune to shortsightedness. So we face a tradeoff: either we impose FIFO to avoid the problem of shortsightedness or we use a greedy heuristic that mimics LIFO and accept shortsightedness as an inherent limitation. If the cost of shortsightedness outweighs the benefit of LIFO, we should choose option 1. If cost saving from LIFO is enough to cover the cost of shortsightedness, we should choose option 2. Once again we ask ourselves the question: can we get the best of both worlds? The answer to this question is an inventory policy we have considered earlier but have yet to investigate deeper. We call this inventory policy EOQwSS. We first discovered EOQwSS when working out different ways to map arrival dates to departure dates. So it’s more of a solution to a computing problem rather than a reflection of any real world inventory policy in practice. However on closer inspection, we realized EOQwSS can have meaningful interpretation. Recall EOQwSS mapping is a modification of FIFO mapping which allows breaks in the block of arrival dates: Arrivals

1

2

3

5

5

6

8

8

Arrivals Departures Pallet no. Stay

1 1 1 1

0 1 2 2

2 3 3 2

3 4 4 2

0 4 5 5

0 4 6 5

5 6 7 2

5 7 8 3 Avg

EOQwSS mapping

6 9 9 4 2.73

8 9 10 2 SD

8 9 11 2 1.29

We can interpret EOQwSS as this: FIFO ordering is preserved for new arrivals but violated for beginning inventories. Beginning inventories are used whenever the inventory of new arrivals runs out. Now we get a clearer picture. Imagine for each SKU we keep two sets of inventories: one is our beginning inventory, we call this safety stock; the other set consist of our new arrivals, we call this EOQ inventory. Every time an order comes in, we will draw first from the EOQ inventory in a FIFO order. The safety stock will only be used when EOQ inventory runs out. We call this inventory policy EOQwSS because stay length of pallets can be represented on an EOQ diagram:

Stock level

Pallet stay represented by the stripes EOQ inventories

Safety stocks Time

The advantage of this method with regards to our assignment problem is that EOQwSS inherently has higher variance in pallets’ stay compared to FIFO because we have two sets of inventories and we draw from each at different rate. The EOQ stock is drawn and replenished frequently so stay lengths are short while the safety stock is drawn infrequently throughout the year so stay lengths can be very long. If we assign safety stocks far inside and EOQ stock in the convenient location, the nearest slots will see very high turnover while the slots further in will not be visited a lot. Yet EOQwSS still maintains an element of FIFO thus forecasting stay lengths will not be a problem. For incoming pallets that goes into the EOQ stock, forecasting stay length can be done simply by looking at the current inventory in the EOQ stock expressed in inventory days. To obtain forecasted stay for our beginning inventory (the safety stock), we simply spread out depletion of this inventory over the year. So EOQwSS is a FIFO based inventory policy yet having high variance in pallets’ stay. Since EOQwSS allows us to forecast pallet stay with a high degree of accuracy, it can be applied to our target based heuristic. So let us try replacing our earlier FIFO model with one that adopts the EOQwSS inventory policy and see what improvement we will get:

Changing from FIFO to EOQwSS 60%

50%

Excess

40%

30%

20%

10%

0% 0%

10%

20%

30%

40%

50%

60%

70%

80%

90%

100%

Size Heu C (deterministic) (LIFO)

Ungreedy (stochastic) (FIFO)

Ungreedy (stochastic) (EOQwSS)

The deterministic LIFO case represents our best case scenario. It is the optimum assignment we can get for this data set. As can be seen, even after changing our inventory policy to EOQwSS, we are still some gap away from this optimum. But we have already made a huge improvement compared to the FIFO case. Recall variance of pallets’ stay is 32.1, 47.7 and 53.4 for FIFO, EOQwSS and LIFO respectively. Note also that the existence of the gap does not necessarily mean a better heuristic could be found. The ideal case here (red line) is achieved when perfect information is available so it does not mark the boundary of the best theoretically achievable result. Taking into account the incompleteness of information, the true boundary may actually be nearer to our green line. It is here that we have reached our limit. EOQwSS is the best compromise we have found so far in our FIFO versus LIFO dilemma. So let us wrap this up with a cost analysis.

8

Finally…Cost analysis

Earlier, we did not to bring cost analysis into the picture because we want an objective measure that is not biased by factors like layout of the warehouse. But at the end of the day, it is still figures with dollar signs that convince people the most. So we run cost analysis on assignments generated by different heuristics based on a hypothetical warehouse with 3936 slots. The result can be seen here:

Thousands

Cost performance of bin fitting heuristics in a pure deterministic model 1,600

1,400

Heu C Deterministic FIFO Heu C Deterministic EOQwSS

1,200

Heu C Deterministic LIFO Heu D Deterministic FIFO

1,000

Heu D Deterministic EOQwSS 800

600

400

200

0 11

13

15

17

19

21

23

25

27

29

31

33

35

37

39

41

43

45

47

49

51

Week

As described earlier, the choice of inventory policy impact cost to a large extend. Cost is 21% higher for FIFO and 12% higher for EOQwSS compared to LIFO. However, the impact of shortsightedness proves to be equally important. Heuristic D (which can be considered an extremely shortsighted version of heuristic A) costs 6 and 9% more than heuristic C in the case of FIFO and EOQwSS respectively. Moving on to a stochastic model:

Thousands

Cost performance of our ungreedy heuristic in a stochastic model 1,600

1,400

Heu C Deterministic EOQwSS Heu C Deterministic LIFO

1,200

Ungreedy Stochastic EOQwSS Heu D Stochastic EOQwSS

1,000

800

600

400

200

0 11

13

15

17

19

21

23

25

27

29

31

33

35

37

39

41

43

45

47

49

51

Week

In terms of cost, our ungreedy heuristic (green line) is very close to its deterministic cousin (red line). It is still some distance away from the best case scenario represented by the deterministic LIFO case (blue line). Nevertheless, it still performs much better than the short sighted heuristic D (purple line). Therefore, cost analysis helped confirm our earlier findings. That how well a heuristic performs in this storage assignment problem is greatly dependent on the tradeoff between shortsightedness and LIFO. The more we mimic LIFO behavior, the more cost saving we can get, but the more difficult it becomes to manage shortsightedness.

9

Conclusion – It’s not the end…

So have we arrived at an ideal heuristic? Not really. But we have come a long way. We started by framing the assignment problem as a bin fitting problem. We then proposed a bin fitting heuristic that achieves both our goals of maximizing space utilization and assigning only fast moving pallets to the nearest slots while keeping slow moving pallets far inside. The assignment by heuristic C may not be the best but it is close enough to the ideal. How close exactly? (i.e. What is its performance guarantee?) We can only know by doing a mathematical analysis. But this is out of the scope of this paper. Next we investigated the impact of using different inventory policy. We showed that LIFO is the ideal inventory as it creates the highest variance in pallets’ stay hence translating to variance in slots’ turnover. Moving from a pure deterministic model to a somewhat stochastic model (the Container Yard Problem), we investigate how short vision limits the performance of our naïve bin fitting heuristic. We demonstrated the problem of shortsightedness by constraining vision first to a month and then to a week. We also showed heuristic D as a limiting case of heuristic C with an extremely short vision of one day. To address the

problem of shortsightedness, we propose a new heuristic which assigns pallets to slots based on target stay length. Our ungreedy heuristic proves to come close in performance when compared to the “ideal” assignment we get from the deterministic model. However, a major limitation is the need to rely on FIFO when forecasting pallet stay length. We partially overcome this limitation by using a different inventory policy EOQwSS which on one hand gives high variance in pallets’ stay like LIFO, on the other hand is still structurally similar to FIFO. To some extend this bridges the FIFO versus LIFO dilemma but still we are not there yet. So this wraps up all the work we have done so far. We have not arrived at the ideal heuristic nevertheless we have made many new findings along the way that guide us in thinking about this assignment problem. Firstly is the consideration of inventory policy. Secondly is the concept of shortsightedness. We explored bin fitting as an approach to find the optimum assignment in a pure deterministic model. We explored the idea of targeting stay length. Not forgetting, we also proposed a new way to objectively measure performance of our heuristic (the “goodness” of their assignments) without involving cost hence avoiding the bias caused by layout. As such, this paper is entitled “New Findings and New Approach”. We do not claim to have found the best solution but rather a new way (or many new ways) to think about this problem. Still, the idea of using targets is very powerful. It opens up many new possibilities. For one, targeting stay length need not apply only at the slot level. It can apply to zones and classes. The manager of the warehouse can segment his floor space into zones and assign each zone a target stay length for the pallets in there. It is simple to implement because planning is done daily unlike linear programming where planning is done weekly. On-the-spot planning avoids the need for subsequent adjustments when actual arrival and departures deviates from plan. Nevertheless, with vision restricted to a single day, it still overcomes the problem of shortsightedness since targets are set with a long term view. It also has the advantage of scalability. Assignment is done at the level of individual pallet and individual slot. The bin fitting algorithm on which our targets are set based on is a polynomial time algorithm unlike LP which relies on Simplex, an exponential time algorithm. So theoretically, there is no limit to the number of SKU we can handle. On top of that, our heuristic is also cost independent. The assignment is done prior to cost calculation so travel cost of pallet locations is not required as an input whereas linear programming takes average cost of every class as a parameter. Finally, our heuristic is FIFO-based therefore is a better simulation of how goods flow in real world warehouses. LP on the other hand is “greedy” by nature so its solution tends to mimic LIFO more. Furthermore, it is practically impossible to code a FIFO constrain in LP models. All said we have left many stones unturned. We have shown the method of targeting stay length work well for this dataset but this is not true all the time. If targets are not set well (say complete information is not available) or when actual departure deviates greatly from forecast, our ungreedy heuristic may well lose out to greedy heuristics or LP. The question to explore next will be how to set robust targets or whether is it even possible to set robust targets? How sensitive will this method be to deviation in actual departure dates from forecast? How well does this method work when pallet set is highly imbalance when distribution of pallets’ stay length varies from day to day? These questions will be worth exploring if we were to continue exploring targeting stay length as a heuristic in the assignment problem. Whoever reading this paper might be interested to continue my work in these areas.

Authored: Thong Yong Jun 3rd year Bachelor of Business Management (Major in Operations Management) Singapore Management University 8 April 2012 Contact me @ [email protected]

Related Documents


More Documents from "Model Town"