Kingman's formula: one more job doubled the wait

A bench running at 90% looks busy and behaves fine, right up until it does not. What sets the wait is how full it is, and how unevenly the work arrives.

Live result
The bench is 90% full, and one more job a day takes the wait to 5.9 hours.
  • jobs arriving a day18
  • what the bench can do a day20
  • wait before a job starts2.8 hours
  • one more job a day, as work5.6%
What sets the wait is how full the bench is and how unevenly the work arrives.
The bench is 90% full, and one more job a day takes the wait to 5.9 hours.What sets the wait is how full the bench is and how unevenly the work arrives.

The work, and how evenly it turns up

Inspection bench

Try a scenario

The work

min

Hands-on time, excluding time spent waiting.

Parallel lines

Anything that can take a job at the same time.

Capacity

20 jobs a day

one line, 24 minutes a job, an 8 hour day

How full it is

90%

18 arriving against 20 of capacity

Jobs in the system at any moment

7.2

18 jobs arriving a day

How uneven it is

How arrivals turn up

Evenly means booked intervals; bursts means forty arrive together.

How much the work varies

Alike means equal durations; very mixed ranges from minutes to hours.

How the wait grows

90% full
How the wait growsAverage waiting time against how full the bench is. At 90% full a job waits 2.8 hours. At 95%, which is one more job a day, it waits 5.9 hours. With the other arrival pattern the same bench makes a job wait 1.1 hours.
How full it is90%
Waiting for a free line2.8 hours
Waiting for its own batch0 minutes
Being worked on24 minutes
Chance of any wait at all90.0%
3.13 hours

The average wait carries the two variation settings above it. The chance of waiting is read at exponential arrivals and exponential work, so at Evenly or Alike it reads higher than this bench would. Both are printed rather than combined.

Where a job's time goes

90.0% of jobs wait for a free line at all. The ones that do wait 3.13 hours, which is the number the person holding the job experiences and the average never shows.

Where a job's time goesWhere a job's time goes. As it is now a job waits 2.8 hours for a free line, 0 minutes for its own batch and is worked on for 24 minutes, which is 3.2 hours in total. In the other release pattern the same job would take 5.0 hours.as it is nowbatches of 10

The two things this is not

This is not a headcount. A queue that is too long has four possible answers: less work arriving, faster work, more lines, or less unevenness in either. Which of those is available to you is a question about your budget and your process, and nothing on this page knows anything about either.

It is also not the same argument as a supplier who varies. That page is about buying stock to cover a lead time you cannot control. This one is about a queue your own load creates, where the wait is not caused by anybody being slow. Nothing here got slower. There is simply less room left.

Here is the maths

Release is fixed at one job at a time; the comparison uses batches of 10.

Model version
1.0

The formula, in words

  • Three things set the wait, and they multiply rather than add: how uneven the work is, how full the line is running, and how long one job takes. This is the standard queueing approximation known as Kingman's formula, presented as the VUT equation in Hopp and Spearman's Factory Physics. It is an approximation and a good one across the range this page plots.
  • Unevenness is measured for arrivals and for the work itself, each as a coefficient of variation, which is the standard deviation divided by the mean. A value of 1 means the gaps between arrivals are as varied as they are long, which is what genuinely random arrivals look like. The three settings on this page stand for 0.25, 1.0 and 2.0 for arrivals, and 0.25, 0.75 and 1.5 for the work.
  • How full it is enters as fullness divided by the room left over. At 50% that is 1. At 90% it is 9. At 95% it is 19. At 99% it is 99. That single fraction is the whole nonlinearity, and it is why the last few per cent are not like the ones before them.
  • How long one job takes is the multiplier on both. Cutting the work in half halves the wait even if nothing else changes, which is often the cheapest of the four available moves.
  • More lines change the shape, not just the scale. With more than one line the fullness term is softened by an exponent, because a job arriving at a busy moment can be picked up by whichever line frees first.
  • Batching adds a separate wait that has nothing to do with congestion. In a batch of ten, the first job waits for nobody and the last waits for nine, so on average a job waits for four and a half jobs' worth of work before it leaves. That is why the batch control changes the second chart and leaves the first chart alone: it does not make the bench any fuller.
  • Chance and length are separate. Erlang C gives the chance that every line is busy under exponential arrivals and work. The mean wait divided by that chance gives the mean wait among the jobs that wait.
