1% Example 2: A multiclass M/G/1 queue
2GlobalConstants.setVerbose(VerboseLevel.STD);
3cwd = fileparts(mfilename(
'fullpath'));
5model = Network(
'M/G/1');
6source = Source(model,
'Source');
7queue = Queue(model,
'Queue', SchedStrategy.FCFS);
8sink = Sink(model,
'Sink');
10jobclass1 = OpenClass(model,
'Class1');
11jobclass2 = OpenClass(model,
'Class2');
13source.setArrival(jobclass1, Exp(0.5));
14source.setArrival(jobclass2, Exp(0.5));
16queue.setService(jobclass1, Erlang.fitMeanAndSCV(1,1/3));
17tracePath = fullfile(cwd,
'example_trace.txt');
18queue.setService(jobclass2, Replayer(tracePath));
20% Use direct serial routing
for multiclass model
21% model.link(Network.serialRouting(source,queue,sink));
22P = model.initRoutingMatrix();
23P.set(jobclass1, Network.serialRouting(source,queue,sink));
24P.set(jobclass2, Network.serialRouting(source,queue,sink));
27jmtAvgTable = JMT(model,
'seed',23000).avgTable()
29queue.setService(jobclass2, Replayer(tracePath).fitAPH());
31% Use options
struct to set nested config fields
32ctmcOptions = CTMC.defaultOptions;
33ctmcOptions.cutoff = 2;
34ctmcOptions.verbose =
true;
35ctmcOptions.config.nonmkv =
'none'; % Disable automatic non-Markovian conversion
36ctmcAvgTable2 = CTMC(model, ctmcOptions).avgTable()
38ctmcOptions.cutoff = 4;
39ctmcAvgTable4 = CTMC(model, ctmcOptions).avgTable()
41mamOptions = MAM.defaultOptions;
42mamOptions.config.nonmkv =
'none';
43mamAvgTable = MAM(model, mamOptions).avgTable()