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
78 PSJF = 33; % Preemptive Shortest Job First (priority by original size)
79 FB = 34; % Feedback / Least Attained Service (priority by age)
80 LAS = 34; % Alias
for FB (Least Attained Service)
81 LRPT = 35; % Longest Remaining Processing Time
82 SETF = 36; % Shortest Elapsed Time First (non-preemptive FB)
83 SET = 36; % Alias
for SETF
87 function
id = toId(type)
92 line_error(mfilename,
'Invalid scheduling strategy type.');
96 function type = fromId(
id)
98 if ismember(
id, [SchedStrategy.INF, SchedStrategy.FCFS, SchedStrategy.LCFS, ...
99 SchedStrategy.SIRO, SchedStrategy.SJF, SchedStrategy.LJF, ...
100 SchedStrategy.PS, SchedStrategy.DPS, SchedStrategy.GPS, ...
101 SchedStrategy.SEPT, SchedStrategy.LEPT, SchedStrategy.SRPT, SchedStrategy.SRPTPRIO, SchedStrategy.HOL, ...
102 SchedStrategy.FORK, SchedStrategy.EXT, SchedStrategy.REF, ...
103 SchedStrategy.LCFSPR, SchedStrategy.POLLING, ...
104 SchedStrategy.PSPRIO, SchedStrategy.DPSPRIO, SchedStrategy.GPSPRIO, ...
105 SchedStrategy.LCFSPI, SchedStrategy.LCFSPRIO, SchedStrategy.LCFSPRPRIO, SchedStrategy.LCFSPIPRIO, ...
106 SchedStrategy.FCFSPRIO, SchedStrategy.FCFSPR, SchedStrategy.FCFSPI, SchedStrategy.FCFSPRPRIO, SchedStrategy.FCFSPIPRIO, ...
107 SchedStrategy.EDD, SchedStrategy.EDF, SchedStrategy.LPS, ...
108 SchedStrategy.PSJF, SchedStrategy.FB, SchedStrategy.LRPT, SchedStrategy.SETF])
111 line_error(mfilename, 'Unrecognized scheduling strategy ID.');
115 function text = toText(type)
116 % TEXT = TOTEXT(TYPE)
118 case SchedStrategy.INF
120 case SchedStrategy.FCFS
122 case SchedStrategy.FCFSPR
124 case SchedStrategy.FCFSPI
126 case SchedStrategy.LCFS
128 case SchedStrategy.SIRO
130 case SchedStrategy.SJF
132 case SchedStrategy.LJF
134 case SchedStrategy.PS
136 case SchedStrategy.DPS
138 case SchedStrategy.GPS
140 case SchedStrategy.SEPT
142 case SchedStrategy.LEPT
144 case SchedStrategy.SRPT
146 case SchedStrategy.SRPTPRIO
148 case SchedStrategy.HOL
150 case SchedStrategy.FCFSPRIO
152 case SchedStrategy.FORK
154 case SchedStrategy.EXT
156 case SchedStrategy.REF
158 case SchedStrategy.LCFSPR
160 case SchedStrategy.LCFSPI
162 case SchedStrategy.LCFSPRIO
164 case SchedStrategy.LCFSPRPRIO
166 case SchedStrategy.LCFSPIPRIO
168 case SchedStrategy.FCFSPRPRIO
170 case SchedStrategy.FCFSPIPRIO
172 case SchedStrategy.POLLING
174 case SchedStrategy.PSPRIO
176 case SchedStrategy.DPSPRIO
178 case SchedStrategy.GPSPRIO
180 case SchedStrategy.EDD
182 case SchedStrategy.EDF
184 case SchedStrategy.LPS
186 case SchedStrategy.PSJF
188 case SchedStrategy.FB
190 case SchedStrategy.LRPT
192 case SchedStrategy.SETF
195 line_error(mfilename, 'Unrecognized scheduling strategy type.');
199 function type = fromText(text)
200 % TYPE = FROMTEXT(TEXT)
206 type = SchedStrategy.INF;
208 type = SchedStrategy.FCFS;
210 type = SchedStrategy.FCFSPR;
212 type = SchedStrategy.FCFSPI;
214 type = SchedStrategy.LCFS;
216 type = SchedStrategy.SIRO;
218 type = SchedStrategy.SJF;
220 type = SchedStrategy.LJF;
222 type = SchedStrategy.PS;
224 type = SchedStrategy.DPS;
226 type = SchedStrategy.GPS;
228 type = SchedStrategy.SEPT;
230 type = SchedStrategy.LEPT;
232 type = SchedStrategy.SRPT;
234 type = SchedStrategy.SRPTPRIO;
236 type = SchedStrategy.HOL;
238 type = SchedStrategy.FCFSPRIO;
240 type = SchedStrategy.FORK;
242 type = SchedStrategy.EXT;
244 type = SchedStrategy.REF;
246 type = SchedStrategy.LCFSPR;
248 type = SchedStrategy.LCFSPI;
250 type = SchedStrategy.LCFSPRIO;
252 type = SchedStrategy.LCFSPRPRIO;
254 type = SchedStrategy.LCFSPIPRIO;
256 type = SchedStrategy.FCFSPRPRIO;
258 type = SchedStrategy.FCFSPIPRIO;
260 type = SchedStrategy.POLLING;
262 type = SchedStrategy.PSPRIO;
264 type = SchedStrategy.DPSPRIO;
266 type = SchedStrategy.GPSPRIO;
268 type = SchedStrategy.EDD;
270 type = SchedStrategy.EDF;
272 type = SchedStrategy.LPS;
274 type = SchedStrategy.PSJF;
276 type = SchedStrategy.FB;
278 type = SchedStrategy.LAS;
280 type = SchedStrategy.LRPT;
282 type = SchedStrategy.SETF;
284 type = SchedStrategy.SET;
286 % LQNS preemptive priority - maps to FCFS with preemptive resume priority
287 type = SchedStrategy.FCFSPRPRIO;
289 % LQNS completely fair scheduling - maps to Generalized Processor Sharing
290 type = SchedStrategy.GPS;
292 line_error(mfilename,
'Unrecognized scheduling strategy text.');
296 function
property = toProperty(text)
297 % PROPERTY = TOPROPERTY(TEXT)
331 property =
'SRPTPRIO';
335 property =
'FCFSPRIO';
347 property =
'LCFSPRIO';
349 property =
'LCFSPRPRIO';
351 property =
'LCFSPIPRIO';
353 property =
'FCFSPRPRIO';
355 property =
'FCFSPIPRIO';
357 property =
'POLLING';
361 property =
'DPSPRIO';
363 property =
'GPSPRIO';
383 line_error(mfilename,
'Unrecognized scheduling strategy property.');
387 function text = toFeature(type)
388 % TEXT = TOFEATURE(TYPE)
390 case SchedStrategy.INF
391 text =
'SchedStrategy_INF';
392 case SchedStrategy.FCFS
393 text =
'SchedStrategy_FCFS';
394 case SchedStrategy.FCFSPR
395 text =
'SchedStrategy_FCFSPR';
396 case SchedStrategy.FCFSPI
397 text =
'SchedStrategy_FCFSPI';
398 case SchedStrategy.LCFS
399 text =
'SchedStrategy_LCFS';
400 case SchedStrategy.SIRO
401 text =
'SchedStrategy_SIRO';
402 case SchedStrategy.SJF
403 text =
'SchedStrategy_SJF';
404 case SchedStrategy.LJF
405 text =
'SchedStrategy_LJF';
406 case SchedStrategy.PS
407 text =
'SchedStrategy_PS';
408 case SchedStrategy.DPS
409 text =
'SchedStrategy_DPS';
410 case SchedStrategy.GPS
411 text =
'SchedStrategy_GPS';
412 case SchedStrategy.SEPT
413 text =
'SchedStrategy_SEPT';
414 case SchedStrategy.LEPT
415 text =
'SchedStrategy_LEPT';
416 case SchedStrategy.SRPT
417 text =
'SchedStrategy_SRPT';
418 case SchedStrategy.SRPTPRIO
419 text =
'SchedStrategy_SRPTPRIO';
420 case SchedStrategy.HOL
421 text =
'SchedStrategy_HOL';
422 case SchedStrategy.FCFSPRIO
423 text =
'SchedStrategy_HOL';
424 case SchedStrategy.FORK
425 text =
'SchedStrategy_FORK';
426 case SchedStrategy.EXT
427 text =
'SchedStrategy_EXT';
428 case SchedStrategy.REF
429 text =
'SchedStrategy_REF';
430 case SchedStrategy.LCFSPR
431 text =
'SchedStrategy_LCFSPR';
432 case SchedStrategy.LCFSPI
433 text =
'SchedStrategy_LCFSPI';
434 case SchedStrategy.LCFSPRIO
435 text =
'SchedStrategy_LCFSPRIO';
436 case SchedStrategy.LCFSPRPRIO
437 text =
'SchedStrategy_LCFSPRPRIO';
438 case SchedStrategy.LCFSPIPRIO
439 text =
'SchedStrategy_LCFSPIPRIO';
440 case SchedStrategy.FCFSPRPRIO
441 text =
'SchedStrategy_FCFSPRPRIO';
442 case SchedStrategy.FCFSPIPRIO
443 text =
'SchedStrategy_FCFSPIPRIO';
444 case SchedStrategy.POLLING
445 text =
'SchedStrategy_POLLING';
446 case SchedStrategy.PSPRIO
447 text =
'SchedStrategy_PSPRIO';
448 case SchedStrategy.DPSPRIO
449 text =
'SchedStrategy_DPSPRIO';
450 case SchedStrategy.GPSPRIO
451 text =
'SchedStrategy_GPSPRIO';
452 case SchedStrategy.EDD
453 text =
'SchedStrategy_EDD';
454 case SchedStrategy.EDF
455 text =
'SchedStrategy_EDF';
456 case SchedStrategy.LPS
457 text =
'SchedStrategy_LPS';
458 case SchedStrategy.PSJF
459 text =
'SchedStrategy_PSJF';
460 case SchedStrategy.FB
461 text =
'SchedStrategy_FB';
462 case SchedStrategy.LRPT
463 text =
'SchedStrategy_LRPT';
464 case SchedStrategy.SETF
465 text =
'SchedStrategy_SETF';
467 line_error(mfilename,
'Unrecognized scheduling strategy feature.');