LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
RoutingStrategy.m
1classdef (Sealed) RoutingStrategy
2 % RoutingStrategy Enumeration of job routing policies and load balancing strategies
3 %
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.
8 %
9 % @brief Comprehensive enumeration of job routing and load balancing strategies
10 %
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)
17 %
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)
25 %
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
32 %
33 % Example:
34 % @code
35 % router.setRouting(jobClass, RoutingStrategy.PROB, [queue1, queue2], [0.7, 0.3]);
36 % loadBalancer.setRouting(jobClass, RoutingStrategy.JSQ);
37 % roundRobin.setRouting(jobClass, RoutingStrategy.RROBIN);
38 % @endcode
39 %
40 % Copyright (c) 2012-2026, Imperial College London
41 % All rights reserved.
42
43 properties (Constant)
44 RAND = 0;
45 PROB = 1;
46 RROBIN = 2;
47 WRROBIN = 3;
48 JSQ = 4;
49 FIRING = 5;
50 KCHOICES = 6;
51 RL = 7;
52 DISABLED = -1;
53 end
54
55 methods (Static, Access = public)
56
57 function type = fromText(text)
58 % TYPE = FROMTEXT(TEXT)
59 switch text
60 case 'Random'
61 type = RoutingStrategy.RAND;
62 case 'Probabilities'
63 type = RoutingStrategy.PROB;
64 case 'RoundRobin'
65 type = RoutingStrategy.RROBIN;
66 case 'WeightedRoundRobin'
67 type = RoutingStrategy.WRROBIN;
68 case 'JoinShortestQueue'
69 type = RoutingStrategy.JSQ;
70 case 'Firing'
71 type = RoutingStrategy.FIRING;
72 case 'PowerKChoices'
73 type = RoutingStrategy.KCHOICES;
74 case 'ReinforcementLearning'
75 type = RoutingStrategy.RL;
76 case 'Disabled'
77 type = RoutingStrategy.DISABLED;
78 otherwise
79 line_error(mfilename, 'Unrecognized routing strategy string.');
80 end
81 end
82
83 function id = toId(type)
84 % ID = TOID(TYPE)
85 switch 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;
104 otherwise
105 line_error(mfilename, 'Unrecognized routing strategy ID.');
106 end
107 end
108
109 function feature = toFeature(type)
110 % FEATURE = TOFEATURE(TYPE)
111 switch 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';
130 otherwise
131 line_error(mfilename, 'Unrecognized routing strategy feature.');
132 end
133 end
134
135 function text = toText(type)
136 % TEXT = TOTEXT(TYPE)
137 switch type
138 case RoutingStrategy.RAND
139 text = 'Random';
140 case RoutingStrategy.PROB
141 text = 'Probabilities';
142 case RoutingStrategy.RROBIN
143 text = 'RoundRobin';
144 case RoutingStrategy.WRROBIN
145 text = 'WeightedRoundRobin';
146 case RoutingStrategy.FIRING
147 text = '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
155 text = 'Disabled';
156 otherwise
157 line_error(mfilename, 'Unrecognized routing strategy type.');
158 end
159 end
160 end
161end