4 % @brief Single Queue Network Iteration (SQNI) approximate solver.
10 % @brief Single Queue Network Iteration (SQNI) approximate solver.
11 % @fn pfqn_sqni(N, L, Z)
12 % @param N Population vector.
13 % @param L Service demand vector.
14 % @param Z Think time vector.
15 % @
return Q Mean queue lengths.
16 % @
return U Utilization.
17 % @
return X System throughput.
20function [Q,U,X]=pfqn_sqni(N,L,Z)
31 X(r) = N(r)/(Z(r)+L(r));
32 U(queueIdx,r) = X(r)*L(r);
33 Q(queueIdx,r) = X(r)*L(r);
40 Nvec_1r = N; Nvec_1r(r) = Nvec_1r(r) - 1;
41 Br = N./(Z+L+L.*(sum(N)-1-sum(Z.*Nvec_1r./(Z+L+L*(sum(N)-2))))) .* Z;
42 Br = Lr * sum(Br(setdiff(1:C,r)));
46 X(r) = (Zr - (Br^2 - 2*Br*Lr*Nt - 2*Br*Zr + Lr^2*Nt^2 + 2*Lr*Nt*Zr - 4*Nr*Lr*Zr + Zr^2)^(1/2) - Br + Lr*Nt)/(2*Lr*Zr);
48 U(queueIdx,r) = X(r)*L(r);
49 Q(queueIdx,r) = N(r)-X(r)*Z(r);
54 X(r) = N(r)/(L(r)*(1+sum(Q,2,
'omitnan')));
55 U(queueIdx,r) = X(r)*L(r);
56 Q(queueIdx,r) = N(r)-X(r)*Z(r);