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
84 FSP = 37; % Fair Sojourn Protocol (preemptive; ranks by
virtual PS finish time)
85 PAS = 38; % Pass-and-swap (order-independent queue with class compatibility/swap graph)
86 OI = 39; % Order-independent queue (pass-and-swap specialization with empty/zero swap graph)
90 function
id = toId(type)
95 line_error(mfilename,
'Invalid scheduling strategy type.');
99 function type = fromId(
id)
101 if ismember(
id, [SchedStrategy.INF, SchedStrategy.FCFS, SchedStrategy.LCFS, ...
102 SchedStrategy.SIRO, SchedStrategy.SJF, SchedStrategy.LJF, ...
103 SchedStrategy.PS, SchedStrategy.DPS, SchedStrategy.GPS, ...
104 SchedStrategy.SEPT, SchedStrategy.LEPT, SchedStrategy.SRPT, SchedStrategy.SRPTPRIO, SchedStrategy.HOL, ...
105 SchedStrategy.FORK, SchedStrategy.EXT, SchedStrategy.REF, ...
106 SchedStrategy.LCFSPR, SchedStrategy.POLLING, ...
107 SchedStrategy.PSPRIO, SchedStrategy.DPSPRIO, SchedStrategy.GPSPRIO, ...
108 SchedStrategy.LCFSPI, SchedStrategy.LCFSPRIO, SchedStrategy.LCFSPRPRIO, SchedStrategy.LCFSPIPRIO, ...
109 SchedStrategy.FCFSPRIO, SchedStrategy.FCFSPR, SchedStrategy.FCFSPI, SchedStrategy.FCFSPRPRIO, SchedStrategy.FCFSPIPRIO, ...
110 SchedStrategy.EDD, SchedStrategy.EDF, SchedStrategy.LPS, ...
111 SchedStrategy.PSJF, SchedStrategy.FB, SchedStrategy.LRPT, SchedStrategy.SETF, ...
112 SchedStrategy.FSP, SchedStrategy.PAS, SchedStrategy.OI])
115 line_error(mfilename, 'Unrecognized scheduling strategy ID.');
119 function text = toText(type)
120 % TEXT = TOTEXT(TYPE)
122 case SchedStrategy.INF
124 case SchedStrategy.FCFS
126 case SchedStrategy.FCFSPR
128 case SchedStrategy.FCFSPI
130 case SchedStrategy.LCFS
132 case SchedStrategy.SIRO
134 case SchedStrategy.SJF
136 case SchedStrategy.LJF
138 case SchedStrategy.PS
140 case SchedStrategy.DPS
142 case SchedStrategy.GPS
144 case SchedStrategy.SEPT
146 case SchedStrategy.LEPT
148 case SchedStrategy.SRPT
150 case SchedStrategy.SRPTPRIO
152 case SchedStrategy.HOL
154 case SchedStrategy.FCFSPRIO
156 case SchedStrategy.FORK
158 case SchedStrategy.EXT
160 case SchedStrategy.REF
162 case SchedStrategy.LCFSPR
164 case SchedStrategy.LCFSPI
166 case SchedStrategy.LCFSPRIO
168 case SchedStrategy.LCFSPRPRIO
170 case SchedStrategy.LCFSPIPRIO
172 case SchedStrategy.FCFSPRPRIO
174 case SchedStrategy.FCFSPIPRIO
176 case SchedStrategy.POLLING
178 case SchedStrategy.PSPRIO
180 case SchedStrategy.DPSPRIO
182 case SchedStrategy.GPSPRIO
184 case SchedStrategy.EDD
186 case SchedStrategy.EDF
188 case SchedStrategy.LPS
190 case SchedStrategy.PSJF
192 case SchedStrategy.FB
194 case SchedStrategy.LRPT
196 case SchedStrategy.SETF
198 case SchedStrategy.FSP
200 case SchedStrategy.PAS
202 case SchedStrategy.OI
205 line_error(mfilename, 'Unrecognized scheduling strategy type.');
209 function type = fromText(text)
210 % TYPE = FROMTEXT(TEXT)
216 type = SchedStrategy.INF;
218 type = SchedStrategy.FCFS;
220 type = SchedStrategy.FCFSPR;
222 type = SchedStrategy.FCFSPI;
224 type = SchedStrategy.LCFS;
226 type = SchedStrategy.SIRO;
228 type = SchedStrategy.SJF;
230 type = SchedStrategy.LJF;
232 type = SchedStrategy.PS;
234 type = SchedStrategy.DPS;
236 type = SchedStrategy.GPS;
238 type = SchedStrategy.SEPT;
240 type = SchedStrategy.LEPT;
242 type = SchedStrategy.SRPT;
244 type = SchedStrategy.SRPTPRIO;
246 type = SchedStrategy.HOL;
248 type = SchedStrategy.FCFSPRIO;
250 type = SchedStrategy.FORK;
252 type = SchedStrategy.EXT;
254 type = SchedStrategy.REF;
256 type = SchedStrategy.LCFSPR;
258 type = SchedStrategy.LCFSPI;
260 type = SchedStrategy.LCFSPRIO;
262 type = SchedStrategy.LCFSPRPRIO;
264 type = SchedStrategy.LCFSPIPRIO;
266 type = SchedStrategy.FCFSPRPRIO;
268 type = SchedStrategy.FCFSPIPRIO;
270 type = SchedStrategy.POLLING;
272 type = SchedStrategy.PSPRIO;
274 type = SchedStrategy.DPSPRIO;
276 type = SchedStrategy.GPSPRIO;
278 type = SchedStrategy.EDD;
280 type = SchedStrategy.EDF;
282 type = SchedStrategy.LPS;
284 type = SchedStrategy.PSJF;
286 type = SchedStrategy.FB;
288 type = SchedStrategy.LAS;
290 type = SchedStrategy.LRPT;
292 type = SchedStrategy.SETF;
294 type = SchedStrategy.SET;
296 type = SchedStrategy.FSP;
298 type = SchedStrategy.PAS;
300 type = SchedStrategy.OI;
302 % LQNS preemptive priority - maps to FCFS with preemptive resume priority
303 type = SchedStrategy.FCFSPRPRIO;
305 % LQNS completely fair scheduling - maps to Generalized Processor Sharing
306 type = SchedStrategy.GPS;
308 line_error(mfilename,
'Unrecognized scheduling strategy text.');
312 function
property = toProperty(text)
313 % PROPERTY = TOPROPERTY(TEXT)
347 property =
'SRPTPRIO';
351 property =
'FCFSPRIO';
363 property =
'LCFSPRIO';
365 property =
'LCFSPRPRIO';
367 property =
'LCFSPIPRIO';
369 property =
'FCFSPRPRIO';
371 property =
'FCFSPIPRIO';
373 property =
'POLLING';
377 property =
'DPSPRIO';
379 property =
'GPSPRIO';
405 line_error(mfilename,
'Unrecognized scheduling strategy property.');
409 function text = toFeature(type)
410 % TEXT = TOFEATURE(TYPE)
412 case SchedStrategy.INF
413 text =
'SchedStrategy_INF';
414 case SchedStrategy.FCFS
415 text =
'SchedStrategy_FCFS';
416 case SchedStrategy.FCFSPR
417 text =
'SchedStrategy_FCFSPR';
418 case SchedStrategy.FCFSPI
419 text =
'SchedStrategy_FCFSPI';
420 case SchedStrategy.LCFS
421 text =
'SchedStrategy_LCFS';
422 case SchedStrategy.SIRO
423 text =
'SchedStrategy_SIRO';
424 case SchedStrategy.SJF
425 text =
'SchedStrategy_SJF';
426 case SchedStrategy.LJF
427 text =
'SchedStrategy_LJF';
428 case SchedStrategy.PS
429 text =
'SchedStrategy_PS';
430 case SchedStrategy.DPS
431 text =
'SchedStrategy_DPS';
432 case SchedStrategy.GPS
433 text =
'SchedStrategy_GPS';
434 case SchedStrategy.SEPT
435 text =
'SchedStrategy_SEPT';
436 case SchedStrategy.LEPT
437 text =
'SchedStrategy_LEPT';
438 case SchedStrategy.SRPT
439 text =
'SchedStrategy_SRPT';
440 case SchedStrategy.SRPTPRIO
441 text =
'SchedStrategy_SRPTPRIO';
442 case SchedStrategy.HOL
443 text =
'SchedStrategy_HOL';
444 case SchedStrategy.FCFSPRIO
445 text =
'SchedStrategy_HOL';
446 case SchedStrategy.FORK
447 text =
'SchedStrategy_FORK';
448 case SchedStrategy.EXT
449 text =
'SchedStrategy_EXT';
450 case SchedStrategy.REF
451 text =
'SchedStrategy_REF';
452 case SchedStrategy.LCFSPR
453 text =
'SchedStrategy_LCFSPR';
454 case SchedStrategy.LCFSPI
455 text =
'SchedStrategy_LCFSPI';
456 case SchedStrategy.LCFSPRIO
457 text =
'SchedStrategy_LCFSPRIO';
458 case SchedStrategy.LCFSPRPRIO
459 text =
'SchedStrategy_LCFSPRPRIO';
460 case SchedStrategy.LCFSPIPRIO
461 text =
'SchedStrategy_LCFSPIPRIO';
462 case SchedStrategy.FCFSPRPRIO
463 text =
'SchedStrategy_FCFSPRPRIO';
464 case SchedStrategy.FCFSPIPRIO
465 text =
'SchedStrategy_FCFSPIPRIO';
466 case SchedStrategy.POLLING
467 text =
'SchedStrategy_POLLING';
468 case SchedStrategy.PSPRIO
469 text =
'SchedStrategy_PSPRIO';
470 case SchedStrategy.DPSPRIO
471 text =
'SchedStrategy_DPSPRIO';
472 case SchedStrategy.GPSPRIO
473 text =
'SchedStrategy_GPSPRIO';
474 case SchedStrategy.EDD
475 text =
'SchedStrategy_EDD';
476 case SchedStrategy.EDF
477 text =
'SchedStrategy_EDF';
478 case SchedStrategy.LPS
479 text =
'SchedStrategy_LPS';
480 case SchedStrategy.PSJF
481 text =
'SchedStrategy_PSJF';
482 case SchedStrategy.FB
483 text =
'SchedStrategy_FB';
484 case SchedStrategy.LRPT
485 text =
'SchedStrategy_LRPT';
486 case SchedStrategy.SETF
487 text =
'SchedStrategy_SETF';
488 case SchedStrategy.FSP
489 text =
'SchedStrategy_FSP';
490 case SchedStrategy.PAS
491 text =
'SchedStrategy_PAS';
492 case SchedStrategy.OI
493 text =
'SchedStrategy_OI';
495 line_error(mfilename,
'Unrecognized scheduling strategy feature.');