LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
polling_qsys_decrementing.m
1function W=polling_qsys_decrementing(arvMAPs,svcMAPs,switchMAPs)
2% W=polling_qsys_decrementing(arvMAPs,svcMAPs,switchMAPs)
3%
4% Exact mean waiting time solution of a symmetric polling system with open
5% (Poisson) arrivals and decrementing (semiexhaustive) service. The server
6% serves a queue until the number of jobs present drops to one less than the
7% number found at the polling instant.
8%
9% Pittel (1973); Takagi (1984). See Takagi, ACM Computing Surveys, Vol. 20,
10% No. 1, March 1988, eq (28). No exact closed form for the individual E[W_i]
11% is known for asymmetric decrementing systems, so this analysis is restricted
12% to the symmetric case.
13%
14% Example:
15% W=polling_qsys_decrementing({map_exponential(1/0.4),map_exponential(1/0.4)},{map_exponential(1),map_exponential(1)},{map_exponential(0.1),map_exponential(0.1)})
16
17n = length(arvMAPs); % number of classes
18lambda = zeros(1,n); b = zeros(1,n); b2 = zeros(1,n);
19r1 = zeros(1,n); delta2 = zeros(1,n);
20for i=1:n
21 lambda(i) = map_lambda(arvMAPs{i});
22 b(i) = map_mean(svcMAPs{i});
23 b2(i) = map_moment(svcMAPs{i},2);
24 r1(i) = map_mean(switchMAPs{i});
25 delta2(i) = map_var(switchMAPs{i});
26end
27
28% The exact result of Takagi (1984) requires a symmetric system.
29tol = 1e-6;
30for i=2:n
31 if reldiff(lambda(i),lambda(1)) > tol || reldiff(b(i),b(1)) > tol || ...
32 reldiff(b2(i),b2(1)) > tol || reldiff(r1(i),r1(1)) > tol || ...
33 reldiff(delta2(i),delta2(1)) > tol
34 line_error(mfilename,['MVA analysis for decrementing polling is only ' ...
35 'available for symmetric systems (identical arrival, service and ' ...
36 'switchover parameters across all queues).']);
37 end
38end
39
40N = n;
41lam = lambda(1);
42b2s = b2(1);
43r = r1(1);
44d2 = delta2(1);
45rho = N*lam*b(1);
46
47denom = 2*(1 - rho - lam*r*(N - rho));
48if denom <= 0
49 line_error(mfilename,'Decrementing polling system is unstable: rho + lambda*r*(N-rho) >= 1.');
50end
51
52if r > 0
53 residualSwitchover = d2/(2*r);
54else
55 residualSwitchover = 0;
56end
57
58Wval = residualSwitchover + ...
59 (N*lam*b2s*(1 - lam*r) + (r + lam*d2)*(N - rho)) / denom;
60
61W = Wval*ones(1,n);
62end
63
64function d=reldiff(a,b)
65scale = max(abs(a),abs(b));
66if scale < 1e-30
67 d = 0;
68else
69 d = abs(a-b)/scale;
70end
71end
Definition Station.m:245