LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
pfqn_ssd.m
1%{
2%{
3 % @file pfqn_ssd.m
4 % @brief Server-Station Disaggregation throughput bounds (Suri-Dallery 1986)
5 % for single-class closed networks with multiserver stations.
6%}
7%}
8
9function [Xlo,Xhi] = pfqn_ssd(L,N,Z,nservers)
10%{
11%{
12 % @brief SSD multiserver bounds (SIGMETRICS 1986, Theorem 5). Each C_k-server
13 % station of loading L_k is bracketed by disaggregations: C_k balanced
14 % single-server stations of loading L_k/C_k (lower) and one single
15 % server of loading L_k/C_k (upper). With R_l=sum L_k, Y_l=max L_k/C_k,
16 % R_u=sum L_k/C_k, Y_u=R_u/K:
17 % X_l = N/(R_l+(N-1)Y_l) <= X(N) <= N/(R_u+(N-1)Y_u) = X_u,
18 % the upper bound taken jointly with the ABA bound min(N/R_l, C_b/L_b).
19 % O(K) cost, same order as BJB on single-server networks.
20 % @fn pfqn_ssd(L, N, Z, nservers)
21 % @param L Service demand vector (M x 1).
22 % @param N Population (scalar).
23 % @param Z Think time (scalar, default 0).
24 % @param nservers Per-station server counts C_k (M x 1, default all 1).
25 % @return Xlo Lower throughput bound (Theorem 5).
26 % @return Xhi Upper throughput bound (Theorem 5, joint with ABA).
27%}
28%}
29L = L(:);
30K = numel(L);
31if nargin < 3 || isempty(Z), Z = 0; end
32if nargin < 4 || isempty(nservers), nservers = ones(K,1); end
33C = nservers(:);
34if isscalar(C), C = C*ones(K,1); end
35
36Rl = sum(L); Yl = max(L./C);
37Ru = sum(L./C); Yu = Ru/K;
38[~, b] = max(L./C);
39
40Xlo = N/(Rl + Z + (N-1)*Yl);
41Xhi = min([ N/(Ru + Z + (N-1)*Yu), ... % Theorem 5 upper
42 C(b)/L(b), ... % ABA capacity bound (eq. 3)
43 N/(Rl + Z) ]); % ABA population bound
44end
Definition Station.m:245