1%% Multiclass Closed Network with MAM
3% This example demonstrates MAM with RCAT methods on a multiclass closed queueing
4% network. The RCAT algorithm handles multiple job
classes by creating
5% separate processes
for each (station,
class) pair.
7% Copyright (c) 2012-2025, Imperial College London
13N1 = 5; % Number of
class 1 jobs
14N2 = 3; % Number of
class 2 jobs
15mu1_q1 = 2.0; % Service rate
for class 1 at queue 1
16mu2_q1 = 1.5; % Service rate
for class 2 at queue 1
17mu1_q2 = 1.0; % Service rate
for class 1 at queue 2
18mu2_q2 = 0.8; % Service rate
for class 2 at queue 2
21model = Network(
'Multiclass-Closed');
23queue1 = Queue(model,
'Queue1', SchedStrategy.PS);
24queue2 = Queue(model,
'Queue2', SchedStrategy.PS);
26class1 = ClosedClass(model,
'Class1', N1, queue1);
27class2 = ClosedClass(model,
'Class2', N2, queue1);
29queue1.setService(class1, Exp(mu1_q1));
30queue1.setService(class2, Exp(mu2_q1));
31queue2.setService(class1, Exp(mu1_q2));
32queue2.setService(class2, Exp(mu2_q2));
34% Simple routing: each
class cycles through both queues
35P = model.initRoutingMatrix();
36P{1,1} = Network.serialRouting({queue1, queue2});
37P{2,2} = Network.serialRouting({queue1, queue2});
40%% Solve with MAM
using INAP method (
default)
41solverINAP = MAM(model,
'method',
'inap');
42avgTableINAP = solverINAP.getAvgTable()
44%% Solve with MAM
using exact method (AutoCAT)
45solverExact = MAM(model,
'method',
'exact');
46avgTableExact = solverExact.getAvgTable()
48%% Solve with MVA
for comparison
49solverMVA = MVA(model);
50avgTableMVA = solverMVA.getAvgTable()