1%% Finite Capacity Region with Blocking (Multiclass Open Network)
2% This example creates a multiclass open network with 2 queues and a
3% finite capacity region with global and per-
class constraints.
4% When the region
is full, arriving jobs are blocked (wait in queue).
9model = Network(
'FCR Blocking Example');
12source = Source(model,
'Source');
13queue1 = Queue(model,
'Queue1', SchedStrategy.FCFS);
14queue2 = Queue(model,
'Queue2', SchedStrategy.FCFS);
15sink = Sink(model,
'Sink');
18class1 = OpenClass(model,
'Class1', 0);
19class2 = OpenClass(model,
'Class2', 1);
21%% Set arrival and service rates
22source.setArrival(class1, Exp(0.4));
23source.setArrival(class2, Exp(0.3));
24queue1.setService(class1, Exp(1.0));
25queue1.setService(class2, Exp(0.9));
26queue2.setService(class1, Exp(1.1));
27queue2.setService(class2, Exp(1.0));
29%% Create routing matrix
30P = model.initRoutingMatrix();
32P.set(class1, class1, source, queue1, 0.5);
33P.set(class1, class1, source, queue2, 0.5);
34P.set(class1, class1, queue1, queue2, 0.3);
35P.set(class1, class1, queue1, sink, 0.7);
36P.set(class1, class1, queue2, sink, 1.0);
39P.set(class2, class2, source, queue1, 0.6);
40P.set(class2, class2, source, queue2, 0.4);
41P.set(class2, class2, queue1, queue2, 0.5);
42P.set(class2, class2, queue1, sink, 0.5);
43P.set(class2, class2, queue2, sink, 1.0);
47%% Add finite capacity region with constraints
48% When region
is full, jobs wait (blocking behavior)
49fcr = model.addRegion({queue1, queue2});
50fcr.setGlobalMaxJobs(8); % Global: max 8 jobs in region
51fcr.setClassMaxJobs(class1, 5); % Class1: max 5 jobs
52fcr.setClassMaxJobs(class2, 4); % Class2: max 4 jobs
53fcr.setDropRule(class1,
false); %
false = block (wait)
54fcr.setDropRule(class2,
false); %
false = block (wait)
57solver = JMT(model,
'seed', 23000,
'samples', 50000);
58avgTable = solver.getAvgTable()