1% Example: Global Class-Level Patience
3% This example demonstrates setting patience at the job
class level rather
4% than per-queue. When patience
is set globally on a
class, it applies to
5% all queues that the
class visits (unless overridden by queue-specific settings).
8% - Three queues in series
10% * Class 1: Global exponential patience (applies to all queues)
11% * Class 2: Global deterministic patience + queue-specific
override at Queue2
13% Copyright (c) 2012-2026, Imperial College London
18model = Network(
'Global Patience Example');
21node{1} = Source(model,
'Source');
22node{2} = Queue(model,
'Queue1', SchedStrategy.FCFS);
23node{3} = Queue(model,
'Queue2', SchedStrategy.FCFS);
24node{4} = Queue(model,
'Queue3', SchedStrategy.FCFS);
25node{5} = Sink(model,
'Sink');
28jobclass{1} = OpenClass(model,
'GlobalExpClass', 0);
29jobclass{2} = OpenClass(model,
'OverrideClass', 0);
31% Set GLOBAL patience at the
class level
32% This applies to ALL queues unless overridden
33jobclass{1}.setPatience(Exp(0.4)); % Mean patience = 2.5 everywhere
34jobclass{2}.setPatience(Det(4.0)); % Fixed patience = 4.0 everywhere (by
default)
38 node{2}.setService(
jobclass{c}, Exp(1.0));
39 node{3}.setService(
jobclass{c}, Exp(1.2));
40 node{4}.setService(
jobclass{c}, Exp(0.8));
44node{1}.setArrival(
jobclass{1}, Exp(0.3));
45node{1}.setArrival(
jobclass{2}, Exp(0.2));
47% Override global patience
for Class 2 at Queue2 only
48% This demonstrates per-queue settings taking precedence over global settings
49node{3}.setPatience(
jobclass{2}, Exp(0.2)); % More impatient at Queue2
52K = model.getNumberOfClasses();
55 P{c,c} = [0, 1, 0, 0, 0; % Source -> Queue1
56 0, 0, 1, 0, 0; % Queue1 -> Queue2
57 0, 0, 0, 1, 0; % Queue2 -> Queue3
58 0, 0, 0, 0, 1; % Queue3 -> Sink
59 0, 0, 0, 0, 0]; % Sink -> nowhere
65options = Solver.defaultOptions;
71disp(
'This example demonstrates global class-level patience configuration.');
73disp(
'Class 1 (GlobalExpClass):');
74disp(
' - Has exponential patience (mean = 2.5) at ALL queues (global setting)');
76disp(
'Class 2 (OverrideClass):');
77disp(
' - Has deterministic patience (timeout = 4.0) at Queue1 and Queue3 (global setting)');
78disp(
' - Has exponential patience (mean = 5.0) at Queue2 (per-queue override)');
81solver{1} = JMT(model, options);
83fprintf(1,
'SOLVER: %s\n', solver{1}.getName());
84AvgTable{1} = solver{1}.getAvgTable();
88disp(
'Note: Global patience settings simplify configuration when the same');
89disp(
' patience behavior applies across multiple queues. Per-queue settings');
90disp(
' can override global settings when needed.');