LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
savePutStrategy.m
1function [simDoc, section] = savePutStrategy(self, simDoc, section, ind)
2% [SIMDOC, SECTION] = SAVEPUTSTRATEGY(SIMDOC, SECTION, CURRENTNODE)
3
4% Copyright (c) 2012-2026, Imperial College London
5% All rights reserved.
6queuePutStrategyNode = simDoc.createElement('parameter');
7queuePutStrategyNode.setAttribute('array', 'true');
8queuePutStrategyNode.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategy');
9queuePutStrategyNode.setAttribute('name', 'QueuePutStrategy');
10
11sn = self.getStruct;
12numOfClasses = sn.nclasses;
13exportClasses = self.getExportableClasses();
14for r=1:numOfClasses
15 % Skip classes that should not be exported to JMT
16 if ~exportClasses(r)
17 continue;
18 end
19
20 refClassNode2 = simDoc.createElement('refClass');
21 refClassNode2.appendChild(simDoc.createTextNode(sn.classnames{r}));
22
23 queuePutStrategyNode.appendChild(refClassNode2);
24
25 if ~sn.isstation(ind) % if not a station treat as FCFS
26 subParameterNode2 = simDoc.createElement('subParameter');
27 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.TailStrategy');
28 subParameterNode2.setAttribute('name', 'TailStrategy');
29 else % if a station
30 switch sn.sched(sn.nodeToStation(ind))
31 case SchedStrategy.SIRO
32 subParameterNode2 = simDoc.createElement('subParameter');
33 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.RandStrategy');
34 subParameterNode2.setAttribute('name', 'RandStrategy');
35 case SchedStrategy.LJF
36 subParameterNode2 = simDoc.createElement('subParameter');
37 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.LJFStrategy');
38 subParameterNode2.setAttribute('name', 'LJFStrategy');
39 case SchedStrategy.SJF
40 subParameterNode2 = simDoc.createElement('subParameter');
41 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.SJFStrategy');
42 subParameterNode2.setAttribute('name', 'SJFStrategy');
43 case SchedStrategy.LEPT
44 subParameterNode2 = simDoc.createElement('subParameter');
45 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.LEPTStrategy');
46 subParameterNode2.setAttribute('name', 'LEPTStrategy');
47 case SchedStrategy.SEPT
48 subParameterNode2 = simDoc.createElement('subParameter');
49 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.SEPTStrategy');
50 subParameterNode2.setAttribute('name', 'SEPTStrategy');
51 case SchedStrategy.LCFS
52 subParameterNode2 = simDoc.createElement('subParameter');
53 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.HeadStrategy');
54 subParameterNode2.setAttribute('name', 'HeadStrategy');
55 case SchedStrategy.LCFSPRIO
56 subParameterNode2 = simDoc.createElement('subParameter');
57 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.HeadStrategyPriority');
58 subParameterNode2.setAttribute('name', 'HeadStrategyPriority');
59 case SchedStrategy.LCFSPR
60 subParameterNode2 = simDoc.createElement('subParameter');
61 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.LCFSPRStrategy');
62 subParameterNode2.setAttribute('name', 'LCFSPRStrategy');
63 case SchedStrategy.LCFSPI
64 subParameterNode2 = simDoc.createElement('subParameter');
65 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.LCFSPIStrategy');
66 subParameterNode2.setAttribute('name', 'LCFSPIStrategy');
67 case SchedStrategy.LCFSPRPRIO
68 subParameterNode2 = simDoc.createElement('subParameter');
69 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.LCFSPRStrategyPriority');
70 subParameterNode2.setAttribute('name', 'LCFSPRStrategyPriority');
71 case SchedStrategy.LCFSPIPRIO
72 subParameterNode2 = simDoc.createElement('subParameter');
73 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.LCFSPIStrategyPriority');
74 subParameterNode2.setAttribute('name', 'LCFSPIStrategyPriority');
75 case SchedStrategy.FCFSPR
76 subParameterNode2 = simDoc.createElement('subParameter');
77 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.FCFSPRStrategy');
78 subParameterNode2.setAttribute('name', 'FCFSPRStrategy');
79 case SchedStrategy.FCFSPI
80 subParameterNode2 = simDoc.createElement('subParameter');
81 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.FCFSPIStrategy');
82 subParameterNode2.setAttribute('name', 'FCFSPIStrategy');
83 case SchedStrategy.FCFSPRPRIO
84 subParameterNode2 = simDoc.createElement('subParameter');
85 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.FCFSPRStrategyPriority');
86 subParameterNode2.setAttribute('name', 'FCFSPRStrategyPriority');
87 case SchedStrategy.FCFSPIPRIO
88 subParameterNode2 = simDoc.createElement('subParameter');
89 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.FCFSPIStrategyPriority');
90 subParameterNode2.setAttribute('name', 'FCFSPIStrategyPriority');
91 case {SchedStrategy.HOL, SchedStrategy.FCFSPRIO}
92 subParameterNode2 = simDoc.createElement('subParameter');
93 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.TailStrategyPriority');
94 subParameterNode2.setAttribute('name', 'TailStrategyPriority');
95 case SchedStrategy.EDD
96 % Note: JMT does not natively support EDD yet. This generates XML for future compatibility.
97 % For now, this will likely fall back to FCFS behavior in JMT execution.
98 subParameterNode2 = simDoc.createElement('subParameter');
99 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.EDDStrategy');
100 subParameterNode2.setAttribute('name', 'EDDStrategy');
101 case SchedStrategy.EDF
102 % Note: JMT does not natively support EDF yet. This generates XML for future compatibility.
103 % For now, this will likely fall back to FCFS behavior in JMT execution.
104 subParameterNode2 = simDoc.createElement('subParameter');
105 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.EDFStrategy');
106 subParameterNode2.setAttribute('name', 'EDFStrategy');
107 case SchedStrategy.SRPT
108 subParameterNode2 = simDoc.createElement('subParameter');
109 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.SRPTStrategy');
110 subParameterNode2.setAttribute('name', 'SRPTStrategy');
111 case SchedStrategy.SRPTPRIO
112 subParameterNode2 = simDoc.createElement('subParameter');
113 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.SRPTStrategyPriority');
114 subParameterNode2.setAttribute('name', 'SRPTStrategyPriority');
115 otherwise % treat as FCFS - this is required for PS
116 subParameterNode2 = simDoc.createElement('subParameter');
117 subParameterNode2.setAttribute('classPath', 'jmt.engine.NetStrategies.QueuePutStrategies.TailStrategy');
118 subParameterNode2.setAttribute('name', 'TailStrategy');
119 end
120 end
121 queuePutStrategyNode.appendChild(subParameterNode2);
122 section.appendChild(queuePutStrategyNode);
123end
124end