LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
sampleSys.m
1function tranSysState = sampleSys(self, numSamples)
2% TRANSYSSTATE = SAMPLESYS(NUMSAMPLES)
3options = self.getOptions;
4options.force = true;
5if isempty(self.result) || ~isfield(self.result,'infGen')
6 runAnalyzer(self);
7end
8[infGen, eventFilt] = getGenerator(self);
9stateSpace = getStateSpace(self);
10stateSpaceAggr = getStateSpaceAggr(self);
11
12initState = sn.state;
13nst = cumsum([1,cellfun(@length,initState)']);
14s0 = cell2mat(initState(:)');
15
16% set initial state
17pi0 = zeros(1,size(stateSpace,1));
18pi0(matchrow(stateSpace,s0))=1;
19
20% filter all CTMC events as a marked Markovian arrival process
21D1 = cellsum(eventFilt);
22D0 = infGen-D1;
23MMAP = mmap_normalize([{D0},{D1},eventFilt(:)']);
24
25% now sampel the MMAP
26[sjt,event,~,~,sts] = mmap_sample(MMAP,numSamples, pi0);
27
28sn = self.getStruct;
29tranSysState = struct();
30tranSysState.handle = self.model.getStatefulNodes';
31tranSysState.t = cumsum([0,sjt(1:end-1)']');
32for isf=1:length(initState)
33 tranSysState.state{isf} = stateSpace(sts,(nst(isf):nst(isf+1)-1));
34end
35
36tranSysState.event = {};
37for e = 1:length(event)
38 for a=1:length(sn.sync{event(e)}.active)
39 tranSysState.event{end+1} = sn.sync{event(e)}.active{a};
40 tranSysState.event{end}.t = tranSysState.t(e);
41 end
42 for p=1:length(sn.sync{event(e)}.passive)
43 tranSysState.event{end+1} = sn.sync{event(e)}.passive{p};
44 tranSysState.event{end}.t = tranSysState.t(e);
45 end
46end
47tranSysState.isaggregate = false;
48
49end