# copyright Barry L. Nelson and Michael R. Taaffe 2000
with(linalg):
PhPhInfMCNMoments := proc(A, lambda, R, B, mu, K, Pr, nodelist, lower, upper)
#
# this procedure returns a plot of the mean and variance of
# the number in system an at a list of nodes
# for a [Ph_t/Ph_t/Infinity]^K network with R different arrival processes
#
# initial conditions for the queue are empty and idle
#
# this version is designed to work with Maple 6/7/8
#
# last update 7/28/00 08/20/00 10/15/03
#
# Inputs:
# A = Markov chain transition matrix for the arrival process
# [vector of matrices of dimension R]
# lambda = arrival rate vector
# [vector of vectors of dimension R]
# R = number of distinct Ph arrival processes
# B = Markov chain transition matrix for the service process
# [vector of matrices of dimension K]
# mu = service rate vector
# [vector of vectors of dimension K]
# Pr = Markov routing probabilities
# nodelist = list of nodes to be plotted
# lower, upper = range of plots
local r, deq, initial, temp, mplots;
if R = 1 then
RETURN(PhPhInfNetMoments(A, lambda, B, mu, K, Pr, nodelist, lower, upper));
else
mplots := vector(R);
temp := PhPhInfNetMoments(A[1], lambda[1], B, mu, K, Pr[1], nodelist, lower, upper);
mplots[1] := temp;
for r from 2 to R do
temp := PhPhInfNetMoments(A[r], lambda[r], B, mu, K, Pr[r], nodelist, lower, upper);
mplots[r] := temp;
od;
RETURN(mplots);
fi;
end;