1classdef (Sealed) SchedStrategy
2 % SchedStrategy Enumeration of queueing scheduling disciplines and strategies
4 % SchedStrategy defines constants
for all supported scheduling disciplines
5 % in LINE queueing systems. These strategies determine the order in which
6 % jobs are selected
for service from queues, affecting system performance
7 % and fairness characteristics.
9 % @brief Comprehensive enumeration of queueing scheduling disciplines
11 % Key scheduling categories:
12 % - Order-based: FCFS, LCFS, SIRO (service order policies)
13 % - Size-based: SJF, LJF, SEPT, LEPT (job length policies)
14 % - Sharing: PS, DPS, GPS (processor sharing variants)
15 % - Priority: HOL, PSPRIO, DPSPRIO, GPSPRIO (priority disciplines)
16 % - Special: INF, FORK, POLLING, EXT, REF (specialized strategies)
18 % Common scheduling strategies:
19 % - FCFS: First-Come-First-Served (FIFO)
20 % - LCFS: Last-Come-First-Served (LIFO/Stack)
21 % - PS: Processor Sharing (round-robin with infinitesimal time slices)
22 % - SJF: Shortest Job First (preemptive shortest remaining time)
23 % - HOL: Head-of-Line priority (non-preemptive priority)
24 % - INF: Infinite server (delay station, no queueing)
26 % SchedStrategy
is used in:
27 % - Queue node configuration
28 % - Service discipline specification
29 % - Performance analysis parameterization
30 % - Model validation and compatibility checking
31 % - Solver method selection
35 % queue1 = Queue(model,
'Server1', SchedStrategy.FCFS);
36 % queue2 = Queue(model,
'Server2', SchedStrategy.PS);
37 % delay = Queue(model,
'ThinkTime', SchedStrategy.INF);
40 % Copyright (c) 2012-2026, Imperial College London
41 % All rights reserved.
68 FCFSPRIO = 11; % Alias
for HOL
75 EDD = 30; % Earliest Due Date (non-preemptive)
76 EDF = 31; % Earliest Deadline First (preemptive)
77 LPS = 32; % Least Progress Scheduling
81 function
id = toId(type)
86 line_error(mfilename,
'Invalid scheduling strategy type.');
90 function type = fromId(
id)
92 if ismember(
id, [SchedStrategy.INF, SchedStrategy.FCFS, SchedStrategy.LCFS, ...
93 SchedStrategy.SIRO, SchedStrategy.SJF, SchedStrategy.LJF, ...
94 SchedStrategy.PS, SchedStrategy.DPS, SchedStrategy.GPS, ...
95 SchedStrategy.SEPT, SchedStrategy.LEPT, SchedStrategy.SRPT, SchedStrategy.SRPTPRIO, SchedStrategy.HOL, ...
96 SchedStrategy.FORK, SchedStrategy.EXT, SchedStrategy.REF, ...
97 SchedStrategy.LCFSPR, SchedStrategy.POLLING, ...
98 SchedStrategy.PSPRIO, SchedStrategy.DPSPRIO, SchedStrategy.GPSPRIO, ...
99 SchedStrategy.LCFSPI, SchedStrategy.LCFSPRIO, SchedStrategy.LCFSPRPRIO, SchedStrategy.LCFSPIPRIO, ...
100 SchedStrategy.FCFSPRIO, SchedStrategy.FCFSPR, SchedStrategy.FCFSPI, SchedStrategy.FCFSPRPRIO, SchedStrategy.FCFSPIPRIO, ...
101 SchedStrategy.EDD, SchedStrategy.EDF, SchedStrategy.LPS])
104 line_error(mfilename, 'Unrecognized scheduling strategy ID.');
108 function text = toText(type)
109 % TEXT = TOTEXT(TYPE)
111 case SchedStrategy.INF
113 case SchedStrategy.FCFS
115 case SchedStrategy.FCFSPR
117 case SchedStrategy.FCFSPI
119 case SchedStrategy.LCFS
121 case SchedStrategy.SIRO
123 case SchedStrategy.SJF
125 case SchedStrategy.LJF
127 case SchedStrategy.PS
129 case SchedStrategy.DPS
131 case SchedStrategy.GPS
133 case SchedStrategy.SEPT
135 case SchedStrategy.LEPT
137 case SchedStrategy.SRPT
139 case SchedStrategy.SRPTPRIO
141 case SchedStrategy.HOL
143 case SchedStrategy.FCFSPRIO
145 case SchedStrategy.FORK
147 case SchedStrategy.EXT
149 case SchedStrategy.REF
151 case SchedStrategy.LCFSPR
153 case SchedStrategy.LCFSPI
155 case SchedStrategy.LCFSPRIO
157 case SchedStrategy.LCFSPRPRIO
159 case SchedStrategy.LCFSPIPRIO
161 case SchedStrategy.FCFSPRPRIO
163 case SchedStrategy.FCFSPIPRIO
165 case SchedStrategy.POLLING
167 case SchedStrategy.PSPRIO
169 case SchedStrategy.DPSPRIO
171 case SchedStrategy.GPSPRIO
173 case SchedStrategy.EDD
175 case SchedStrategy.EDF
177 case SchedStrategy.LPS
180 line_error(mfilename, 'Unrecognized scheduling strategy type.');
184 function type = fromText(text)
185 % TYPE = FROMTEXT(TEXT)
191 type = SchedStrategy.INF;
193 type = SchedStrategy.FCFS;
195 type = SchedStrategy.FCFSPR;
197 type = SchedStrategy.FCFSPI;
199 type = SchedStrategy.LCFS;
201 type = SchedStrategy.SIRO;
203 type = SchedStrategy.SJF;
205 type = SchedStrategy.LJF;
207 type = SchedStrategy.PS;
209 type = SchedStrategy.DPS;
211 type = SchedStrategy.GPS;
213 type = SchedStrategy.SEPT;
215 type = SchedStrategy.LEPT;
217 type = SchedStrategy.SRPT;
219 type = SchedStrategy.SRPTPRIO;
221 type = SchedStrategy.HOL;
223 type = SchedStrategy.FCFSPRIO;
225 type = SchedStrategy.FORK;
227 type = SchedStrategy.EXT;
229 type = SchedStrategy.REF;
231 type = SchedStrategy.LCFSPR;
233 type = SchedStrategy.LCFSPI;
235 type = SchedStrategy.LCFSPRIO;
237 type = SchedStrategy.LCFSPRPRIO;
239 type = SchedStrategy.LCFSPIPRIO;
241 type = SchedStrategy.FCFSPRPRIO;
243 type = SchedStrategy.FCFSPIPRIO;
245 type = SchedStrategy.POLLING;
247 type = SchedStrategy.PSPRIO;
249 type = SchedStrategy.DPSPRIO;
251 type = SchedStrategy.GPSPRIO;
253 type = SchedStrategy.EDD;
255 type = SchedStrategy.EDF;
257 type = SchedStrategy.LPS;
259 line_error(mfilename,
'Unrecognized scheduling strategy text.');
263 function
property = toProperty(text)
264 % PROPERTY = TOPROPERTY(TEXT)
298 property =
'SRPTPRIO';
302 property =
'FCFSPRIO';
314 property =
'LCFSPRIO';
316 property =
'LCFSPRPRIO';
318 property =
'LCFSPIPRIO';
320 property =
'FCFSPRPRIO';
322 property =
'FCFSPIPRIO';
324 property =
'POLLING';
328 property =
'DPSPRIO';
330 property =
'GPSPRIO';
338 line_error(mfilename,
'Unrecognized scheduling strategy property.');
342 function text = toFeature(type)
343 % TEXT = TOFEATURE(TYPE)
345 case SchedStrategy.INF
346 text =
'SchedStrategy_INF';
347 case SchedStrategy.FCFS
348 text =
'SchedStrategy_FCFS';
349 case SchedStrategy.FCFSPR
350 text =
'SchedStrategy_FCFSPR';
351 case SchedStrategy.FCFSPI
352 text =
'SchedStrategy_FCFSPI';
353 case SchedStrategy.LCFS
354 text =
'SchedStrategy_LCFS';
355 case SchedStrategy.SIRO
356 text =
'SchedStrategy_SIRO';
357 case SchedStrategy.SJF
358 text =
'SchedStrategy_SJF';
359 case SchedStrategy.LJF
360 text =
'SchedStrategy_LJF';
361 case SchedStrategy.PS
362 text =
'SchedStrategy_PS';
363 case SchedStrategy.DPS
364 text =
'SchedStrategy_DPS';
365 case SchedStrategy.GPS
366 text =
'SchedStrategy_GPS';
367 case SchedStrategy.SEPT
368 text =
'SchedStrategy_SEPT';
369 case SchedStrategy.LEPT
370 text =
'SchedStrategy_LEPT';
371 case SchedStrategy.SRPT
372 text =
'SchedStrategy_SRPT';
373 case SchedStrategy.SRPTPRIO
374 text =
'SchedStrategy_SRPTPRIO';
375 case SchedStrategy.HOL
376 text =
'SchedStrategy_HOL';
377 case SchedStrategy.FCFSPRIO
378 text =
'SchedStrategy_HOL';
379 case SchedStrategy.FORK
380 text =
'SchedStrategy_FORK';
381 case SchedStrategy.EXT
382 text =
'SchedStrategy_EXT';
383 case SchedStrategy.REF
384 text =
'SchedStrategy_REF';
385 case SchedStrategy.LCFSPR
386 text =
'SchedStrategy_LCFSPR';
387 case SchedStrategy.LCFSPI
388 text =
'SchedStrategy_LCFSPI';
389 case SchedStrategy.LCFSPRIO
390 text =
'SchedStrategy_LCFSPRIO';
391 case SchedStrategy.LCFSPRPRIO
392 text =
'SchedStrategy_LCFSPRPRIO';
393 case SchedStrategy.LCFSPIPRIO
394 text =
'SchedStrategy_LCFSPIPRIO';
395 case SchedStrategy.FCFSPRPRIO
396 text =
'SchedStrategy_FCFSPRPRIO';
397 case SchedStrategy.FCFSPIPRIO
398 text =
'SchedStrategy_FCFSPIPRIO';
399 case SchedStrategy.POLLING
400 text =
'SchedStrategy_POLLING';
401 case SchedStrategy.PSPRIO
402 text =
'SchedStrategy_PSPRIO';
403 case SchedStrategy.DPSPRIO
404 text =
'SchedStrategy_DPSPRIO';
405 case SchedStrategy.GPSPRIO
406 text =
'SchedStrategy_GPSPRIO';
407 case SchedStrategy.EDD
408 text =
'SchedStrategy_EDD';
409 case SchedStrategy.EDF
410 text =
'SchedStrategy_EDF';
411 case SchedStrategy.LPS
412 text =
'SchedStrategy_LPS';
414 line_error(mfilename,
'Unrecognized scheduling strategy feature.');