LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
pfqn_sens_ldmx_ec.m
1%{
2%{
3 % @file pfqn_sens_ldmx_ec.m
4 % @brief Effective capacity terms of the mixed load-dependent MVA together
5 % with their exact derivatives with respect to the open-class load.
6%}
7%}
8
9%{
10%{
11 % @brief Computes the effective capacity terms EC, E and Eprime of the mixed
12 % load-dependent MVA of Bruell-Balbo-Afshari, exactly as pfqn_ldmx_ec
13 % does, and additionally their exact analytic derivatives with respect
14 % to the open-class load Lo(i) of each station.
15 %
16 % Lo(i) = sum_r lambda(r)*D(i,r) is the only channel through which a
17 % service demand enters E, Eprime and EC: the load-dependent rates mu
18 % are independent of the demands. Station i's terms depend on Lo(i)
19 % alone, so a single derivative per station is enough, and the chain
20 % rule then yields the derivative with respect to any demand-scaling
21 % parameter. This is the factorization behind equations (19), (21) and
22 % (24)-(31) of the reference, which are reproduced here term by term.
23 %
24 % Reference: I. F. Akyildiz and J. C. Strelen, "Moment Analysis for
25 % Load-Dependent Mixed Product Form Queueing Networks", IEEE Trans.
26 % Communications 39(6):828-832, 1991.
27 %
28 % @fn pfqn_sens_ldmx_ec(lambda, D, mu)
29 % @param lambda Arrival rate vector (1 x R). Zero for closed classes.
30 % @param D Service demand matrix (M x R).
31 % @param mu Load-dependent rate matrix (M x Nt), limited load dependence.
32 % @return EC Effective capacity matrix (M x Nt).
33 % @return E E-function values (M x 1+Nt).
34 % @return Eprime E-prime function values (M x 1+Nt).
35 % @return Lo Open class load vector (M x 1).
36 % @return dEC dEC(i,n)/dLo(i), same shape as EC.
37 % @return dE dE(i,1+n)/dLo(i), same shape as E.
38 % @return dEprime dEprime(i,1+n)/dLo(i), same shape as Eprime.
39%}
40%}
41function [EC,E,Eprime,Lo,dEC,dE,dEprime] = pfqn_sens_ldmx_ec(lambda,D,mu)
42% [EC,E,EPRIME,LO,DEC,DE,DEPRIME] = PFQN_SENS_LDMX_EC(LAMBDA,D,MU)
43[M,~] = size(mu);
44Lo = zeros(M,1);
45for ist=1:M
46 Lo(ist) = lambda*D(ist,:)';
47end
48
49b = zeros(M,1); % limited load dependence level
50for ist=1:M
51 b(ist) = find(mu(ist,:)==mu(ist,end), 1 );
52end
53Nt = size(mu,2);
54mu(:,end+1:end+1+max(b)) = repmat(mu(:,end),1,1+max(b));
55C = 1./mu;
56
57EC = zeros(M,Nt);
58E = zeros(M,1+Nt);
59Eprime = zeros(M,1+Nt);
60dEC = zeros(M,Nt);
61dE = zeros(M,1+Nt);
62dEprime = zeros(M,1+Nt);
63
64for ist=1:M
65 bi = b(ist);
66 Cb = C(ist,bi);
67 Lo_i = Lo(ist);
68 den = 1 - Lo_i*Cb; % geometric tail factor of the limited load dependence
69
70 E1 = zeros(1,1+Nt); dE1 = zeros(1,1+Nt);
71 E2 = zeros(1,1+Nt); dE2 = zeros(1,1+Nt);
72 E3 = zeros(1,1+Nt); dE3 = zeros(1,1+Nt);
73 E2prime = zeros(1,1+Nt); dE2prime = zeros(1,1+Nt);
74 F2 = zeros(1+Nt,1+max(0,bi-2)); dF2 = zeros(1+Nt,1+max(0,bi-2));
75 F3 = zeros(1+Nt,1+max(0,bi-2)); dF3 = zeros(1+Nt,1+max(0,bi-2));
76 F2prime = zeros(1+Nt,1+max(0,bi-2)); dF2prime = zeros(1+Nt,1+max(0,bi-2));
77
78 for n=0:Nt
79 if n >= bi
80 % E(n) = 1/den^(n+1) => dE/dLo = (n+1)*Cb/den^(n+2)
81 E(ist,1+n) = 1 / den^(n+1);
82 dE(ist,1+n) = (n+1)*Cb / den^(n+2);
83 Eprime(ist,1+n) = Cb*E(ist,1+n);
84 dEprime(ist,1+n) = Cb*dE(ist,1+n);
85 else % n <= bi-1
86 %% E1 and its derivative, eq. (25)-(26)
87 if n==0
88 E1(1+n) = 1 / den;
89 dE1(1+n) = Cb / den^2;
90 for j=1:(bi-1)
91 E1(1+n) = E1(1+n) * C(ist,j) / Cb;
92 dE1(1+n) = dE1(1+n) * C(ist,j) / Cb;
93 end
94 else % n>0
95 fac = Cb / C(ist,n);
96 E1(1+n) = (1/den) * fac * E1(1+(n-1));
97 dE1(1+n) = (Cb/den^2) * fac * E1(1+(n-1)) + (1/den) * fac * dE1(1+(n-1));
98 end
99
100 %% F2 and its derivative, eq. (27)-(28)
101 for n0 = 0:(bi-2)
102 if n0 == 0
103 F2(1+n,1+n0) = 1;
104 dF2(1+n,1+n0) = 0;
105 else
106 coef = (n+n0)/n0 * C(ist,n+n0);
107 F2(1+n,1+n0) = coef * Lo_i * F2(1+n,1+(n0-1));
108 dF2(1+n,1+n0) = coef * (F2(1+n,1+(n0-1)) + Lo_i*dF2(1+n,1+(n0-1)));
109 end
110 end
111 E2(1+n) = sum(F2(1+n,1+(0:bi-2)));
112 dE2(1+n) = sum(dF2(1+n,1+(0:bi-2)));
113
114 %% F3 and its derivative, eq. (29)-(30)
115 for n0 = 0:(bi-2)
116 if n == 0 && n0 == 0
117 F3(1+n,1+n0) = 1;
118 for j=1:(bi-1)
119 F3(1+n,1+n0) = F3(1+n,1+n0) * C(ist,j) / Cb;
120 end
121 dF3(1+n,1+n0) = 0;
122 elseif n > 0 && n0 == 0
123 fac = Cb / C(ist,n);
124 F3(1+n,1+n0) = fac * F3(1+(n-1),1+0);
125 dF3(1+n,1+n0) = fac * dF3(1+(n-1),1+0);
126 else
127 coef = (n+n0)/n0 * Cb;
128 F3(1+n,1+n0) = coef * Lo_i * F3(1+n,1+(n0-1));
129 dF3(1+n,1+n0) = coef * (F3(1+n,1+(n0-1)) + Lo_i*dF3(1+n,1+(n0-1)));
130 end
131 end
132 E3(1+n) = sum(F3(1+n,1+(0:bi-2)));
133 dE3(1+n) = sum(dF3(1+n,1+(0:bi-2)));
134
135 %% F2prime and its derivative
136 for n0 = 0:(bi-2)
137 if n0 == 0
138 F2prime(1+n,1+n0) = C(ist,n+1);
139 dF2prime(1+n,1+n0) = 0;
140 else
141 coef = (n+n0)/n0 * C(ist,n+n0+1);
142 F2prime(1+n,1+n0) = coef * Lo_i * F2prime(1+n,1+(n0-1));
143 dF2prime(1+n,1+n0) = coef * (F2prime(1+n,1+(n0-1)) + Lo_i*dF2prime(1+n,1+(n0-1)));
144 end
145 end
146 E2prime(1+n) = sum(F2prime(1+n,1+(0:(bi-2))));
147 dE2prime(1+n) = sum(dF2prime(1+n,1+(0:(bi-2))));
148
149 % E = E1 + E2 - E3, eq. (23)-(24)
150 E(ist,1+n) = E1(1+n) + E2(1+n) - E3(1+n);
151 dE(ist,1+n) = dE1(1+n) + dE2(1+n) - dE3(1+n);
152 if n<bi-1
153 Eprime(ist,1+n) = Cb * E1(1+n) + E2prime(1+n) - Cb * E3(1+n);
154 dEprime(ist,1+n) = Cb * dE1(1+n) + dE2prime(1+n) - Cb * dE3(1+n);
155 else %n>=bi-1
156 Eprime(ist,1+n) = Cb * E(ist,1+n);
157 dEprime(ist,1+n) = Cb * dE(ist,1+n);
158 end
159 end
160 end
161
162 % EC(n) = C(n)*E(n)/E(n-1), eq. (19); quotient rule for the derivative
163 for n=1:Nt
164 EC(ist,n) = C(ist,n) * E(ist,1+n) / E(ist,1+(n-1));
165 dEC(ist,n) = C(ist,n) * (dE(ist,1+n)*E(ist,1+(n-1)) - E(ist,1+n)*dE(ist,1+(n-1))) ...
166 / E(ist,1+(n-1))^2;
167 end
168end
169end
Definition Station.m:245