LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
fcr_oqnwaitq.m
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).
5
6clear; clc;
7
8%% Create network
9model = Network('FCR Blocking Example');
10
11%% Add nodes
12source = Source(model, 'Source');
13queue1 = Queue(model, 'Queue1', SchedStrategy.FCFS);
14queue2 = Queue(model, 'Queue2', SchedStrategy.FCFS);
15sink = Sink(model, 'Sink');
16
17%% Add job classes
18class1 = OpenClass(model, 'Class1', 0);
19class2 = OpenClass(model, 'Class2', 1);
20
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));
28
29%% Create routing matrix
30P = model.initRoutingMatrix();
31% Class1 routing
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);
37
38% Class2 routing
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);
44
45model.link(P);
46
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)
55
56%% Run JMT
57solver = JMT(model, 'seed', 23000, 'samples', 50000);
58avgTable = solver.getAvgTable()
Definition mmt.m:92