LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
fcr_mm1kdrop.m
1%% Finite Capacity Region with Dropping vs M/M/1/K
2% This example shows that an FCR with dropping around a single queue
3% behaves like an M/M/1/K queue, where K is the FCR capacity.
4% Jobs arriving when the region is full are dropped (lost).
5
6clear; clc;
7
8%% Parameters
9arrivalRate = 0.8;
10serviceRate = 1.0;
11K = 3;
12
13%% Model 1: Queue with FCR (dropping)
14model1 = Network('FCR Dropping');
15
16source1 = Source(model1, 'Source');
17queue1 = Queue(model1, 'Queue', SchedStrategy.FCFS);
18sink1 = Sink(model1, 'Sink');
19
20jobclass1 = OpenClass(model1, 'Class1', 0);
21
22source1.setArrival(jobclass1, Exp(arrivalRate));
23queue1.setService(jobclass1, Exp(serviceRate));
24
25P1 = model1.initRoutingMatrix();
26P1.set(jobclass1, jobclass1, source1, queue1, 1.0);
27P1.set(jobclass1, jobclass1, queue1, sink1, 1.0);
28model1.link(P1);
29
30% Add FCR with dropping - jobs are lost when region is full
31fcr = model1.addRegion({queue1});
32fcr.setGlobalMaxJobs(K);
33fcr.setDropRule(jobclass1, true); % true = drop jobs
34
35%% Model 2: M/M/1/K using queue capacity
36model2 = Network('M/M/1/K');
37
38source2 = Source(model2, 'Source');
39queue2 = Queue(model2, 'Queue', SchedStrategy.FCFS);
40queue2.setNumberOfServers(1);
41queue2.setCapacity(K); % Set queue capacity to K
42sink2 = Sink(model2, 'Sink');
43
44jobclass2 = OpenClass(model2, 'Class1', 0);
45
46source2.setArrival(jobclass2, Exp(arrivalRate));
47queue2.setService(jobclass2, Exp(serviceRate));
48
49P2 = model2.initRoutingMatrix();
50P2.set(jobclass2, jobclass2, source2, queue2, 1.0);
51P2.set(jobclass2, jobclass2, queue2, sink2, 1.0);
52model2.link(P2);
53
54%% Solve both models and compare results
55solver1 = JMT(model1, 'seed', 23000, 'samples', 100000);
56avgTable1 = solver1.getAvgTable()
57
58solver2 = JMT(model2, 'seed', 23000, 'samples', 100000);
59avgTable2 = solver2.getAvgTable()