LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
saveForkStrategy.m
1function [simDoc, section] = saveForkStrategy(self, simDoc, section, ind)
2% [SIMDOC, SECTION] = SAVEFORKSTRATEGY(SIMDOC, SECTION, NODEIDX)
3
4% Copyright (c) 2012-2026, Imperial College London
5% All rights reserved.
6
7sn=self.getStruct;
8
9% Get exportable classes (handles cache classes and class-switching)
10exportClasses = self.getExportableClasses();
11
12jplNode = simDoc.createElement('parameter');
13jplNode.setAttribute('classPath', 'java.lang.Integer');
14jplNode.setAttribute('name', 'jobsPerLink');
15valueNode = simDoc.createElement('value');
16valueNode.appendChild(simDoc.createTextNode(int2str(sn.nodeparam{ind}.fanOut)));
17jplNode.appendChild(valueNode);
18section.appendChild(jplNode);
19
20blockNode = simDoc.createElement('parameter');
21blockNode.setAttribute('classPath', 'java.lang.Integer');
22blockNode.setAttribute('name', 'block');
23valueNode = simDoc.createElement('value');
24valueNode.appendChild(simDoc.createTextNode(int2str(-1)));
25blockNode.appendChild(valueNode);
26section.appendChild(blockNode);
27
28issimplNode = simDoc.createElement('parameter');
29issimplNode.setAttribute('classPath', 'java.lang.Boolean');
30issimplNode.setAttribute('name', 'isSimplifiedFork');
31valueNode = simDoc.createElement('value');
32valueNode.appendChild(simDoc.createTextNode('true'));
33issimplNode.appendChild(valueNode);
34section.appendChild(issimplNode);
35
36strategyNode = simDoc.createElement('parameter');
37strategyNode.setAttribute('array', 'true');
38strategyNode.setAttribute('classPath', 'jmt.engine.NetStrategies.ForkStrategy');
39strategyNode.setAttribute('name', 'ForkStrategy');
40
41i = ind;
42numOfClasses = sn.nclasses;
43for r=1:numOfClasses
44 % Skip classes that should not be exported to JMT
45 if ~exportClasses(r)
46 continue;
47 end
48
49 refClassNode = simDoc.createElement('refClass');
50 refClassNode.appendChild(simDoc.createTextNode(sn.classnames{r}));
51 strategyNode.appendChild(refClassNode);
52
53 classStratNode = simDoc.createElement('subParameter');
54 classStratNode.setAttribute('classPath', 'jmt.engine.NetStrategies.ForkStrategies.ProbabilitiesFork');
55 classStratNode.setAttribute('name', 'Branch Probabilities');
56 classStratNode2 = simDoc.createElement('subParameter');
57 classStratNode2.setAttribute('array', 'true');
58 classStratNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.ForkStrategies.OutPath');
59 classStratNode2.setAttribute('name', 'EmpiricalEntryArray');
60 switch sn.routing(i,r)
61 case RoutingStrategy.PROB
62 for k=find(sn.connmatrix(i,:))
63 classStratNode3 = simDoc.createElement('subParameter');
64 classStratNode3.setAttribute('classPath', 'jmt.engine.NetStrategies.ForkStrategies.OutPath');
65 classStratNode3.setAttribute('name', 'OutPathEntry');
66 classStratNode4 = simDoc.createElement('subParameter');
67 classStratNode4.setAttribute('classPath', 'jmt.engine.random.EmpiricalEntry');
68 classStratNode4.setAttribute('name', 'outUnitProbability');
69 classStratNode4Station = simDoc.createElement('subParameter');
70 classStratNode4Station.setAttribute('classPath', 'java.lang.String');
71 classStratNode4Station.setAttribute('name', 'stationName');
72 classStratNode4StationValueNode = simDoc.createElement('value');
73 classStratNode4StationValueNode.appendChild(simDoc.createTextNode(sprintf('%s',sn.nodenames{k})));
74 end
75 classStratNode4Station.appendChild(classStratNode4StationValueNode);
76 classStratNode3.appendChild(classStratNode4Station);
77 classStratNode4Probability = simDoc.createElement('subParameter');
78 classStratNode4Probability.setAttribute('classPath', 'java.lang.Double');
79 classStratNode4Probability.setAttribute('name', 'probability');
80 classStratNode4ProbabilityValueNode = simDoc.createElement('value');
81 classStratNode4ProbabilityValueNode.appendChild(simDoc.createTextNode('1.0'));
82 classStratNode4Probability.appendChild(classStratNode4ProbabilityValueNode);
83
84 classStratNode4b = simDoc.createElement('subParameter');
85 classStratNode4b.setAttribute('classPath', 'jmt.engine.random.EmpiricalEntry');
86 classStratNode4b.setAttribute('array', 'true');
87 classStratNode4b.setAttribute('name', 'JobsPerLinkDis');
88 classStratNode5b = simDoc.createElement('subParameter');
89 classStratNode5b.setAttribute('classPath', 'jmt.engine.random.EmpiricalEntry');
90 classStratNode5b.setAttribute('name', 'EmpiricalEntry');
91 classStratNode5bStation = simDoc.createElement('subParameter');
92 classStratNode5bStation.setAttribute('classPath', 'java.lang.String');
93 classStratNode5bStation.setAttribute('name', 'numbers');
94 classStratNode5bStationValueNode = simDoc.createElement('value');
95 classStratNode5bStationValueNode.appendChild((simDoc.createTextNode(int2str(sn.nodeparam{ind}.fanOut))));
96 classStratNode5bStation.appendChild(classStratNode5bStationValueNode);
97 classStratNode4b.appendChild(classStratNode5bStation);
98 classStratNode5bProbability = simDoc.createElement('subParameter');
99 classStratNode5bProbability.setAttribute('classPath', 'java.lang.Double');
100 classStratNode5bProbability.setAttribute('name', 'probability');
101 classStratNode5bProbabilityValueNode = simDoc.createElement('value');
102 classStratNode5bProbabilityValueNode.appendChild(simDoc.createTextNode('1.0'));
103 classStratNode5bProbability.appendChild(classStratNode5bProbabilityValueNode);
104
105 classStratNode4.appendChild(classStratNode4Station);
106 classStratNode4.appendChild(classStratNode4Probability);
107 classStratNode3.appendChild(classStratNode4);
108 classStratNode5b.appendChild(classStratNode5bStation);
109 classStratNode5b.appendChild(classStratNode5bProbability);
110 classStratNode4b.appendChild(classStratNode5b);
111 classStratNode3.appendChild(classStratNode4b);
112 classStratNode2.appendChild(classStratNode3);
113 end
114 classStratNode.appendChild(classStratNode2);
115 strategyNode.appendChild(classStratNode);
116end
117section.appendChild(strategyNode);
118end