1function sampleResult = sample(self, node, numSamples)
2% SAMPLERESULT = SAMPLE(NODE, NUMSAMPLES) Returns sample path at a node
4% @brief Generates a discrete-
event sample path showing state evolution at a node
6% This method runs a DES transient simulation and records the sequence
7% of states visited at a specified station along with timing information.
9% @param self SolverDES instance
10% @param node Queue or node
object to sample
11% @param numSamples Number of time points to sample
13% @
return sampleResult Structure containing the sample path with fields:
14% - sampleResult.handle: Reference to the sampled node
15% - sampleResult.t: Vector of time points
16% - sampleResult.state: Matrix of states at each time point
17% - sampleResult.event: Cell array of events
18% - sampleResult.isaggregate: Boolean
false (detailed sample)
20% @see sampleAggr - Returns sample path aggregated over phases
21% @see sampleSys - Returns system-wide sample path
25% model = Network(
'MM1');
26% % ... model setup ...
27% solver = SolverDES(model,
'seed', 42);
28% queue = model.nodes{1};
29% result = solver.sample(queue, 1000);
33 numSamples = self.options.samples;
36% Convert model to Java
37jmodel = LINE2JLINE(self.model);
39% Create Java DES options
40joptions = jline.solvers.des.DESOptions();
41joptions.samples = self.options.samples;
42joptions.seed = self.options.seed;
45jsolver = jline.solvers.des.SolverDES(jmodel, joptions);
47% Get stateful node from model
48sn = self.model.getStruct;
55% Find the corresponding Java node
56statefulNodes = jmodel.getStatefulNodes();
57isf = sn.nodeToStateful(nodeIdx);
58jnode = statefulNodes.get(isf - 1); % Java
is 0-indexed
60% Call Java sample method
61jresult = jsolver.sample(jnode, numSamples);
63% Convert Java result to MATLAB structure
64sampleResult = struct();
65sampleResult.handle = node;
69 sampleResult.t = JLINE.from_jline_matrix(jresult.t);
75if ~isempty(jresult.state) && isa(jresult.state, 'jline.util.matrix.Matrix')
76 sampleResult.state = JLINE.from_jline_matrix(jresult.state);
78 sampleResult.state = [];
82if ~isempty(jresult.event) && isa(jresult.event, 'jline.util.matrix.Matrix')
83 sampleResult.event = JLINE.from_jline_matrix(jresult.event);
85 sampleResult.event = {};
88sampleResult.isaggregate = jresult.isAggregate;
89sampleResult.nodeIndex = nodeIdx;
90sampleResult.numSamples = jresult.numSamples;