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
22if nargin == 1
23 [Q,U,R,T,A,W] = getAvgHandles(self);
24elseif isempty(Q) && isempty(U) && isempty(R) && isempty(T) && isempty(A) && isempty(W)
25 [Q,U,R,T,A,W] = getAvgHandles(self);
26end
27
28[QN,UN,RN,TN,AN,WN] = self.getAvgNode(Q,U,R,T,A,W);
29
30if isempty(QN)
31 [AvgTable, QT, UT, RT, WT, TT, AT] = deal(Table());
32 AvgTable = IndexedTable(AvgTable);
33elseif ~keepDisabled
34 [Qval, Uval, Rval, Tval, Aval, Wval] = deal([]);
35 JobClass = {};
36 Node = {};
37 for ind=1:I
38 for k=1:K
39 % Check if any metric is non-zero (omit NaN values for FCR nodes)
40 if isMATLABReleaseOlderThan("R2018b")
41 filterVal = nansum([QN(ind,k),UN(ind,k),RN(ind,k),TN(ind,k),AN(ind,k)]); %#ok<NANSUM>
42 else
43 filterVal = sum([QN(ind,k),UN(ind,k),RN(ind,k),TN(ind,k),AN(ind,k)],'omitnan');
44 end
45 if filterVal>0
46 c = sn.chains(:,k)>0;
47 inchain = sn.inchain{c};
48 JobClass{end+1,1} = sn.classnames{k};
49 Node{end+1,1} = sn.nodenames{ind};
50 Qval(end+1) = QN(ind,k);
51 Uval(end+1) = UN(ind,k);
52 Rval(end+1) = RN(ind,k);
53 Wval(end+1) = WN(ind,k);
54 Tval(end+1) = TN(ind,k);
55 Aval(end+1) = AN(ind,k);
56 end
57 end
58 end
59 Node = label(Node);
60 JobClass = label(JobClass);
61 QLen = Qval(:); % we need to save first in a variable named like the column
62 QT = Table(Node,JobClass,QLen);
63 Util = Uval(:); % we need to save first in a variable named like the column
64 UT = Table(Node,JobClass,Util);
65 ResidT = Wval(:); % we need to save first in a variable named like the column
66 WT = Table(Node,JobClass,ResidT);
67 RespT = Rval(:); % we need to save first in a variable named like the column
68 RT = Table(Node,JobClass,RespT);
69 Tput = Tval(:); % we need to save first in a variable named like the column
70 TT = Table(Node,JobClass,Tput);
71 ArvR = Aval(:); % we need to save first in a variable named like the column
72 AT = Table(Node,JobClass,ArvR);
73 AvgTable = Table(Node,JobClass,QLen,Util,RespT,ResidT,ArvR,Tput);
74 AvgTable = IndexedTable(AvgTable);
75else
76 [Qval, Uval, Rval, Tval, Aval, Wval] = deal(zeros(I, K));
77 JobClass = {};
78 Node = {};
79 for ind=1:I
80 for k=1:K
81 c = sn.chains(:,k)>0;
82 inchain = sn.inchain{c};
83 JobClass{end+1,1} = sn.classnames{k};
84 Node{end+1,1} = sn.nodenames{ind};
85 Qval((ind-1)*K+k) = QN(ind,k);
86 Uval((ind-1)*K+k) = UN(ind,k);
87 Rval((ind-1)*K+k) = RN(ind,k);
88 Wval((ind-1)*K+k) = WN(ind,k);
89 Tval((ind-1)*K+k) = TN(ind,k);
90 Aval((ind-1)*K+k) = AN(ind,k);
91 end
92 end
93 Node = label(Node);
94 JobClass = label(JobClass);
95 QLen = Qval(:); % we need to save first in a variable named like the column
96 QT = Table(Node,JobClass,QLen);
97 Util = Uval(:); % we need to save first in a variable named like the column
98 UT = Table(Node,JobClass,Util);
99 ResidT = Wval(:); % we need to save first in a variable named like the column
100 WT = Table(Node,JobClass,ResidT);
101 RespT = Rval(:); % we need to save first in a variable named like the column
102 RT = Table(Node,JobClass,RespT);
103 Tput = Tval(:); % we need to save first in a variable named like the column
104 TT = Table(Node,JobClass,Tput);
105 ArvR = Aval(:); % we need to save first in a variable named like the column
106 AT = Table(Node,JobClass,ArvR);
107 AvgTable = Table(Node,JobClass,QLen,Util,RespT,ArvR,Tput);
108 AvgTable = IndexedTable(AvgTable);
109end
110end
Definition mmt.m:124