1function result = qsys_phph1(alpha, T, beta, S, varargin)
2% QSYS_PHPH1 Analyzes a PH/PH/1 queue
using BUTools MMAPPH1FCFS.
4% RESULT = QSYS_PHPH1(ALPHA, T, BETA, S) analyzes a PH/PH/1 queue with:
5% ALPHA - Arrival PH initial probability vector (1 x n)
6% T - Arrival PH generator matrix (n x n)
7% BETA - Service PH initial probability vector (1 x m)
8% S - Service PH generator matrix (m x m)
10% The arrival PH
is converted to an equivalent MAP representation.
12% RESULT = QSYS_PHPH1(...,
'numQLMoms', K) computes K queue length moments
13% RESULT = QSYS_PHPH1(...,
'numQLProbs', N) computes N queue length probs
14% RESULT = QSYS_PHPH1(...,
'numSTMoms', K) computes K sojourn time moments
16% Returns a
struct with fields:
17% meanQueueLength - Mean number of customers in system
18% meanWaitingTime - Mean waiting time in queue
19% meanSojournTime - Mean sojourn time (waiting + service)
20% utilization - Server utilization
21% queueLengthDist - Queue length distribution
P(Q=n)
22% queueLengthMoments- Raw moments of queue length
23% sojournTimeMoments- Raw moments of sojourn time
24% analyzer - Name of analyzer used
26% See also MMAPPH1FCFS, qsys_mapph1, qsys_mapmap1
28% Parse optional arguments
30addParameter(p, 'numQLMoms', 3);
31addParameter(p, 'numQLProbs', 100);
32addParameter(p, 'numSTMoms', 3);
35numQLMoms = p.Results.numQLMoms;
36numQLProbs = p.Results.numQLProbs;
37numSTMoms = p.Results.numSTMoms;
39% Convert arrival PH to MAP representation
40% D0 = T (hidden transitions within the PH)
41% D1 = (-T)*e * alpha (absorption followed by restart)
42[D0, D1] = phToMap(alpha, T);
44% Build arrival
MMAP structure for BUTools (single class)
47% Service parameters as cell arrays
52[ncMoms, ncDistr, stMoms] = MMAPPH1FCFS(D, betaCell, SCell, ...
53 'ncMoms', numQLMoms,
'ncDistr', numQLProbs,
'stMoms', numSTMoms);
57meanInterarrival = alpha * negTinv * ones(size(T, 1), 1);
58lambda = 1.0 / meanInterarrival;
61meanService = beta * negSinv * ones(size(S, 1), 1);
62mu = 1.0 / meanService;
78% Waiting time = sojourn time - service time
79meanWT = max(0, meanST - meanService);
83result.meanQueueLength = meanQL;
84result.meanWaitingTime = meanWT;
85result.meanSojournTime = meanST;
86result.utilization = rho;
87result.queueLengthDist = ncDistr;
88result.queueLengthMoments = ncMoms;
89result.sojournTimeMoments = stMoms;
90result.analyzer =
'BUTools:MMAPPH1FCFS';
94function [D0, D1] = phToMap(alpha, T)
95% PHTOMAP Converts a PH distribution to its equivalent MAP representation.
97% For a PH renewal process, the MAP has:
98% D0 = T (transitions within the PH, no arrival)
99% D1 = t * alpha where t = -T*e (exit rates times restart distribution)
101% D0 = T (hidden transitions)
104% t = -T * e (exit rate vector, column)
105exitRates = -T * ones(size(T, 1), 1);
107% D1 = t * alpha (restart to initial distribution)
108D1 = exitRates * alpha;