1function [simDoc, section] = saveForkStrategy(self, simDoc, section, ind)
2% [SIMDOC, SECTION] = SAVEFORKSTRATEGY(SIMDOC, SECTION, NODEIDX)
4% Copyright (c) 2012-2026, Imperial College London
10exportClasses = self.getExportableClasses();
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);
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);
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);
36strategyNode = simDoc.createElement(
'parameter');
37strategyNode.setAttribute(
'array',
'true');
38strategyNode.setAttribute(
'classPath',
'jmt.engine.NetStrategies.ForkStrategy');
39strategyNode.setAttribute(
'name',
'ForkStrategy');
42numOfClasses = sn.nclasses;
44 % Skip
classes that should not be exported to JMT
49 refClassNode = simDoc.createElement(
'refClass');
50 refClassNode.appendChild(simDoc.createTextNode(sn.classnames{r}));
51 strategyNode.appendChild(refClassNode);
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})));
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);
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);
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);
114 classStratNode.appendChild(classStratNode2);
115 strategyNode.appendChild(classStratNode);
117section.appendChild(strategyNode);