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',strrep(solver{s}.getName(),
'Solver',
''));
48 [QNt,UNt,TNt] = solver{s}.getTranAvg(Qt,Ut,Tt);
49 fprintf(
'SteadyStateQLen[%s/Prior1]: %.6f\n', strrep(solver{s}.getName(),
'Solver',
''), QNt{2,1}.metric(end));
51 plot(QNt{2,1}.t,QNt{2,1}.metric,dashing{s}); hold on
54title(
'Prior on default state');
55ylabel(
'QLen- station 2, class 1');
61disp('Prior 2: prior all on first found state with the same number of jobs')
62model.initFromMarginal([0,0;4,1]);
64disp('Initial state
is:')
65[sn.space{1}(1,:),sn.space{2}(1,:)]
68 fprintf(1,
'SOLVER: %s\n',strrep(solver{s}.getName(),
'Solver',
''));
69 [QNt_marg,UNt_marg,TNt_marg] = solver{s}.getTranAvg(Qt,Ut,Tt);
70 fprintf(
'SteadyStateQLen[%s/Prior2]: %.6f\n', strrep(solver{s}.getName(),
'Solver',
''), QNt_marg{2,1}.metric(end));
72 plot(QNt_marg{2,1}.t,QNt_marg{2,1}.metric,dashing{s}); hold on
75title(
'Prior on first state with the same number of jobs');
76ylabel(
'QLen- station 2, class 1');
82disp('Prior 3: uniform prior over all states with the same number of jobs')
83model.initFromMarginal([0,0;4,1]);
84disp('Initial states are:')
86[repmat(space{1}(1,:),size(space{2},1),1),space{2}]
87prior = node{2}.getStatePrior;
88prior = 0*prior; prior=ones(size(prior))/length(prior);
89node{2}.setStatePrior(prior);
92 %fprintf(1,
'SOLVER: %s\n',strrep(solver{s}.getName(),
'Solver',
''));
93 [QNt_unif,UNt_unif,TNt_unif] = solver{s}.getTranAvg(Qt,Ut,Tt);
94 fprintf(
'SteadyStateQLen[%s/Prior3]: %.6f\n', strrep(solver{s}.getName(),
'Solver',
''), QNt_unif{2,1}.metric(end));
96 plot(QNt_unif{2,1}.t,QNt_unif{2,1}.metric,dashing{s}); hold on
98title(
'Uniform prior on states with the same number of jobs');
99ylabel(
'QLen- station 2, class 1');
102xlim(options.timespan)
103legend('ctmc','fluid')