4 % @brief Exact MVA
for mixed open/closed single-server networks.
10 % @brief Exact MVA
for mixed open/closed single-server networks.
11 % @fn pfqn_mvamx(lambda, D, N, Z, mi)
12 % @param lambda Arrival rate vector.
13 % @param D Service demand matrix.
14 % @param N Population vector.
15 % @param Z Think time vector.
16 % @param mi Queue replication factors (
default: ones).
17 % @return XN System throughput.
18 % @return QN Mean queue lengths.
19 % @return UN Utilization.
20 % @return CN Cycle times.
21 % @return lGN Logarithm of normalizing constant.
24function [XN,QN,UN,CN,lGN] = pfqn_mvamx(lambda,D,N,Z, mi)
25% [XN,QN,UN,CN,LGN] = PFQN_MVAMX(LAMBDA,D,N,Z, MI)
28if nargin<5 %~exist(
'mi',
'var')
33 if lambda(r) > 0 && isfinite(N(r)) && N(r) > 0
34 line_error(mfilename,'Arrival rate cannot be specified on closed
classes.');
38openClasses = zeros(1,R);
39closedClasses = zeros(1,R);
45 openClasses(nOpen) = r;
47 nClosed = nClosed + 1;
48 closedClasses(nClosed) = r;
51openClasses = openClasses(1:nOpen);
52closedClasses = closedClasses(1:nClosed);
61 r = openClasses(ridx);
63 UN(ist,r) = lambda(r)*D(ist,r);
75 Dc = D(:,closedClasses) ./ (1-repmat(UNt,1,nClosed));
76 [XNc,QNc,~,CNc,lGN] = pfqn_mva(Dc,N(closedClasses),Z(closedClasses),mi);
77 XN(closedClasses) = XNc;
78 QN(:,closedClasses) = QNc;
79 CN(:,closedClasses) = CNc;
83 r = closedClasses(ridx);
84 UN(ist,r) = XN(r)*D(ist,r);
89 r = openClasses(ridx);
91 CN(ist,r) = D(ist,r) / (1-UNt(ist));
93 CN(ist,r) = D(ist,r) * (1+sum(QNc(ist,:))) / (1-UNt(ist));
95 QN(ist,r) = CN(ist,r) * XN(r);