exupero's blog
RSSApps

Utilization in the penny game

In two previous two posts we checked whether we were starving our simulated manufacturing line's bottleneck by eyeballing a graph of the bottleneck's queue against a high roll of 6:

Work in progressStep 10Step 20Step 30Step 40Step 50Step 60Step 70Step 80Step 90Step 1000369121518

A more numerical to judge whether a station is starved is to calculate how much of its capacity it's able to use:

(defn utilization [{:keys [capacities processed stations]}]
  (if (and capacities processed)
    (map / processed capacities)
    (map (constantly 0) stations)))
(-> constrained-steps second utilization)
(1 1 1 4/5 4/5 1)
Utilization of station #4Step 10Step 20Step 30Step 40Step 50Step 60Step 70Step 80Step 90Step 10001

There were only a few rolls when the bottleneck wasn't able to operate at full capacity. Good! What about the other stations?

Utilization of station #1Step 10Step 20Step 30Step 40Step 50Step 60Step 70Step 80Step 90Step 10001
Utilization of station #2Step 10Step 20Step 30Step 40Step 50Step 60Step 70Step 80Step 90Step 10001
Utilization of station #3Step 10Step 20Step 30Step 40Step 50Step 60Step 70Step 80Step 90Step 10001
Utilization of station #5Step 10Step 20Step 30Step 40Step 50Step 60Step 70Step 80Step 90Step 10001
Utilization of station #6Step 10Step 20Step 30Step 40Step 50Step 60Step 70Step 80Step 90Step 10001

They're not working at full utilization. Let's see some averages:

Average utilization by stationStation #175%Station #275%Station #377%Station #498%Station #576%Station #675%

When we think about optimizing the manufacturing line, one of the things we might want to improve is station utilization, but look at utilization under our original scenario, where all the stations are less productive:

Average utilization by station (before productivity improvements)Station #196%Station #288%Station #396%Station #490%Station #589%Station #682%

Utilization was higher before we boosted productivity. That makes sense, of course, but if we try to increase utilization now that we have improved productivity, we'll have to provide more pennies to the line, which increases work in progress. A drop in utilization may have lower costs associated with it than having too much work in progress, so we might prefer to have stations working below full capacity than to flood the line with work just to keep everyone busy.

In fact, lower utilization is the mechanism by which we reduce work in progress. Less utilization means a station has spare capacity, which is necessary for handling bursts of new work. Because of how we've modified their dice to roll 4 instead of 1, 2, or 3, our non-bottleneck stations can expect to receive 4 pennies two-thirds of the time, but occasionally they'll get 5 or 6 pennies. If those stations didn't have spare capacity, those pennies pile up in their backlog. That would increase utilization, but at the expense of having more work in the line waiting to be finished.

That illustrates some of the danger of evaluating metrics in isolation. If increasing output and decreasing work in progress are the primary measures of revenue and expense, utilization is a secondary measure. Optimizing utilization may actually hamper the line's performance.

This has personal application too. As a software developer, I like to have have enough work to keep busy, but having some slack also means I have spare capacity to fix things when problems arise.

If you have other observations about utilization, feel free to email me.