# copyright Barry L. Nelson and Michael R. Taaffe 2000
with(linalg):
PhPhInfMCNSymbolic := proc(A, lambda, R, B, mu, K, Pr)
#
# this procedure returns a symbolic representation
# of the first and second moment differential
# equations 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/01 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
#
local r, deq, initial, temp;
if R = 1 then
RETURN(PhPhInfNetSymbolic(A, lambda, B, mu, K, Pr));
else
deq := vector(R);
temp := PhPhInfNetSymbolic(A[1], lambda[1], B, mu, K, Pr[1]);
deq[1] := temp;
for r from 2 to R do
temp := PhPhInfNetSymbolic(A[r], lambda[r], B, mu, K, Pr[r]);
deq[r] := temp;
od;
RETURN(deq);
fi;
end;