LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
sample.m
1function sampleResult = sample(self, node, numEvents)
2% SAMPLERESULT = SAMPLE(NODE, NUMEVENTS)
3% Generate a sample path (state trajectory) for a stateful node via a fully
4% JSON-mediated transient LDES simulation. Mirrors the Python-native sample().
5%
6% Returns a struct with fields:
7% .handle - the node handle passed in
8% .t - (nTimePoints x 1) time vector
9% .state - (nTimePoints x nclasses) per-class queue-length trajectory
10% .isaggregate- false
11% .nodeIndex - node index
12% .numEvents - number of events (horizon) used
13
14if nargin < 3 || isempty(numEvents)
15 numEvents = 0;
16end
17
18if GlobalConstants.DummyMode
19 sampleResult = [];
20 return
21end
22
23sn = self.model.getStruct;
24if isa(node, 'Node')
25 nodeIdx = node.index;
26else
27 nodeIdx = node;
28end
29
30res = self.runTransientJson(numEvents);
31
32sampleResult = struct();
33sampleResult.handle = node;
34sampleResult.nodeIndex = nodeIdx;
35sampleResult.isaggregate = false;
36sampleResult.numEvents = numEvents;
37
38if isempty(res.t) || isempty(res.QNt)
39 sampleResult.t = [];
40 sampleResult.state = [];
41 return
42end
43
44isf = sn.nodeToStateful(nodeIdx);
45nt = numel(res.t);
46R = sn.nclasses;
47state = zeros(nt, R);
48if isf >= 1 && isf <= numel(res.QNt)
49 classCells = res.QNt{isf};
50 for k = 1:min(R, numel(classCells))
51 cd = classCells{k};
52 if ~isempty(cd)
53 n = min(nt, size(cd, 1));
54 state(1:n, k) = cd(1:n, 1);
55 end
56 end
57end
58
59sampleResult.t = res.t;
60sampleResult.state = state;
61end
Definition Station.m:245