1function [QN,UN,RN,TN] = getStageAvg(self,~,~,~,~)
2% % [QN,UN,RN,TN] = GETSTAGEAVG(SELF,~,~,~,~)
4% runAnalyzer(self); % run iterations
6% QN = zeros(E,self.lqn.nidx+self.lqn.ncalls);
7% UN = zeros(E,self.lqn.nidx+self.lqn.ncalls);
8% RN = zeros(E,self.lqn.nidx+self.lqn.ncalls);
9% TN = zeros(E,self.lqn.nidx+self.lqn.ncalls);
11% clientIdx = self.ensemble{e}.attribute.clientIdx;
12% serverIdx = self.ensemble{e}.attribute.serverIdx;
13% sourceIdx = self.ensemble{e}.attribute.sourceIdx;
14%
for c=1:self.ensemble{e}.getNumberOfClasses
15% type = self.ensemble{e}.classes{c}.attribute(1);
17%
case LayeredNetworkElement.TASK
18% tidx = self.ensemble{e}.classes{c}.attribute(2);
19%
if strcmp(self.lqn.sched(tidx), SchedStrategy.REF)
20% TN(e,tidx) = self.results{end,e}.TN(clientIdx,c);
25% %
if ~isnan(clientIdx)
26% % TN(e,tidx) = max(self.results{end,e}.TN(clientIdx,c), TN(e,tidx));
28% %UN(e,tidx) = self.util(tidx);
30% %QN(e,tidx) = self.results{end,e}.QN(serverIdx,c);
31%
case LayeredNetworkElement.ENTRY
32% %eidx = self.ensemble{e}.classes{c}.attribute(2);
34% %UN(e,eidx) = self.results{end,e}.UN(serverIdx,c);
35% %QN(e,eidx) = self.results{end,e}.QN(serverIdx,c);
36% %TN(e,eidx) = self.results{end,e}.TN(clientIdx,c);
37% %
if ~isnan(clientIdx)
38% % TN(e,eidx) = max(self.results{end,e}.TN(clientIdx,c), TN(e,eidx));
40%
case LayeredNetworkElement.CALL
41% cidx = self.ensemble{e}.classes{c}.attribute(2);
42% idx = self.lqn.nidx + cidx;
43% aidx = self.lqn.callpair(cidx,1);
44% tidx = self.lqn.parent(aidx);
45% % contribution of call to task
46% %UN(e,tidx) = UN(e,tidx) + self.results{end,e}.UN(serverIdx,c);
47% %QN(e,tidx) = QN(e,tidx) + self.results{end,e}.QN(serverIdx,c);
48%
switch self.ensemble{e}.classes{c}.type
49%
case JobClassType.CLOSED
50%
if self.ensemble{e}.classes{c}.completes
51% % TN(e,tidx) = TN(e,tidx) + max(self.results{end,e}.TN(serverIdx,c), self.results{end,e}.TN(clientIdx,c));
53% %TN(e,aidx) = TN(e,aidx) + self.results{end,e}.TN(serverIdx,c);
54% TN(e,idx) = TN(e,idx) + self.results{end,e}.TN(serverIdx,c);
55% %TN(e,idx) = max(self.results{end,e}.TN(serverIdx,c), self.results{end,e}.TN(clientIdx,c));
56%
case JobClassType.OPEN
57%
if self.ensemble{e}.classes{c}.completes
58% % TN(e,tidx) = TN(e,tidx) + self.results{end,e}.TN(sourceIdx,c);
60% %TN(e,aidx) = TN(e,aidx) + self.results{end,e}.TN(sourceIdx,c);
61% TN(e,idx) = TN(e,idx) + self.results{end,e}.TN(sourceIdx,c);
62% %TN(e,idx) = max(self.results{end,e}.TN(serverIdx,c), self.results{end,e}.TN(sourceIdx,c));
64% %RN(e,aidx) = RN(e,aidx) + self.results{end,e}.RN(serverIdx,c);
65% %UN(e,aidx) = UN(e,aidx) + self.results{end,e}.UN(serverIdx,c);
66% %QN(e,aidx) = QN(e,aidx) + self.results{end,e}.QN(serverIdx,c);
67% RN(e,idx) = RN(e,idx) + self.results{end,e}.RN(serverIdx,c);
68% UN(e,idx) = UN(e,idx) + self.results{end,e}.UN(serverIdx,c);
69% QN(e,idx) = QN(e,idx) + self.results{end,e}.QN(serverIdx,c);
70%
case LayeredNetworkElement.ACTIVITY
71% aidx = self.ensemble{e}.classes{c}.attribute(2);
72% tidx = self.lqn.parent(aidx);
73% % contribution of activity to task
74% %UN(e,tidx) = UN(e,tidx) + self.results{end,e}.UN(serverIdx,c);
75% %QN(e,tidx) = QN(e,tidx) + self.results{end,e}.QN(serverIdx,c);
76%
switch self.ensemble{e}.classes{c}.type
77%
case JobClassType.CLOSED
78%
if self.ensemble{e}.classes{c}.completes
79% % TN(e,tidx) = TN(e,tidx) + max(self.results{end,e}.TN(serverIdx,c), self.results{end,e}.TN(clientIdx,c));
81% TN(e,aidx) = TN(e,aidx) + self.results{end,e}.TN(serverIdx,c);
82%
case JobClassType.OPEN
83%
if self.ensemble{e}.classes{c}.completes
84% % TN(e,tidx) = TN(e,tidx) + self.results{end,e}.TN(sourceIdx,c);
86% %TN(e,aidx) = TN(e,aidx) + self.results{end,e}.TN(sourceIdx,c);
87% TN(e,aidx) = TN(e,aidx) + self.results{end,e}.TN(sourceIdx,c);
89% RN(e,aidx) = RN(e,aidx) + self.results{end,e}.RN(serverIdx,c);
90% UN(e,aidx) = UN(e,aidx) + self.results{end,e}.UN(serverIdx,c);
91% QN(e,aidx) = QN(e,aidx) + self.results{end,e}.QN(serverIdx,c);