1function
RD = getCdfRespT(self, R)
4if GlobalConstants.DummyMode
9if nargin<2 %~exist(
'R',
'var')
10 R = getAvgRespTHandles(self);
13RD = cell(sn.nstations, sn.nclasses);
18 line_error(mfilename,'getCdfRespT
is presently supported only for closed models.')
21 inchain = sn.inchain{c};
22 s = inchain(N(inchain)>0); % tag a
class that has non-zero jobs.
23 jobclass = self.model.getClassByIndex(s);
24 chain = self.model.getClassChain(
jobclass);
25 [taggedModel, taggedJob] = ModelAdapter.tagChain(chain,
jobclass); % diminish
jobclass population by 1
26 %taggedModel.stations{:}
27 [Q,F,ev] = SolverCTMC(taggedModel,self.options).getGenerator(); % Q: generator, F: filtration, ev: events
28 tsn = taggedModel.getStruct;
29 tinchain = cell2mat(taggedJob.index);
32 for ir=1:length(tinchain)
34 A1 = sparse(zeros(size(F{s})));
35 for r=tinchain % filter tagged job
36 if taggedModel.classes{r}.completes
38 if ev{v}.passive{1}.event == EventType.ARV && ev{v}.passive{1}.class == r && ev{v}.passive{1}.node == ist
39 A1 = A1 + sparse(F{v});
45 D1 = sparse(zeros(size(F{s})));
46 for r=tinchain % filter tagged job
47 if taggedModel.classes{r}.completes
49 if ev{v}.active{1}.event == EventType.DEP && ev{v}.active{1}.class == r && ev{v}.active{1}.node == ist
50 D1 = D1 + sparse(F{v});
56 A = map_normalize({Q-A1, A1});
57 pie_arv = map_pie(A); % state seen upon arrival of a
class-r job
58 D = map_normalize({Q-D1, D1});
60 nonZeroRates = abs(Q(Q~=0));
61 nonZeroRates = nonZeroRates( nonZeroRates > GlobalConstants.FineTol );
62 T = abs(100/min(nonZeroRates)); % solve ode until T = 100 events with the slowest rate
63 dT = T/100000; % solve ode until T = 100 events with the slowest rate
66 rorig = chain.index{ir};
67 RD{ist,rorig} = zeros(length(tset),2);
69 if year(matlabRelease.Date)>2023 || strcmpi(matlabRelease.Release,
"R2023b")
71 RD{ist,rorig}(1:length(tset),1) = 1-sum(expmv(D{1}
',pie_arv',tset)
' ,2);
72 RD{ist,rorig}(1:length(tset),2) = tset;
74 if RD{ist,rorig}(t,1)>1-GlobalConstants.CoarseTol
75 RD{ist,rorig}(t+1:end,:)=[];
79 else % no expmv function available
81 RD{ist,rorig}(t,2) = tset(t);
82 RD{ist,rorig}(t,1) = 1-pie_arv * expm(D{1}*tset(t)) * ones(length(D{1}),1);
83 if RD{ist,rorig}(t,1)>1-GlobalConstants.CoarseTol
84 RD{ist,rorig}(t+1:end,:)=[];