1% Test ETAQA PS departure process: SolverMAM dec.mmap vs SolverLDES
3% Erl(3)/M/1-PS -> M/1-PS tandem
4% Compares MAM (dec.mmap with ETAQA PS departures) against LDES simulation
6model = Network(
'ETAQA-PS-Tandem');
8source = Source(model,
'Source');
9queue1 = Queue(model,
'Queue1', SchedStrategy.PS);
10queue2 = Queue(model,
'Queue2', SchedStrategy.PS);
11sink = Sink(model,
'Sink');
13oclass = OpenClass(model,
'Class1');
14source.setArrival(oclass, Erlang.fitMeanAndOrder(2, 3)); % mean=2, SCV=1/3
15queue1.setService(oclass, Exp(2)); % rho1=0.5
16queue2.setService(oclass, Exp(1.5)); % rho2=0.667
18model.link(Network.serialRouting(source, queue1, queue2, sink));
21solverMMAP = SolverMAM(model,
'method',
'dec.mmap');
22T_mmap = solverMMAP.getAvgTable();
24solverMVA = SolverMVA(model);
25T_mva = solverMVA.getAvgTable();
27solverLDES = SolverLDES(model,
'seed', 23000,
'samples', 5e5);
28T_ldes = solverLDES.getAvgTable();
31fprintf(
'\n=== ETAQA PS: MAM vs LDES ===\n');
32fprintf(
'%-10s %10s %10s %10s\n',
'Station',
'LDES',
'MVA',
'dec.mmap');
34fprintf(
'--- Queue Lengths ---\n');
35for i = 1:height(T_mva)
36 stn = string(T_mva.Station(i));
37 if contains(stn,
'Queue')
38 fprintf('%-10s %10.4f %10.4f %10.4f\n', stn, ...
39 T_ldes.QLen(i), T_mva.QLen(i), T_mmap.QLen(i));
43fprintf('--- Response Times ---\n');
44for i = 1:height(T_mva)
45 stn =
string(T_mva.Station(i));
46 if contains(stn, 'Queue')
47 fprintf('%-10s %10.4f %10.4f %10.4f\n', stn, ...
48 T_ldes.RespT(i), T_mva.RespT(i), T_mmap.RespT(i));
52fprintf('--- Utilizations ---\n');
53for i = 1:height(T_mva)
54 stn =
string(T_mva.Station(i));
55 if contains(stn, 'Queue')
56 fprintf('%-10s %10.4f %10.4f %10.4f\n', stn, ...
57 T_ldes.Util(i), T_mva.Util(i), T_mmap.Util(i));