1classdef (Sealed) RoutingStrategy
2 % RoutingStrategy Enumeration of job routing policies and load balancing strategies
4 % RoutingStrategy defines constants
for routing policies that determine how
5 % jobs are directed from one node to another in queueing networks. These
6 % strategies control load distribution, traffic balancing, and path selection
7 % throughout the network topology.
9 % @brief Comprehensive enumeration of job routing and load balancing strategies
11 % Key routing categories:
12 % - Probabilistic: RAND, PROB (random and probability-based routing)
13 % - Load balancing: JSQ, KCHOICES (queue length-based decisions)
14 % - Round-robin: RROBIN, WRROBIN (cyclic and weighted distribution)
15 % - Advanced: RL, FIRING (learning and event-based routing)
16 % - Control: DISABLED (no routing
for specific
classes)
18 % Common routing strategies:
19 % - RAND: Random routing (equal probability to all destinations)
20 % - PROB: Probabilistic routing (user-specified probabilities)
21 % - RROBIN: Round-robin (cyclic distribution)
22 % - JSQ: Join Shortest Queue (dynamic load balancing)
23 % - KCHOICES: Power of k choices (select best of k random options)
24 % - DISABLED: No routing (
class blocked at
this node)
26 % RoutingStrategy
is used in:
27 % - Node output section configuration
28 % - Network topology specification
29 % - Load balancing implementation
30 % - Traffic distribution control
31 % - Router and dispatcher configuration
35 % router.setRouting(jobClass, RoutingStrategy.PROB, [queue1, queue2], [0.7, 0.3]);
36 % loadBalancer.setRouting(jobClass, RoutingStrategy.JSQ);
37 % roundRobin.setRouting(jobClass, RoutingStrategy.RROBIN);
40 % Copyright (c) 2012-2026, Imperial College London
41 % All rights reserved.
55 methods (Static, Access =
public)
57 function type = fromText(text)
58 % TYPE = FROMTEXT(TEXT)
61 type = RoutingStrategy.RAND;
63 type = RoutingStrategy.PROB;
65 type = RoutingStrategy.RROBIN;
66 case 'WeightedRoundRobin'
67 type = RoutingStrategy.WRROBIN;
68 case 'JoinShortestQueue'
69 type = RoutingStrategy.JSQ;
71 type = RoutingStrategy.FIRING;
73 type = RoutingStrategy.KCHOICES;
74 case 'ReinforcementLearning'
75 type = RoutingStrategy.RL;
77 type = RoutingStrategy.DISABLED;
79 line_error(mfilename, 'Unrecognized routing strategy
string.');
83 function
id = toId(type)
86 case RoutingStrategy.RAND
87 id = RoutingStrategy.RAND;
88 case RoutingStrategy.PROB
89 id = RoutingStrategy.PROB;
90 case RoutingStrategy.RROBIN
91 id = RoutingStrategy.RROBIN;
92 case RoutingStrategy.WRROBIN
93 id = RoutingStrategy.WRROBIN;
94 case RoutingStrategy.FIRING
95 id = RoutingStrategy.FIRING;
96 case RoutingStrategy.JSQ
97 id = RoutingStrategy.JSQ;
98 case RoutingStrategy.KCHOICES
99 id = RoutingStrategy.KCHOICES;
100 case RoutingStrategy.RL
101 id = RoutingStrategy.RL;
102 case RoutingStrategy.DISABLED
103 id = RoutingStrategy.DISABLED;
105 line_error(mfilename, 'Unrecognized routing strategy ID.');
109 function feature = toFeature(type)
110 % FEATURE = TOFEATURE(TYPE)
112 case RoutingStrategy.RAND
113 feature = 'RoutingStrategy_RAND';
114 case RoutingStrategy.PROB
115 feature = 'RoutingStrategy_PROB';
116 case RoutingStrategy.RROBIN
117 feature = 'RoutingStrategy_RROBIN';
118 case RoutingStrategy.WRROBIN
119 feature = 'RoutingStrategy_WRROBIN';
120 case RoutingStrategy.FIRING
121 feature = 'RoutingStrategy_FIRING';
122 case RoutingStrategy.JSQ
123 feature = 'RoutingStrategy_JSQ';
124 case RoutingStrategy.KCHOICES
125 feature = 'RoutingStrategy_KCHOICES';
126 case RoutingStrategy.RL
127 feature = 'RoutingStrategy_RL';
128 case RoutingStrategy.DISABLED
129 feature = 'RoutingStrategy_DISABLED';
131 line_error(mfilename, 'Unrecognized routing strategy feature.');
135 function text = toText(type)
136 % TEXT = TOTEXT(TYPE)
138 case RoutingStrategy.RAND
140 case RoutingStrategy.PROB
141 text = 'Probabilities';
142 case RoutingStrategy.RROBIN
144 case RoutingStrategy.WRROBIN
145 text = 'WeightedRoundRobin';
146 case RoutingStrategy.FIRING
148 case RoutingStrategy.JSQ
149 text = 'JoinShortestQueue';
150 case RoutingStrategy.KCHOICES
151 text = 'PowerKChoices';
152 case RoutingStrategy.RL
153 text = 'ReinforcementLearning';
154 case RoutingStrategy.DISABLED
157 line_error(mfilename, 'Unrecognized routing strategy type.');