LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
saveFiringOutcomes.m
1function [simDoc, section] = saveFiringOutcomes(self, simDoc, section, ind)
2% [SIMDOC, SECTION] = SAVEFIRINGOUTCOMES(SIMDOC, SECTION, NODEIDX)
3
4% Copyright (c) 2012-2026, Imperial College London
5% All rights reserved.
6
7firingOutcomesNode = simDoc.createElement('parameter');
8firingOutcomesNode.setAttribute('array', 'true');
9firingOutcomesNode.setAttribute('classPath', 'jmt.engine.NetStrategies.TransitionUtilities.TransitionMatrix');
10firingOutcomesNode.setAttribute('name', 'firingOutcomes');
11
12sn = self.getStruct;
13outputs = [find(sn.connmatrix(ind,:))];
14connections = {sn.nodenames{outputs}};
15numOfOutput = length(connections);
16
17numOfModes = sn.nodeparam{ind}.nmodes;
18numOfClasses = length(self.model.classes);
19for m=1:numOfModes
20
21 subFiringOutcomeNode = simDoc.createElement('subParameter');
22 subFiringOutcomeNode.setAttribute('classPath', 'jmt.engine.NetStrategies.TransitionUtilities.TransitionMatrix');
23 subFiringOutcomeNode.setAttribute('name', 'firingOutcome');
24
25 subFiringVectorsNode = simDoc.createElement('subParameter');
26 subFiringVectorsNode.setAttribute('array', 'true');
27 subFiringVectorsNode.setAttribute('classPath', 'jmt.engine.NetStrategies.TransitionUtilities.TransitionVector');
28 subFiringVectorsNode.setAttribute('name', 'firingVectors');
29
30 for k=1:(numOfOutput)
31 subFiringVectorNode = simDoc.createElement('subParameter');
32 subFiringVectorNode.setAttribute('classPath', 'jmt.engine.NetStrategies.TransitionUtilities.TransitionVector');
33 subFiringVectorNode.setAttribute('name', 'firingVector');
34
35 subStationNameNode = simDoc.createElement('subParameter');
36 subStationNameNode.setAttribute('classPath', 'java.lang.String');
37 subStationNameNode.setAttribute('name', 'stationName');
38
39 placeNameValueNode = simDoc.createElement('value');
40 placeNameValueNode.appendChild(simDoc.createTextNode(connections(k)));
41 subStationNameNode.appendChild(placeNameValueNode);
42
43 subFiringVectorNode.appendChild(subStationNameNode);
44
45 subFiringEntriesNode = simDoc.createElement('subParameter');
46 subFiringEntriesNode.setAttribute('array', 'true');
47 subFiringEntriesNode.setAttribute('classPath', 'java.lang.Integer');
48 subFiringEntriesNode.setAttribute('name', 'firingEntries');
49
50 for j=1:(numOfClasses)
51 currentClass = self.model.classes{j,1};
52
53 refClassNode = simDoc.createElement('refClass');
54 refClassNode.appendChild(simDoc.createTextNode(currentClass.name));
55 subFiringEntriesNode.appendChild(refClassNode);
56
57 subParameterNode = simDoc.createElement('subParameter');
58 subParameterNode.setAttribute('classPath', 'java.lang.Integer');
59 subParameterNode.setAttribute('name', 'firingEntry');
60
61 valueNode2 = simDoc.createElement('value');
62 valueNode2.appendChild(simDoc.createTextNode(int2str(sn.nodeparam{ind}.firing{m}(outputs(k),j))));
63
64 subParameterNode.appendChild(valueNode2);
65 subFiringEntriesNode.appendChild(subParameterNode);
66 subFiringVectorNode.appendChild(subFiringEntriesNode);
67 end
68 subFiringVectorsNode.appendChild(subFiringVectorNode);
69 end
70
71 subFiringOutcomeNode.appendChild(subFiringVectorsNode);
72 firingOutcomesNode.appendChild(subFiringOutcomeNode);
73end
74section.appendChild(firingOutcomesNode);
75end