1function
RD = getCdfSysRespT(self)
3%global GlobalConstants.FineTol
5RD = cell(1, sn.nchains);
8 inchain = sn.inchain{c};
9 s = inchain(N(inchain)>0); % tag a
class that has non-zero jobs.
10 jobclass = self.model.getClassByIndex(s);
11 chain = self.model.getClassChain(
jobclass);
12 [taggedModel, taggedJob] = ModelAdapter.tagChain(chain,
jobclass); % diminish
jobclass population by 1
13 [Q,F,ev] = SolverCTMC(taggedModel,self.options).getGenerator(); % Q: generator, F: filtration, ev: events
14 tsn = taggedModel.getStruct;
15 tinchain = cell2mat(taggedJob.index);
16 D1 = sparse(zeros(size(F{s})));
17 for r=tinchain % filter tagged job
18 if taggedModel.classes{r}.completes
20 if ev{v}.passive{1}.event == EventType.ARV && ev{v}.passive{1}.class == r && ev{v}.passive{1}.node == tsn.refstat(r)
21 D1 = D1 + sparse(F{v});
27 D = map_normalize({Q-D1, D1});
28 pie_arv = map_pie(D); % state seen upon arrival of a
class-r job
30 nonZeroRates = abs(Q(Q~=0));
31 nonZeroRates = nonZeroRates( nonZeroRates > GlobalConstants.FineTol );
32 T = abs(100/min(nonZeroRates)); % solve ode until T = 100 events with the slowest rate
33 dT = T/10000; % solve ode until T = 100 events with the slowest rate
36 if year(matlabRelease.Date)>2023 || strcmpi(matlabRelease.Release,
"R2023b")
38 RD{1,c} = zeros(length(tset),2);
39 RD{1,c}(1:length(tset),1) = 1-sum(expmv(D{1}
',pie_arv',tset)
' ,2);
40 RD{1,c}(1:length(tset),2) = tset;
42 RD{1,c}(t,1) = 1-pie_arv * expm(D{1}*tset(t)) * ones(length(D{1}),1);
43 if RD{1,c}(t,1)>1-GlobalConstants.FineTol
44 RD{1,c}(t+1:end,:)=[];
49 RD{1,c} = zeros(length(tset),2);
51 RD{1,c}(t,2) = tset(t);
52 RD{1,c}(t,1) = 1-pie_arv * expm(D{1}*tset(t)) * ones(length(D{1}),1);
53 if RD{1,c}(t,1)>1-GlobalConstants.FineTol
54 RD{1,c}(t+1:end,:)=[];