LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
saveSwitchoverStrategy.m
1function [simDoc, section] = saveSwitchoverStrategy(self, simDoc, section, ind)
2% [SIMDOC, SECTION] = SAVESWITCHOVERSTRATEGY(SIMDOC, SECTION, NODEIDX)
3
4% Copyright (c) 2012-2026, Imperial College London
5% All rights reserved.
6
7
8sn = self.getStruct;
9
10% Get exportable classes (handles cache classes and class-switching)
11exportClasses = self.getExportableClasses();
12
13K = sn.nclasses;
14isf = sn.nodeToStation(ind);
15if sn.sched(isf) == SchedStrategy.POLLING
16 paramNode = simDoc.createElement('parameter');
17 paramNode.setAttribute('array', 'true');
18 paramNode.setAttribute('classPath', 'jmt.engine.NetStrategies.ServiceStrategy');
19 paramNode.setAttribute('name', 'SwitchoverStrategy');
20 for r=1:K
21 procid_ir = sn.nodeparam{ind}{r}.switchoverProcId;
22 phases_ir = length(sn.nodeparam{ind}{r}.switchoverTime{1});
23 proc_ir = sn.nodeparam{ind}{r}.switchoverTime;
24 pie_ir = map_pie(proc_ir);
25 rates_ir = map_lambda(proc_ir);
26 scv_ir = map_scv(proc_ir);
27 refClassNode = simDoc.createElement('refClass');
28 refClassNode.appendChild(simDoc.createTextNode(sn.classnames{r}));
29 paramNode.appendChild(refClassNode);
30 serviceTimeStrategyNode = getServiceTimeStrategyNode(simDoc, procid_ir, phases_ir, proc_ir, pie_ir, rates_ir, scv_ir);
31 paramNode.appendChild(serviceTimeStrategyNode);
32 end
33 section.appendChild(paramNode);
34else
35 paramNode = simDoc.createElement('parameter');
36 paramNode.setAttribute('array', 'true');
37 paramNode.setAttribute('classPath', 'java.lang.Object');
38 paramNode.setAttribute('name', 'SwitchoverStrategy');
39 for r=1:K
40 % Skip classes that should not be exported to JMT
41 if ~exportClasses(r)
42 continue;
43 end
44
45 refClassNode = simDoc.createElement('refClass');
46 refClassNode.appendChild(simDoc.createTextNode(sn.classnames{r}));
47 paramNode.appendChild(refClassNode);
48
49 subParClassRow = simDoc.createElement('subParameter');
50 subParClassRow.setAttribute('array', 'true');
51 subParClassRow.setAttribute('classPath', 'jmt.engine.NetStrategies.ServiceStrategy');
52 subParClassRow.setAttribute('name', 'SwitchoverStrategy');
53 for s=1:K
54 % Skip classes that should not be exported to JMT
55 if ~exportClasses(s)
56 continue;
57 end
58
59 refClassNode = simDoc.createElement('refClass');
60 refClassNode.appendChild(simDoc.createTextNode(sn.classnames{s}));
61 subParClassRow.appendChild(refClassNode);
62 procid_irs = sn.nodeparam{ind}{r}.switchoverProcId(s);
63 phases_irs = length(sn.nodeparam{ind}{r}.switchoverTime{s});
64 proc_irs = sn.nodeparam{ind}{r}.switchoverTime{s};
65 pie_irs = map_pie(proc_irs);
66 rates_irs = map_lambda(proc_irs);
67 scv_irs = map_scv(proc_irs);
68 subParClassCell = getServiceTimeStrategyNode(simDoc, procid_irs, phases_irs, proc_irs, pie_irs, rates_irs, scv_irs);
69 paramNode.appendChild(subParClassCell);
70 subParClassRow.appendChild(subParClassCell);
71 end
72 paramNode.appendChild(subParClassRow);
73 end
74 section.appendChild(paramNode);
75end
76end
77
78function serviceTimeStrategyNode = getServiceTimeStrategyNode(simDoc, procid_ir, phases_ir, proc_ir, pie_ir, rates_ir, scv_ir)
79serviceTimeStrategyNode = simDoc.createElement('subParameter');
80if procid_ir == ProcessType.DISABLED
81 serviceTimeStrategyNode.setAttribute('classPath', 'jmt.engine.NetStrategies.ServiceStrategies.DisabledServiceTimeStrategy');
82 serviceTimeStrategyNode.setAttribute('name', 'DisabledServiceTimeStrategy');
83elseif procid_ir == ProcessType.IMMEDIATE
84 serviceTimeStrategyNode.setAttribute('classPath', 'jmt.engine.NetStrategies.ServiceStrategies.ZeroServiceTimeStrategy');
85 serviceTimeStrategyNode.setAttribute('name', 'ZeroServiceTimeStrategy');
86elseif procid_ir == ProcessType.PH || procid_ir == ProcessType.APH || procid_ir == ProcessType.COXIAN || (phases_ir>2 && procid_ir == ProcessType.HYPEREXP) %|| (phases_ir>2 && procid_ir == ProcessType.COXIAN) || (phases_ir>2 && procid_ir == ProcessType.HYPEREXP)
87 serviceTimeStrategyNode.setAttribute('classPath', 'jmt.engine.NetStrategies.ServiceStrategies.ServiceTimeStrategy');
88 serviceTimeStrategyNode.setAttribute('name', 'ServiceTimeStrategy');
89 distributionNode = simDoc.createElement('subParameter');
90 distributionNode.setAttribute('classPath', 'jmt.engine.random.PhaseTypeDistr');
91 distributionNode.setAttribute('name', 'Phase-Type');
92 distrParNode = simDoc.createElement('subParameter');
93 distrParNode.setAttribute('classPath', 'jmt.engine.random.PhaseTypePar');
94 distrParNode.setAttribute('name', 'distrPar');
95
96 subParNodeAlpha = simDoc.createElement('subParameter');
97 subParNodeAlpha.setAttribute('array', 'true');
98 subParNodeAlpha.setAttribute('classPath', 'java.lang.Object');
99 subParNodeAlpha.setAttribute('name', 'alpha');
100 subParNodeAlphaVec = simDoc.createElement('subParameter');
101 subParNodeAlphaVec.setAttribute('array', 'true');
102 subParNodeAlphaVec.setAttribute('classPath', 'java.lang.Object');
103 subParNodeAlphaVec.setAttribute('name', 'vector');
104 PH = proc_ir;
105 alpha = abs(pie_ir);
106 for k=1:phases_ir
107 subParNodeAlphaElem = simDoc.createElement('subParameter');
108 subParNodeAlphaElem.setAttribute('classPath', 'java.lang.Double');
109 subParNodeAlphaElem.setAttribute('name', 'entry');
110 subParValue = simDoc.createElement('value');
111 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',alpha(k))));
112 subParNodeAlphaElem.appendChild(subParValue);
113 subParNodeAlphaVec.appendChild(subParNodeAlphaElem);
114 end
115
116 subParNodeT = simDoc.createElement('subParameter');
117 subParNodeT.setAttribute('array', 'true');
118 subParNodeT.setAttribute('classPath', 'java.lang.Object');
119 subParNodeT.setAttribute('name', 'T');
120 T = PH{1};
121 for k=1:phases_ir
122 subParNodeTvec = simDoc.createElement('subParameter');
123 subParNodeTvec.setAttribute('array', 'true');
124 subParNodeTvec.setAttribute('classPath', 'java.lang.Object');
125 subParNodeTvec.setAttribute('name', 'vector');
126 for j=1:phases_ir
127 subParNodeTElem = simDoc.createElement('subParameter');
128 subParNodeTElem.setAttribute('classPath', 'java.lang.Double');
129 subParNodeTElem.setAttribute('name', 'entry');
130 subParValue = simDoc.createElement('value');
131 if k==j
132 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',-abs(T(k,j)))));
133 else
134 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',abs(T(k,j)))));
135 end
136 subParNodeTElem.appendChild(subParValue);
137 subParNodeTvec.appendChild(subParNodeTElem);
138 end
139 subParNodeT.appendChild(subParNodeTvec);
140 end
141
142 subParNodeAlpha.appendChild(subParNodeAlphaVec);
143 distrParNode.appendChild(subParNodeAlpha);
144 distrParNode.appendChild(subParNodeT);
145 serviceTimeStrategyNode.appendChild(distributionNode);
146 serviceTimeStrategyNode.appendChild(distrParNode);
147elseif procid_ir == ProcessType.MAP
148 serviceTimeStrategyNode.setAttribute('classPath', 'jmt.engine.NetStrategies.ServiceStrategies.ServiceTimeStrategy');
149 serviceTimeStrategyNode.setAttribute('name', 'ServiceTimeStrategy');
150 distributionNode = simDoc.createElement('subParameter');
151 distributionNode.setAttribute('classPath', 'jmt.engine.random.MAPDistr');
152 distributionNode.setAttribute('name', 'Burst (MAP)');
153 distrParNode = simDoc.createElement('subParameter');
154 distrParNode.setAttribute('classPath', 'jmt.engine.random.MAPPar');
155 distrParNode.setAttribute('name', 'distrPar');
156
157 MAP = proc_ir;
158
159 subParNodeD0 = simDoc.createElement('subParameter');
160 subParNodeD0.setAttribute('array', 'true');
161 subParNodeD0.setAttribute('classPath', 'java.lang.Object');
162 subParNodeD0.setAttribute('name', 'D0');
163 D0 = MAP{1};
164 for k=1:phases_ir
165 subParNodeD0vec = simDoc.createElement('subParameter');
166 subParNodeD0vec.setAttribute('array', 'true');
167 subParNodeD0vec.setAttribute('classPath', 'java.lang.Object');
168 subParNodeD0vec.setAttribute('name', 'vector');
169 for j=1:phases_ir
170 subParNodeD0Elem = simDoc.createElement('subParameter');
171 subParNodeD0Elem.setAttribute('classPath', 'java.lang.Double');
172 subParNodeD0Elem.setAttribute('name', 'entry');
173 subParValue = simDoc.createElement('value');
174 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',D0(k,j))));
175 subParNodeD0Elem.appendChild(subParValue);
176 subParNodeD0vec.appendChild(subParNodeD0Elem);
177 end
178 subParNodeD0.appendChild(subParNodeD0vec);
179 end
180 distrParNode.appendChild(subParNodeD0);
181
182 subParNodeD1 = simDoc.createElement('subParameter');
183 subParNodeD1.setAttribute('array', 'true');
184 subParNodeD1.setAttribute('classPath', 'java.lang.Object');
185 subParNodeD1.setAttribute('name', 'D1');
186 D1 = MAP{2};
187 for k=1:phases_ir
188 subParNodeD1vec = simDoc.createElement('subParameter');
189 subParNodeD1vec.setAttribute('array', 'true');
190 subParNodeD1vec.setAttribute('classPath', 'java.lang.Object');
191 subParNodeD1vec.setAttribute('name', 'vector');
192 for j=1:phases_ir
193 subParNodeD1Elem = simDoc.createElement('subParameter');
194 subParNodeD1Elem.setAttribute('classPath', 'java.lang.Double');
195 subParNodeD1Elem.setAttribute('name', 'entry');
196 subParValue = simDoc.createElement('value');
197 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',D1(k,j))));
198 subParNodeD1Elem.appendChild(subParValue);
199 subParNodeD1vec.appendChild(subParNodeD1Elem);
200 end
201 subParNodeD1.appendChild(subParNodeD1vec);
202 end
203 distrParNode.appendChild(subParNodeD1);
204 serviceTimeStrategyNode.appendChild(distributionNode);
205 serviceTimeStrategyNode.appendChild(distrParNode);
206else
207 serviceTimeStrategyNode.setAttribute('classPath', 'jmt.engine.NetStrategies.ServiceStrategies.ServiceTimeStrategy');
208 serviceTimeStrategyNode.setAttribute('name', 'ServiceTimeStrategy');
209
210 distributionNode = simDoc.createElement('subParameter');
211 switch procid_ir
212 case ProcessType.DET
213 javaClass = 'jmt.engine.random.DeterministicDistr';
214 javaParClass = 'jmt.engine.random.DeterministicDistrPar';
215 case ProcessType.COXIAN
216 javaClass = 'jmt.engine.random.CoxianDistr';
217 javaParClass = 'jmt.engine.random.CoxianPar';
218 case ProcessType.ERLANG
219 javaClass = 'jmt.engine.random.Erlang';
220 javaParClass = 'jmt.engine.random.ErlangPar';
221 case ProcessType.EXP
222 javaClass = 'jmt.engine.random.Exponential';
223 javaParClass = 'jmt.engine.random.ExponentialPar';
224 case ProcessType.GAMMA
225 javaClass = 'jmt.engine.random.GammaDistr';
226 javaParClass = 'jmt.engine.random.GammaDistrPar';
227 case ProcessType.HYPEREXP
228 javaClass = 'jmt.engine.random.HyperExp';
229 javaParClass = 'jmt.engine.random.HyperExpPar';
230 case ProcessType.PARETO
231 javaClass = 'jmt.engine.random.Pareto';
232 javaParClass = 'jmt.engine.random.ParetoPar';
233 case ProcessType.WEIBULL
234 javaClass = 'jmt.engine.random.Weibull';
235 javaParClass = 'jmt.engine.random.WeibullPar';
236 case ProcessType.LOGNORMAL
237 javaClass = 'jmt.engine.random.Lognormal';
238 javaParClass = 'jmt.engine.random.LognormalPar';
239 case ProcessType.UNIFORM
240 javaClass = 'jmt.engine.random.Uniform';
241 javaParClass = 'jmt.engine.random.UniformPar';
242 case ProcessType.MMPP2
243 javaClass = 'jmt.engine.random.MMPP2Distr';
244 javaParClass = 'jmt.engine.random.MMPP2Par';
245 case {ProcessType.REPLAYER, ProcessType.TRACE}
246 javaClass = 'jmt.engine.random.Replayer';
247 javaParClass = 'jmt.engine.random.ReplayerPar';
248 end
249 distributionNode.setAttribute('classPath', javaClass);
250 switch procid_ir
251 case {ProcessType.REPLAYER, ProcessType.TRACE}
252 distributionNode.setAttribute('name', 'Replayer');
253 case ProcessType.EXP
254 distributionNode.setAttribute('name', 'Exponential');
255 case ProcessType.HYPEREXP
256 distributionNode.setAttribute('name', 'Hyperexponential');
257 otherwise
258 distributionNode.setAttribute('name', ProcessType.toText(ProcessType.fromId(procid_ir)));
259 end
260 serviceTimeStrategyNode.appendChild(distributionNode);
261
262 distrParNode = simDoc.createElement('subParameter');
263 distrParNode.setAttribute('classPath', javaParClass);
264 distrParNode.setAttribute('name', 'distrPar');
265
266 switch procid_ir
267 case ProcessType.DET
268 subParNodeAlpha = simDoc.createElement('subParameter');
269 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
270 subParNodeAlpha.setAttribute('name', 't');
271 subParValue = simDoc.createElement('value');
272 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',1/rates_ir)));
273 subParNodeAlpha.appendChild(subParValue);
274 distrParNode.appendChild(subParNodeAlpha);
275 case ProcessType.EXP
276 subParNodeAlpha = simDoc.createElement('subParameter');
277 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
278 subParNodeAlpha.setAttribute('name', 'lambda');
279 subParValue = simDoc.createElement('value');
280 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',rates_ir)));
281 subParNodeAlpha.appendChild(subParValue);
282 distrParNode.appendChild(subParNodeAlpha);
283 case ProcessType.HYPEREXP
284 subParNodeAlpha = simDoc.createElement('subParameter');
285 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
286 subParNodeAlpha.setAttribute('name', 'p');
287 subParValue = simDoc.createElement('value');
288 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',pie_ir(1))));
289 subParNodeAlpha.appendChild(subParValue);
290 distrParNode.appendChild(subParNodeAlpha);
291 subParNodeAlpha = simDoc.createElement('subParameter');
292 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
293 subParNodeAlpha.setAttribute('name', 'lambda1');
294 subParValue = simDoc.createElement('value');
295 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',-proc_ir{1}(1,1))));
296 subParNodeAlpha.appendChild(subParValue);
297 distrParNode.appendChild(subParNodeAlpha);
298 subParNodeAlpha = simDoc.createElement('subParameter');
299 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
300 subParNodeAlpha.setAttribute('name', 'lambda2');
301 subParValue = simDoc.createElement('value');
302 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',-proc_ir{1}(2,2))));
303 subParNodeAlpha.appendChild(subParValue);
304 distrParNode.appendChild(subParNodeAlpha);
305 case ProcessType.ERLANG
306 subParNodeAlpha = simDoc.createElement('subParameter');
307 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
308 subParNodeAlpha.setAttribute('name', 'alpha');
309 subParValue = simDoc.createElement('value');
310 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',rates_ir*phases_ir)));
311 subParNodeAlpha.appendChild(subParValue);
312 distrParNode.appendChild(subParNodeAlpha);
313 subParNodeAlpha = simDoc.createElement('subParameter');
314 subParNodeAlpha.setAttribute('classPath', 'java.lang.Long');
315 subParNodeAlpha.setAttribute('name', 'r');
316 subParValue = simDoc.createElement('value');
317 subParValue.appendChild(simDoc.createTextNode(sprintf('%d',phases_ir)));
318 subParNodeAlpha.appendChild(subParValue);
319 distrParNode.appendChild(subParNodeAlpha);
320 case ProcessType.MMPP2
321 subParNodeAlpha = simDoc.createElement('subParameter');
322 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
323 subParNodeAlpha.setAttribute('name', 'lambda0');
324 subParValue = simDoc.createElement('value');
325 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',proc_ir{2}(1,1))));
326 subParNodeAlpha.appendChild(subParValue);
327 distrParNode.appendChild(subParNodeAlpha);
328 subParNodeAlpha = simDoc.createElement('subParameter');
329 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
330 subParNodeAlpha.setAttribute('name', 'lambda1');
331 subParValue = simDoc.createElement('value');
332 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',proc_ir{2}(2,2))));
333 subParNodeAlpha.appendChild(subParValue);
334 distrParNode.appendChild(subParNodeAlpha);
335 subParNodeAlpha = simDoc.createElement('subParameter');
336 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
337 subParNodeAlpha.setAttribute('name', 'sigma0');
338 subParValue = simDoc.createElement('value');
339 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',proc_ir{1}(1,2))));
340 subParNodeAlpha.appendChild(subParValue);
341 distrParNode.appendChild(subParNodeAlpha);
342 subParNodeAlpha = simDoc.createElement('subParameter');
343 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
344 subParNodeAlpha.setAttribute('name', 'sigma1');
345 subParValue = simDoc.createElement('value');
346 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',proc_ir{1}(2,1))));
347 subParNodeAlpha.appendChild(subParValue);
348 distrParNode.appendChild(subParNodeAlpha);
349 case ProcessType.GAMMA
350 subParNodeAlpha = simDoc.createElement('subParameter');
351 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
352 subParNodeAlpha.setAttribute('name', 'alpha');
353 subParValue = simDoc.createElement('value');
354 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',1/scv_ir)));
355 subParNodeAlpha.appendChild(subParValue);
356 distrParNode.appendChild(subParNodeAlpha);
357 subParNodeAlpha = simDoc.createElement('subParameter');
358 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
359 subParNodeAlpha.setAttribute('name', 'beta');
360 subParValue = simDoc.createElement('value');
361 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',scv_ir/rates_ir)));
362 subParNodeAlpha.appendChild(subParValue);
363 distrParNode.appendChild(subParNodeAlpha);
364 case ProcessType.PARETO
365 shape = sqrt(1+1/scv_ir)+1;
366 scale = 1/rates_ir * (shape - 1) / shape;
367 subParNodeAlpha = simDoc.createElement('subParameter');
368 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
369 subParNodeAlpha.setAttribute('name', 'alpha'); % shape
370 subParValue = simDoc.createElement('value');
371 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',shape)));
372 subParNodeAlpha.appendChild(subParValue);
373 distrParNode.appendChild(subParNodeAlpha);
374 subParNodeAlpha = simDoc.createElement('subParameter');
375 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
376 subParNodeAlpha.setAttribute('name', 'k'); % scale
377 subParValue = simDoc.createElement('value');
378 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',scale)));
379 subParNodeAlpha.appendChild(subParValue);
380 distrParNode.appendChild(subParNodeAlpha);
381 case ProcessType.WEIBULL
382 c = sqrt(scv_ir);
383 rval = c^(-1.086); % Justus approximation (1976)
384 alpha = 1/rates_ir / gamma(1+1/rval);
385 subParNodeAlpha = simDoc.createElement('subParameter');
386 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
387 subParNodeAlpha.setAttribute('name', 'alpha'); % shape
388 subParValue = simDoc.createElement('value');
389 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',alpha)));
390 subParNodeAlpha.appendChild(subParValue);
391 distrParNode.appendChild(subParNodeAlpha);
392 subParNodeAlpha = simDoc.createElement('subParameter');
393 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
394 subParNodeAlpha.setAttribute('name', 'r'); % scale
395 subParValue = simDoc.createElement('value');
396 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',rval)));
397 subParNodeAlpha.appendChild(subParValue);
398 distrParNode.appendChild(subParNodeAlpha);
399 case ProcessType.LOGNORMAL
400 c = sqrt(scv_ir);
401 mu = log(1/rates_ir / sqrt(c*c + 1));
402 sigma = sqrt(log(c*c + 1));
403 subParNodeAlpha = simDoc.createElement('subParameter');
404 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
405 subParNodeAlpha.setAttribute('name', 'mu'); % shape
406 subParValue = simDoc.createElement('value');
407 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',mu)));
408 subParNodeAlpha.appendChild(subParValue);
409 distrParNode.appendChild(subParNodeAlpha);
410 subParNodeAlpha = simDoc.createElement('subParameter');
411 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
412 subParNodeAlpha.setAttribute('name', 'sigma'); % scale
413 subParValue = simDoc.createElement('value');
414 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',sigma)));
415 subParNodeAlpha.appendChild(subParValue);
416 distrParNode.appendChild(subParNodeAlpha);
417 case ProcessType.UNIFORM
418 maxVal = ((sqrt(12*scv_ir/rates_ir^2))+2/rates_ir)/2;
419 minVal = 2/rates_ir-maxVal;
420 subParNodeAlpha = simDoc.createElement('subParameter');
421 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
422 subParNodeAlpha.setAttribute('name', 'min'); % shape
423 subParValue = simDoc.createElement('value');
424 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',minVal)));
425 subParNodeAlpha.appendChild(subParValue);
426 distrParNode.appendChild(subParNodeAlpha);
427 subParNodeAlpha = simDoc.createElement('subParameter');
428 subParNodeAlpha.setAttribute('classPath', 'java.lang.Double');
429 subParNodeAlpha.setAttribute('name', 'max'); % scale
430 subParValue = simDoc.createElement('value');
431 subParValue.appendChild(simDoc.createTextNode(sprintf('%.12f',maxVal)));
432 subParNodeAlpha.appendChild(subParValue);
433 distrParNode.appendChild(subParNodeAlpha);
434 case {ProcessType.REPLAYER, ProcessType.TRACE}
435 subParNodeAlpha = simDoc.createElement('subParameter');
436 subParNodeAlpha.setAttribute('classPath', 'java.lang.String');
437 subParNodeAlpha.setAttribute('name', 'fileName');
438 subParValue = simDoc.createElement('value');
439 subParValue.appendChild(simDoc.createTextNode(sn.nodeparam{ind}{r}.fileName));
440 subParNodeAlpha.appendChild(subParValue);
441 distrParNode.appendChild(subParNodeAlpha);
442 end
443 serviceTimeStrategyNode.appendChild(distrParNode);
444end
445end