1% Test ETAQA FCFS departure process: SolverMAM dec.mmap vs SolverLDES
3% Erl(5)/Erl(2)/1 -> Erl(3)/1 FCFS tandem
4% Compares MAM (dec.mmap with ETAQA departures) against LDES simulation
6model = Network(
'ETAQA-FCFS-Tandem');
8source = Source(model,
'Source');
9queue1 = Queue(model,
'Queue1', SchedStrategy.FCFS);
10queue2 = Queue(model,
'Queue2', SchedStrategy.FCFS);
11sink = Sink(model,
'Sink');
13oclass = OpenClass(model,
'Class1');
14source.setArrival(oclass, Erlang.fitMeanAndOrder(2, 5)); % mean=2, SCV=0.2
15queue1.setService(oclass, Erlang.fitMeanAndOrder(0.8, 2)); % rho1=0.4
16queue2.setService(oclass, Erlang.fitMeanAndOrder(1.2, 3)); % rho2=0.6
18model.link(Network.serialRouting(source, queue1, queue2, sink));
21solverMMAP = SolverMAM(model,
'method',
'dec.mmap');
22T_mmap = solverMMAP.getAvgTable();
24solverSRC = SolverMAM(model,
'method',
'dec.source');
25T_src = solverSRC.getAvgTable();
27solverMVA = SolverMVA(model);
28T_mva = solverMVA.getAvgTable();
30solverLDES = SolverLDES(model,
'seed', 23000,
'samples', 5e5);
31T_ldes = solverLDES.getAvgTable();
34fprintf(
'\n=== ETAQA FCFS: MAM vs LDES ===\n');
35fprintf(
'%-10s %10s %10s %10s %10s\n',
'Station',
'LDES',
'MVA',
'dec.source',
'dec.mmap');
37fprintf(
'--- Queue Lengths ---\n');
38for i = 1:height(T_mva)
39 stn = string(T_mva.Station(i));
40 if contains(stn,
'Queue')
41 fprintf('%-10s %10.4f %10.4f %10.4f %10.4f\n', stn, ...
42 T_ldes.QLen(i), T_mva.QLen(i), T_src.QLen(i), T_mmap.QLen(i));
46fprintf('--- Response Times ---\n');
47for i = 1:height(T_mva)
48 stn =
string(T_mva.Station(i));
49 if contains(stn, 'Queue')
50 fprintf('%-10s %10.4f %10.4f %10.4f %10.4f\n', stn, ...
51 T_ldes.RespT(i), T_mva.RespT(i), T_src.RespT(i), T_mmap.RespT(i));
55fprintf('--- Utilizations ---\n');
56for i = 1:height(T_mva)
57 stn =
string(T_mva.Station(i));
58 if contains(stn, 'Queue')
59 fprintf('%-10s %10.4f %10.4f %10.4f %10.4f\n', stn, ...
60 T_ldes.Util(i), T_mva.Util(i), T_src.Util(i), T_mmap.Util(i));