3% Multiclass FES Aggregation with Norton
's Theorem Verification
5% This example demonstrates Norton's theorem
for closed multiclass
6% queueing networks: a subset of stations
is replaced by a single
7% Flow-Equivalent Server (FES) whose LJCD service rates equal the
8% throughputs of the isolated subnetwork.
13%% Original 4-station tandem network with 2
classes
14model = Network(
'OriginalModel');
16node{1} = Delay(model,
'Delay');
17node{2} = Queue(model,
'Q1', SchedStrategy.PS);
18node{3} = Queue(model,
'Q2', SchedStrategy.PS);
19node{4} = Queue(model,
'Q3', SchedStrategy.PS);
21jobclass{1} = ClosedClass(model,
'Class1', N1, node{1}, 0);
22jobclass{2} = ClosedClass(model,
'Class2', N2, node{1}, 0);
24node{1}.setService(
jobclass{1}, Exp.fitMean(1.0));
25node{1}.setService(
jobclass{2}, Exp.fitMean(1.5));
26node{2}.setService(
jobclass{1}, Exp.fitMean(0.5));
27node{2}.setService(
jobclass{2}, Exp.fitMean(0.8));
28node{3}.setService(
jobclass{1}, Exp.fitMean(0.3));
29node{3}.setService(
jobclass{2}, Exp.fitMean(0.6));
30node{4}.setService(
jobclass{1}, Exp.fitMean(0.4));
31node{4}.setService(
jobclass{2}, Exp.fitMean(0.7));
33P = model.initRoutingMatrix();
34P{1,1} = [0 1 0 0; 0 0 1 0; 0 0 0 1; 1 0 0 0];
38%% Solve original model
39fprintf(
'MVA (original):\n');
40AvgOrig = SolverMVA(model,
'method',
'exact').getAvgTable;
43%% Aggregate Q1, Q2, Q3 into FES and solve with NC (convolution)
44[fesModel, ~, ~] = ModelAdapter.aggregateFES(model, ...
45 {node{2}, node{3}, node{4}},
struct(
'solver',
'mva',
'verbose',
false));
47fprintf(
'NC (FES model):\n');
48AvgNC = SolverNC(fesModel,
'method',
'exact').getAvgTable;