1%{ @file sn_deaggregate_chain_results.m
2 % @brief Deaggregates chain-level performance metrics to
class-level metrics
4 % @author LINE Development Team
8 % @brief Deaggregates chain-level performance metrics to
class-level metrics
11 % This function converts chain-level performance metrics (queue lengths,
12 % utilizations, response times, throughputs) to
class-level metrics
using
13 % aggregation factors.
17 % [Q,U,R,T,C,X] = sn_deaggregate_chain_results(sn, Lchain, ST, STchain, Vchain, alpha, Qchain, Uchain, Rchain, Tchain, Cchain, Xchain)
22 % <tr><th>Name<th>Description
23 % <tr><td>sn<td>Network structure
24 % <tr><td>Lchain<td>Chain demands
25 % <tr><td>ST<td>Class service times
26 % <tr><td>STchain<td>Chain service times
27 % <tr><td>Vchain<td>Chain
visits
28 % <tr><td>alpha<td>Aggregation factors mapping
classes to chains
29 % <tr><td>Qchain<td>Chain queue lengths
30 % <tr><td>Uchain<td>Chain utilizations
31 % <tr><td>Rchain<td>Chain response times
32 % <tr><td>Tchain<td>Chain throughputs
33 % <tr><td>Cchain<td>Chain system response times
34 % <tr><td>Xchain<td>Chain system throughputs
39 % <tr><th>Name<th>Description
40 % <tr><td>Q<td>Class queue lengths
41 % <tr><td>U<td>Class utilizations
42 % <tr><td>R<td>Class response times
43 % <tr><td>T<td>Class throughputs
44 % <tr><td>C<td>Class system response times
45 % <tr><td>X<td>Class system throughputs
48function [Q,U,R,T,C,X] = sn_deaggregate_chain_results(sn, Lchain, ST, STchain, Vchain, alpha, Qchain, Uchain, Rchain, Tchain, Cchain, Xchain)
56 error(
'Cchain input to sn_deaggregate_chain_results not yet supported');
59Vsink = cellsum(sn.nodevisits);
60Vsink = Vsink(sn.nodetype==NodeType.Sink,:);
67 inchain = sn.inchain{c};
69 if isinf(sum(sn.njobs(inchain)))
71 X(k) = Xchain(c) * Vsink(k);
73 X(k) = Xchain(c) * alpha(sn.refstat(k),k);
78 U(i,k) = ST(i,k) * (Xchain(c) * Vchain(i,c) / Vchain(sn.refstat(k),c)) * alpha(i,k);
80 U(i,k) = ST(i,k) * (Xchain(c) * Vchain(i,c) / Vchain(sn.refstat(k),c)) * alpha(i,k) / S(i);
84 U(i,k) = ST(i,k) * (Xchain(c) * Vchain(i,c) / Vchain(sn.refstat(k),c)) * alpha(i,k);
86 U(i,k) = Uchain(i,c) * alpha(i,k);
91 Q(i,k) = Qchain(i,c) * alpha(i,k);
93 Q(i,k) = Rchain(i,c) * ST(i,k) / STchain(i,c) * Xchain(c) * Vchain(i,c) / Vchain(sn.refstat(k),c) * alpha(i,k);
95 T(i,k) = Tchain(i,c) * alpha(i,k);
96 R(i,k) = Q(i,k) / T(i,k);
97 %R(i,k) = Rchain(i,c) * ST(i,k) / STchain(i,c) * alpha(i,k) / sum(alpha(sn.refstat(k),inchain)');
104 C(k) = sn.njobs(k) / X(k);