LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
getAvgNodeTable.m
1function [AvgTable,QT,UT,RT,WT,AT,TT] = getAvgNodeTable(self,Q,U,R,T,A,W,keepDisabled)
2% [AVGTABLE,QT,UT,RT,WT,AT,TT] = GETNODEAVGTABLE(SELF,Q,U,R,T,A,W,KEEPDISABLED)
3% Return table of average node metrics
4%
5% Copyright (c) 2012-2026, Imperial College London
6% All rights reserved.
7
8if nargin<8 %~exist('keepDisabled','var')
9 keepDisabled = false;
10end
11
12if GlobalConstants.DummyMode
13 [AvgTable, QT, UT, RT, TT, WT, AT] = deal(Table());
14 AvgTable = IndexedTable(AvgTable);
15 return
16end
17
18sn = self.model.getStruct;
19I = sn.nnodes + sn.nregions; % Include FCR virtual nodes
20K = sn.nclasses;
21
22% Auxiliary retrieval classes (created internally by Cache.setRetrievalSystem
23% to model the delayed-hit retrieval system) are hidden from the node table:
24% they are plumbing, not user-facing classes.
25hiddenClass = false(1,K);
26for ind = 1:sn.nnodes
27 if sn.nodetype(ind) == NodeType.Cache && isfield(sn.nodeparam{ind}, 'retrievalClassIndices')
28 rci = sn.nodeparam{ind}.retrievalClassIndices;
29 rci = rci(rci>=1 & rci<=K);
30 hiddenClass(rci) = true;
31 end
32end
33
34if nargin == 1
35 [Q,U,R,T,A,W] = getAvgHandles(self);
36elseif isempty(Q) && isempty(U) && isempty(R) && isempty(T) && isempty(A) && isempty(W)
37 [Q,U,R,T,A,W] = getAvgHandles(self);
38end
39
40[QN,UN,RN,TN,AN,WN] = self.getAvgNode(Q,U,R,T,A,W);
41
42if isempty(QN)
43 [AvgTable, QT, UT, RT, WT, TT, AT] = deal(Table());
44 AvgTable = IndexedTable(AvgTable);
45elseif ~keepDisabled
46 [Qval, Uval, Rval, Tval, Aval, Wval] = deal([]);
47 JobClass = {};
48 Node = {};
49 for ind=1:I
50 for k=1:K
51 if hiddenClass(k)
52 continue % auxiliary retrieval class - omit from node table
53 end
54 % Check if any metric is non-zero (omit NaN values for FCR nodes)
55 if isMATLABReleaseOlderThan("R2018b")
56 filterVal = nansum([QN(ind,k),UN(ind,k),RN(ind,k),TN(ind,k),AN(ind,k)]); %#ok<NANSUM>
57 else
58 filterVal = sum([QN(ind,k),UN(ind,k),RN(ind,k),TN(ind,k),AN(ind,k)],'omitnan');
59 end
60 if filterVal>0
61 c = sn.chains(:,k)>0;
62 inchain = sn.inchain{c};
63 JobClass{end+1,1} = sn.classnames{k};
64 Node{end+1,1} = sn.nodenames{ind};
65 Qval(end+1) = QN(ind,k);
66 Uval(end+1) = UN(ind,k);
67 Rval(end+1) = RN(ind,k);
68 Wval(end+1) = WN(ind,k);
69 Tval(end+1) = TN(ind,k);
70 Aval(end+1) = AN(ind,k);
71 end
72 end
73 end
74 Node = label(Node);
75 JobClass = label(JobClass);
76 QLen = Qval(:); % we need to save first in a variable named like the column
77 QT = Table(Node,JobClass,QLen);
78 Util = Uval(:); % we need to save first in a variable named like the column
79 UT = Table(Node,JobClass,Util);
80 ResidT = Wval(:); % we need to save first in a variable named like the column
81 WT = Table(Node,JobClass,ResidT);
82 RespT = Rval(:); % we need to save first in a variable named like the column
83 RT = Table(Node,JobClass,RespT);
84 Tput = Tval(:); % we need to save first in a variable named like the column
85 TT = Table(Node,JobClass,Tput);
86 ArvR = Aval(:); % we need to save first in a variable named like the column
87 AT = Table(Node,JobClass,ArvR);
88 AvgTable = Table(Node,JobClass,QLen,Util,RespT,ResidT,ArvR,Tput);
89 AvgTable = IndexedTable(AvgTable);
90else
91 [Qval, Uval, Rval, Tval, Aval, Wval] = deal(zeros(I, K));
92 JobClass = {};
93 Node = {};
94 for ind=1:I
95 for k=1:K
96 c = sn.chains(:,k)>0;
97 inchain = sn.inchain{c};
98 JobClass{end+1,1} = sn.classnames{k};
99 Node{end+1,1} = sn.nodenames{ind};
100 Qval((ind-1)*K+k) = QN(ind,k);
101 Uval((ind-1)*K+k) = UN(ind,k);
102 Rval((ind-1)*K+k) = RN(ind,k);
103 Wval((ind-1)*K+k) = WN(ind,k);
104 Tval((ind-1)*K+k) = TN(ind,k);
105 Aval((ind-1)*K+k) = AN(ind,k);
106 end
107 end
108 Node = label(Node);
109 JobClass = label(JobClass);
110 QLen = Qval(:); % we need to save first in a variable named like the column
111 QT = Table(Node,JobClass,QLen);
112 Util = Uval(:); % we need to save first in a variable named like the column
113 UT = Table(Node,JobClass,Util);
114 ResidT = Wval(:); % we need to save first in a variable named like the column
115 WT = Table(Node,JobClass,ResidT);
116 RespT = Rval(:); % we need to save first in a variable named like the column
117 RT = Table(Node,JobClass,RespT);
118 Tput = Tval(:); % we need to save first in a variable named like the column
119 TT = Table(Node,JobClass,Tput);
120 ArvR = Aval(:); % we need to save first in a variable named like the column
121 AT = Table(Node,JobClass,ArvR);
122 AvgTable = Table(Node,JobClass,QLen,Util,RespT,ArvR,Tput);
123 AvgTable = IndexedTable(AvgTable);
124end
125end
Definition mmt.m:124