The Convolution Algorithm presented in the module on convolution is only
applicable to networks of queues with service rates that do not
depend on the number of jobs in the queues. We can extend this
basic algorithm to incorporate queues with load-dependent service
rates as well.
For any product-form queueing network with
MM queues, the probability of being
in a state with
n
m
n
m
jobs in queue mm is given by
π
n
1
n
2
…
n
M
=
π
1
n
1
π
2
n
2
⋯
π
M
n
M
K
π
n
1
n
2
…
n
M
π
1
n
1
π
2
n
2
⋯
π
M
n
M
K
(1)
where
π
m
n
m
π
m
n
m
is the probability of
n
m
n
m
jobs in queue
mm if the queue were
in isolation with a Poisson input process, and
KK is a normalization constant. In
the case of an open network,
KK is
always 1. For closed networks,
KK
is determined by the constraint that the state probabilities sum
to 1; i.e.,
K=∑all states∈
n
1
′
n
2
′
…
n
M
′
,(
n
M
′
≥0)∧(1≤m≤M)∧(∑m=1M
n
m
′
=N)
π
1
n
1
′
π
2
n
2
′
⋯
π
M
n
M
′
K
all states
n
1
′
n
2
′
…
n
M
′
n
M
′
0
1
m
M
m
1
M
n
m
′
N
π
1
n
1
′
π
2
n
2
′
⋯
π
M
n
M
′
(2)
with
NN being the total number of
jobs in the system.
The state probability distributions
π
m
n
m
π
m
n
m
are the solutions to birth-and-death processes with
arrival rates
λ
m
λ
m
and possibly load-dependent service rates
μ
m
n
m
μ
m
n
m
; that is,
π
m
n
m
=
π
m
0∏j=0
n
m
−1
λ
m
μ
m
j+1=
π
m
0∏j=1
n
m
λ
m
μ
m
j
π
m
n
m
π
m
0
j
0
n
m
1
λ
m
μ
m
j
1
π
m
0
j
1
n
m
λ
m
μ
m
j
(3)
Define
A
m
n=∏k=1n
μ
m
k
μ
m
1
A
m
n
k
1
n
μ
m
k
μ
m
1
Then,
π
m
n
m
=
π
m
0∏j=1
n
m
λ
m
μ
m
1
μ
m
1
μ
m
j=
π
m
0
ρ
m
n
m
∏j=1
n
m
μ
m
1
μ
m
j=
π
m
0
ρ
m
n
m
A
m
n
m
π
m
n
m
π
m
0
j
1
n
m
λ
m
μ
m
1
μ
m
1
μ
m
j
π
m
0
ρ
m
n
m
j
1
n
m
μ
m
1
μ
m
j
π
m
0
ρ
m
n
m
A
m
n
m
(4)
where
ρ
m
=
λ
m
μ
m
1
ρ
m
λ
m
μ
m
1
may or may not be the actual utilization of queue
mm. Hence,
π
n
1
n
2
…
n
M
=
π
1
0
ρ
1
n
1
A
1
n
1
π
2
0
ρ
2
n
2
A
2
n
2
⋯
π
M
0
ρ
M
n
M
A
M
n
M
K=
ρ
1
n
1
A
1
n
1
ρ
2
n
2
A
2
n
2
⋯
ρ
M
n
M
A
M
n
M
C
π
n
1
n
2
…
n
M
π
1
0
ρ
1
n
1
A
1
n
1
π
2
0
ρ
2
n
2
A
2
n
2
⋯
π
M
0
ρ
M
n
M
A
M
n
M
K
ρ
1
n
1
A
1
n
1
ρ
2
n
2
A
2
n
2
⋯
ρ
M
n
M
A
M
n
M
C
(5)
and
C=K
π
1
0
π
2
0
π
M
0
C
K
π
1
0
π
2
0
π
M
0
is another constant. Let
∀m,1≤m≤M:
ρ
m
=α
μ
m
m
1
m
M
ρ
m
α
μ
m
. Then as we saw in the case of single-server queues,
π
n
1
n
2
…
n
M
=
u
1
n
1
A
1
n
1
u
2
n
2
A
2
n
2
⋯
u
M
n
M
A
M
n
M
GN
π
n
1
n
2
…
n
M
u
1
n
1
A
1
n
1
u
2
n
2
A
2
n
2
⋯
u
M
n
M
A
M
n
M
G
N
(6)
GN=CαN
G
N
C
α
N
is the scaled normalization constant.
GN=∑all states∈
n
1
′
n
2
′
…
n
M
′
,(
n
m
′
≥0)∧(1≤m≤M)∧(∑m=1M
n
m
′
=N)
u
1
n
1
′
A
1
n
1
′
u
2
n
2
′
A
2
n
2
′
⋯
u
M
n
M
′
A
M
n
M
′
G
N
all states
n
1
′
n
2
′
…
n
M
′
n
m
′
0
1
m
M
m
1
M
n
m
′
N
u
1
n
1
′
A
1
n
1
′
u
2
n
2
′
A
2
n
2
′
⋯
u
M
n
M
′
A
M
n
M
′
(7)
At this point, let's simplify the discussion and assume that
there is only one queue, queue
MM,
which has load-dependent service rates. Hence
∀m,1≤m<n:
A
m
n
m
=1
m
1
m
n
A
m
n
m
1
, and
π
n
1
n
2
…
n
M
=
u
1
n
1
u
2
n
2
⋯
u
M
−
1
n
M
−
1
u
M
n
M
A
M
n
M
GN
π
n
1
n
2
…
n
M
u
1
n
1
u
2
n
2
⋯
u
M
−
1
n
M
−
1
u
M
n
M
A
M
n
M
G
N
(8)
GN=∑all states∈
n
1
′
n
2
′
…
n
M
′
,(
n
m
′
≥0)∧(1≤m≤M)∧(∑m=1M
n
m
′
=N)
u
1
n
1
′
u
2
n
2
′
⋯
u
M
−
1
n
M
−
1
′
u
M
n
M
′
A
M
n
M
′
G
N
all states
n
1
′
n
2
′
…
n
M
′
n
m
′
0
1
m
M
m
1
M
n
m
′
N
u
1
n
1
′
u
2
n
2
′
⋯
u
M
−
1
n
M
−
1
′
u
M
n
M
′
A
M
n
M
′
(9)
As before, we will define
gnm
g
n
m
to be the scaled normalization constant when there are
nn jobs and
mm queues in the network. Also as
before, we will separate the terms in
gnm
g
n
m
into groups. Now, however, instead of separating them
into two groups based on whether or not a term has a factor of
u
m
u
m
, we will separate them into
n+1
n
1
groups, one group for all terms with a factor
u
m
k
u
m
k
,
0≤k≤n
0
k
n
.
For the group with factor
u
m
k
u
m
k
, we can factor out the
u
m
k
u
m
k
term. For example,
∀k,k=n:
u
m
n
A
m
n1
k
k
n
u
m
n
A
m
n
1
∀k,k=n−1:
u
m
n−1
A
m
n−1(
u
1
+
u
2
+…+
u
M
-
1
)
k
k
n
1
u
m
n
1
A
m
n
1
u
1
u
2
…
u
M
-
1
∀k,k=n−2:
u
m
n−2
A
m
n−2(
u
1
2+
u
2
2+…+
u
M
-
1
2+
u
1
u
2
+
u
1
u
3
+…+
u
M
-
2
u
M
-
1
)
k
k
n
2
u
m
n
2
A
m
n
2
u
1
2
u
2
2
…
u
M
-
1
2
u
1
u
2
u
1
u
3
…
u
M
-
2
u
M
-
1
For each value of kk, the terms in
parenthesis are just
gn−km−1
g
n
k
m
1
. Hence,
gnm=∑k=0n
u
m
k
A
m
kgn−km−1
g
n
m
k
0
n
u
m
k
A
m
k
g
n
k
m
1
(10)
With no jobs in the system, there is only one state, and
g0m=1
g
0
m
1
. if there is only one queue in the system, again there
is only one state, and we have
gn1=
u
1
n
A
1
n
g
n
1
u
1
n
A
1
n
. From these starting conditions and the recurrence
relation for
gnm
g
n
m
above, we can derive an algorithm similar to the basic
Convolution Algorithm for single-server queues. However,
instead of computing each term using the terms immediately above
and to the left, we use all the terms in the column to the left,
down to the same row.
Finally, suppose that the queue with load-dependent service
rate is an IS queue. IS in the context of a closed network does
not necessarily mean that there are an infinite number of
servers, since there is only a finite number of jobs. What is
important is the queue have a service rate that scales linearly
with the number of jobs; i.e.,
u
m
k=k
u
m
1
u
m
k
k
u
m
1
. For a queue with this property,
A
m
k
A
m
k
is just
k!
k
, and
gnm=∑k=0n
u
m
kk!gn−km−1
g
n
m
k
0
n
u
m
k
k
g
n
k
m
1
(11)
The utilization of the one queue with a load-dependent service
rate is the probability that the server is busy, which is 1
minus the probability that the queue is empty.
Pr
N
m
=0=∑all states∈
n
1
n
2
…
n
M
,(
n
m
≥0)∧(1≤m<M)∧(
n
M
=0)∧(∑m=1M−1
n
m
=N)
ρ
1
n
1
ρ
2
n
2
⋯
ρ
M
−
1
n
M
−
1
C=∑all states∈
n
1
n
2
…
n
M
,(
n
m
≥0)∧(1≤m<M)∧(
n
M
=0)∧(∑m=1M−1
n
m
=N)
u
1
n
1
u
2
n
2
⋯
u
M
−
1
n
M
−
1
GN=gNM−1gN
N
m
0
all states
n
1
n
2
…
n
M
n
m
0
1
m
M
n
M
0
m
1
M
1
n
m
N
ρ
1
n
1
ρ
2
n
2
⋯
ρ
M
−
1
n
M
−
1
C
all states
n
1
n
2
…
n
M
n
m
0
1
m
M
n
M
0
m
1
M
1
n
m
N
u
1
n
1
u
2
n
2
⋯
u
M
−
1
n
M
−
1
G
N
g
N
M
1
g
N
(12)
ρ
M
=1−gNM−1gNM
ρ
M
1
g
N
M
1
g
N
M
For any queue mm, the probability
that it has at least nn jobs in
it is the sum of the state probabilities over all states for
which
n
m
≥n
n
m
n
. For single-server queues with load-independent
service rates, this sum was the same as the normalization
constant for
N−n
N
n
jobs, multiplied by
u
m
n
u
m
n
; i.e.,
Pr
N
m
≥n=
u
m
nGN−nGN
N
m
n
u
m
n
G
N
n
G
N
However, this is not true for load-dependent servers,
including infinite servers.
Pr
N
m
≥n=∑all states∈
n
1
…
n
M
,(
n
i
≥0)∧(i≠m)∧(
n
m
≥n)∧(∑j=1M
n
j
=N)
π
n
1
,
…
,
n
m
,
…
,
n
M
=∑k=nN∑all states∈
n
1
…
n
M
,(
n
i
≥0)∧(i≠m)∧(
n
m
=k)∧(∑j=1M
n
j
=N)
π
n
1
,
…
,
n
m
,
…
,
n
M
N
m
n
all states
n
1
…
n
M
n
i
0
i
m
n
m
n
j
1
M
n
j
N
π
n
1
,
…
,
n
m
,
…
,
n
M
k
n
N
all states
n
1
…
n
M
n
i
0
i
m
n
m
k
j
1
M
n
j
N
π
n
1
,
…
,
n
m
,
…
,
n
M
(13)
For each value of
kk in the
second summation, each probability contains a factor
u
m
k
A
m
k
u
m
k
A
m
k
, and
u
m
k
A
m
k=
u
m
n
A
m
n
u
m
k−n
A
m
k
A
m
n≠
u
m
n
A
m
n
u
m
k−n
A
m
k−n
u
m
k
A
m
k
u
m
n
A
m
n
u
m
k
n
A
m
k
A
m
n
u
m
n
A
m
n
u
m
k
n
A
m
k
n
Hence,
Pr
N
m
≥n≠
u
m
n
A
m
nGN−nGN
N
m
n
u
m
n
A
m
n
G
N
n
G
N
(14)
This means that in general there is no simple way to compute
the expected number of jobs in a load-dependent server queue
using the normalization constants. If we are interested in
the expected number of jobs in the last queue and it is a
load-dependent server, however, we can still avoid computing
individual state probabilities, even if there are other
load-dependent servers in the network.
Pr
N
M
≥n=∑all states∈
n
1
…
n
M
,(
n
i
≥0)∧(i<M)∧(
n
M
≥n)∧(∑j=1M
n
j
=N)
π
n
1
,
…
,
n
m
,
…
,
n
M
=∑k=nN∑all states∈
n
1
…
n
M
,(
n
i
≥0)∧(i<M)∧(
n
M
=k)∧(∑j=1M
n
j
=N)
π
n
1
,
…
,
n
m
,
…
,
n
M
=∑k=nN
u
M
k
A
m
kgN−kM−1gNM
N
M
n
all states
n
1
…
n
M
n
i
0
i
M
n
M
n
j
1
M
n
j
N
π
n
1
,
…
,
n
m
,
…
,
n
M
k
n
N
all states
n
1
…
n
M
n
i
0
i
M
n
M
k
j
1
M
n
j
N
π
n
1
,
…
,
n
m
,
…
,
n
M
k
n
N
u
M
k
A
m
k
g
N
k
M
1
g
N
M
(15)
E
N
M
=∑n=1NPr
N
M
≥n=∑n=1N∑k=nN
u
M
k
A
M
kgN−kM−1gNM=∑k=1Nk
u
M
k
A
M
kgN−kM−1gNM
N
M
n
1
N
N
M
n
n
1
N
k
n
N
u
M
k
A
M
k
g
N
k
M
1
g
N
M
k
1
N
k
u
M
k
A
M
k
g
N
k
M
1
g
N
M
(16)
If the load-dependent server is an IS queue, we can simplify
this even further:
E
N
M
=∑k=1N
u
M
k(k−1)!gN−kM−1gNM
N
M
k
1
N
u
M
k
k
1
g
N
k
M
1
g
N
M
If there is only one load-dependent server queue in the
network, the obvious approach is to make it the last queue and
use the above method. What if there are
L>1
L
1
load-dependent server queues? We can use the
convolution algorithm once for each load-dependent queue,
putting a different load-dependent server queue last each
time. This actually only requires
L−1
L
1
applications of the Convolution Algorithm. Compute
the expected queue lengths in all of the load-independent
server queues with one application of the Convolution
Algorithm. Then use these values with those computed for
L−1
L
1
of the load-dependent server queues to find how many
jobs are in the remaining queue.