3model = Network(
'model');
5node{1} = Delay(model,
'Delay');
6node{2} = Queue(model,
'Queue1', SchedStrategy.FCFS);
7jobclass{1} = ClosedClass(model,
'Class1', 3, node{2}, 0);
8jobclass{2} = ClosedClass(model,
'Class2', 2, node{2}, 0);
9node{2}.setNumServers(3);
11node{1}.setService(
jobclass{1}, Exp(1));
12node{1}.setService(
jobclass{2}, Exp(1));
13node{2}.setService(
jobclass{1}, Exp(1.2));
14node{2}.setService(
jobclass{2}, Erlang.fitMeanAndSCV(1.0,0.5));
16M = model.getNumberOfStations();
17K = model.getNumberOfClasses();
20P{1,1} = [0.3,0.1; 0.2,0];
21P{1,2} = [0.6,0; 0.8,0];
26[Qt,Ut,Tt] = model.getTranHandles();
27options = Solver.defaultOptions;
31options.timespan = [0,5];
32%% This part illustrates the execution of different solvers
33solver{1} = CTMC(model,options);
34%solver{end+1} = JMT(model,options);
35%solver{end+1} = SSA(model,options);
36solver{end+1} = FLD(model,options);
37%solver{end+1} = MVA(model,options);
40sn = model.getStruct();
42disp(
'Prior 1: prior all on default initialization')
44disp('Initial state
is:')
45[sn.space{1}(1,:),sn.space{2}(1,:)]
47 fprintf(1,
'SOLVER: %s\n',solver{s}.getName());
48 [QNt,UNt,TNt] = solver{s}.getTranAvg(Qt,Ut,Tt);
50 plot(QNt{2,1}.t,QNt{2,1}.metric,dashing{s}); hold on
53title(
'Prior on default state');
54ylabel(
'QLen- station 2, class 1');
60disp('Prior 2: prior all on first found state with the same number of jobs')
61model.initFromMarginal([0,0;4,1]);
63disp('Initial state
is:')
64[sn.space{1}(1,:),sn.space{2}(1,:)]
67 fprintf(1,
'SOLVER: %s\n',solver{s}.getName());
68 [QNt_marg,UNt_marg,TNt_marg] = solver{s}.getTranAvg(Qt,Ut,Tt);
70 plot(QNt_marg{2,1}.t,QNt_marg{2,1}.metric,dashing{s}); hold on
73title(
'Prior on first state with the same number of jobs');
74ylabel(
'QLen- station 2, class 1');
80disp('Prior 3: uniform prior over all states with the same number of jobs')
81model.initFromMarginal([0,0;4,1]);
82disp('Initial states are:')
84[repmat(space{1}(1,:),size(space{2},1),1),space{2}]
85prior = node{2}.getStatePrior;
86prior = 0*prior; prior=ones(size(prior))/length(prior);
87node{2}.setStatePrior(prior);
90 fprintf(1,
'SOLVER: %s\n',solver{s}.getName());
91 [QNt_unif,UNt_unif,TNt_unif] = solver{s}.getTranAvg(Qt,Ut,Tt);
93 plot(QNt_unif{2,1}.t,QNt_unif{2,1}.metric,dashing{s}); hold on
95title(
'Uniform prior on states with the same number of jobs');
96ylabel(
'QLen- station 2, class 1');
100legend('ctmc','fluid')