LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
fcr_mm1waitq.m
1%% Finite Capacity Region with Blocking vs M/M/1
2% This example shows that an FCR with blocking (waitq) around a single
3% queue behaves identically to a standard M/M/1 queue, since jobs
4% simply wait when the region is "full" (no actual capacity limit effect).
5
6clear; clc;
7
8%% Parameters
9arrivalRate = 0.5;
10serviceRate = 1.0;
11
12%% Model 1: Queue with FCR (blocking)
13model1 = Network('FCR Blocking');
14
15source1 = Source(model1, 'Source');
16queue1 = Queue(model1, 'Queue', SchedStrategy.FCFS);
17sink1 = Sink(model1, 'Sink');
18
19jobclass1 = OpenClass(model1, 'Class1', 0);
20
21source1.setArrival(jobclass1, Exp(arrivalRate));
22queue1.setService(jobclass1, Exp(serviceRate));
23
24P1 = model1.initRoutingMatrix();
25P1.set(jobclass1, jobclass1, source1, queue1, 1.0);
26P1.set(jobclass1, jobclass1, queue1, sink1, 1.0);
27model1.link(P1);
28
29% Add FCR with blocking - jobs wait when region is full
30fcr = model1.addRegion({queue1});
31fcr.setGlobalMaxJobs(10);
32fcr.setDropRule(jobclass1, false); % false = block (wait)
33
34%% Model 2: Standard M/M/1 (no FCR)
35model2 = Network('M/M/1');
36
37source2 = Source(model2, 'Source');
38queue2 = Queue(model2, 'Queue', SchedStrategy.FCFS);
39sink2 = Sink(model2, 'Sink');
40
41jobclass2 = OpenClass(model2, 'Class1', 0);
42
43source2.setArrival(jobclass2, Exp(arrivalRate));
44queue2.setService(jobclass2, Exp(serviceRate));
45
46P2 = model2.initRoutingMatrix();
47P2.set(jobclass2, jobclass2, source2, queue2, 1.0);
48P2.set(jobclass2, jobclass2, queue2, sink2, 1.0);
49model2.link(P2);
50
51%% Solve both models and compare results
52solver1 = JMT(model1, 'seed', 23000, 'samples', 100000);
53avgTable1 = solver1.getAvgNodeTable()
54
55solver2 = JMT(model2, 'seed', 23000, 'samples', 100000);
56avgTable2 = solver2.getAvgNodeTable()