t=m60t=\frac{m}{60} where tt is work in one job, and mm minutes.c=s×8tc=\frac{s\times8}{t} where cc is daily capacity, and ss the number of lines.ρ=dc\rho=\frac{d}{c} where ρ\rho is utilisation, and dd jobs a day.v=CVa2+CVs22v=\frac{CV_a^2+CV_s^2}{2} where vv is unevenness, CVaCV_a the arrival coefficient of variation, and CVsCV_s the work coefficient of variation.u=ρ1−ρu=\frac{\rho}{1-\rho} where uu is fullness for one line.Wq=v×u×tW_q=v\times u\times t where WqW_q is wait for a line.Wb=b−12×tW_b=\frac{b-1}{2}\times t where WbW_b is wait for a batch, and bb batch size.N=λ×(W+t)N=\lambda\times(W+t) where NN is jobs in the system, λ\lambda jobs an hour, and WW wait.Exact Erlang C:a=s×ρa=s\times\rho where aa is the offered load.T=ass! (1−ρ)T=\frac{a^s}{s!\,(1-\rho)} where TT is the numerator.S=∑k=0s−1akk!S=\sum_{k=0}^{s-1}\frac{a^k}{k!} where SS is the sum of the terms, and kk the term index.P=TS+TP=\frac{T}{S+T} where PP is the chance of waiting.Wc=WqPW_c=\frac{W_q}{P} where WcW_c is wait if waiting.

A worked example

Eighteen jobs a day, twenty four minutes of work in each, one bench, an eight hour day.

The bench can do 8÷0.4=208 \div 0.4 = 20 a day, so at eighteen it is 90% full.

The arrivals are typical, a CV of 1.0, and the work is typical, a CV of 0.75. The unevenness term is (1.02+0.752)÷2=0.78125(1.0^{2} + 0.75^{2}) \div 2 = 0.78125. The fullness term is 0.9÷0.1=90.9 \div 0.1 = 9. So the average job waits 0.78125×9×0.4=2.810.78125 \times 9 \times 0.4 = 2.81 hours before anybody picks it up, and is finished 3.21 hours after it arrived.

By Little's law there are 2.25×3.21=7.22.25 \times 3.21 = 7.2 jobs sitting there at any moment, on a bench that can only work on one.

Now add a single job a day. Nineteen against twenty is 95% full, so the fullness term goes from 9 to 19 and the wait goes from 2.81 hours to 5.94 hours. The workload rose by 5.6%. The wait rose by 111%.

With one line Erlang C is the load itself, so the chance of waiting is 90.0%. Dividing 2.81 hours by 0.90 gives 3.12 hours among jobs that wait. 2.81÷0.90=3.122.81 \div 0.90 = 3.12 With two lines the chance is 27.9%, the mean wait is 0.0893 hours and the conditional wait is 0.3197 hours, or 19.2 minutes.

Check it yourself

Leave the load exactly where it is and switch the arrivals to Evenly. The unevenness term falls from 0.78125 to 0.3125 and the wait falls from 2.81 hours to 1.13 hours, on the same bench, doing the same amount of the same work. Then switch the arrivals to In bursts and it goes to 8.21 hours. Nothing about the workload moved in either direction.

What this does not model

Priorities and expediting, so nothing here jumps the queue. Breakdowns, changeovers, setup time and the way a bigger batch reduces setup per job, which is the honest argument for batching and is missing here on purpose because it would need a setup time control to be worth anything. Batching also makes arrivals lumpier at the next step along, which this page leaves out. Blocking, where a full buffer stops the step behind it. Any variation over the day: a bench that is empty at nine and swamped at four is running at two very different utilisations and this page averages them. And people, who speed up when the queue is visible, which is real and is not in any formula here. The Erlang C reading also does not carry the selected variation shapes. It assumes exponential arrivals and exponential work, while the mean wait keeps the Kingman variation terms.

A queueing approximation on figures you type. It is not a staffing calculation and it produces no target, no optimum and no recommended number of people or lines. Averages of this kind describe the long run behaviour of a stable queue, and a real bench with priorities, breakdowns and a rush at four o'clock will not match them job for job.