LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
fj_respt_vm.m
1%{ @file fj_respt_vm.m
2 % @brief Varma-Makowski approximation for K-way F/J response time
3 %
4 % @author LINE Development Team
5%}
6
7%{
8 % @brief Varma-Makowski approximation for K-way F/J response time
9 %
10 % @details
11 % Computes an approximate mean response time for a K-way Fork-Join
12 % queueing system with Poisson arrivals and exponential service times.
13 %
14 % R_K^{F/J}(rho) ≈ [H_K + (A_K - H_K) * rho] * (mu - lambda)^{-1}
15 %
16 % where A_K = sum_{i=1}^{K} C(K,i) * (-1)^{i-1} * sum_{m=1}^{i} C(i,m) * (m-1)! / i^{m+1}
17 %
18 % and C(n,k) denotes the binomial coefficient "n choose k".
19 %
20 % @par Syntax:
21 % @code
22 % R = fj_respt_vm(K, lambda, mu)
23 % @endcode
24 %
25 % @par Parameters:
26 % <table>
27 % <tr><th>Name<th>Description
28 % <tr><td>K<td>Number of parallel servers (positive integer)
29 % <tr><td>lambda<td>Arrival rate
30 % <tr><td>mu<td>Service rate (mu > lambda for stability)
31 % </table>
32 %
33 % @par Returns:
34 % <table>
35 % <tr><th>Name<th>Description
36 % <tr><td>R<td>Approximate K-way F/J response time R_K^{F/J}(rho)
37 % </table>
38 %
39 % @par Reference:
40 % A. Thomasian, "Analysis of Fork/Join and Related Queueing Systems",
41 % ACM Computing Surveys, Vol. 47, No. 2, Article 17, July 2014.
42 % Table I, Eq. (4) on page 17:10.
43 %
44 % Original: S. Varma and A.M. Makowski, "Interpolation Approximations for
45 % Symmetric Fork-Join Queues", Performance Evaluation, 20, 1994.
46%}
47function R = fj_respt_vm(K, lambda, mu)
48
49if K < 1
50 line_error(mfilename, 'K must be a positive integer. Got K=%d.', K);
51end
52
53% Compute utilization
54rho = lambda / mu;
55
56if rho >= 1
57 line_error(mfilename, 'System is unstable: rho = lambda/mu = %.4f >= 1. Require lambda < mu.', rho);
58end
59
60% Compute harmonic number H_K
61H_K = fj_harmonic(K);
62
63% Compute A_K = sum_{i=1}^{K} C(K,i) * (-1)^{i-1} * sum_{m=1}^{i} C(i,m) * (m-1)! / i^{m+1}
64A_K = 0;
65for i = 1:K
66 inner_sum = 0;
67 for m = 1:i
68 inner_sum = inner_sum + nchoosek(i, m) * factorial(m - 1) / (i^(m + 1));
69 end
70 A_K = A_K + nchoosek(K, i) * ((-1)^(i - 1)) * inner_sum;
71end
72
73% Varma-Makowski approximation (Eq. 4):
74% R_K^{F/J}(rho) ≈ [H_K + (A_K - H_K) * rho] * (mu - lambda)^{-1}
75R_rho = 1 / (mu - lambda);
76R = (H_K + (A_K - H_K) * rho) * R_rho;
77
78end