LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
init_state_fcfs_nonexp.m
1clear node jobclass solver;
2
3model = Network('model');
4
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);
10
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));
15
16M = model.getNumberOfStations();
17K = model.getNumberOfClasses();
18
19P = cell(K,K);
20P{1,1} = [0.3,0.1; 0.2,0];
21P{1,2} = [0.6,0; 0.8,0];
22P{2,2} = [0,1; 0,0];
23P{2,1} = [0,0; 1,0];
24
25model.link(P);
26[Qt,Ut,Tt] = model.getTranHandles();
27options = Solver.defaultOptions;
28options.verbose=1;
29options.samples=1e4;
30options.stiff=true;
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);
38dashing = {'-','--'};
39
40sn = model.getStruct();
41%%
42disp('Prior 1: prior all on default initialization')
43model.initDefault;
44disp('Initial state is:')
45[sn.space{1}(1,:),sn.space{2}(1,:)]
46for s=1:length(solver)
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));
50 subplot(3,1,1);
51 plot(QNt{2,1}.t,QNt{2,1}.metric,dashing{s}); hold on
52 solver{s}.reset();
53end
54title('Prior on default state');
55ylabel('QLen- station 2, class 1');
56ylim([0,5])
57xlabel('Time t');
58xlim(options.timespan)
59legend('ctmc','fluid')
60%%
61disp('Prior 2: prior all on first found state with the same number of jobs')
62model.initFromMarginal([0,0;4,1]);
63sn = model.getStruct;
64disp('Initial state is:')
65[sn.space{1}(1,:),sn.space{2}(1,:)]
66for s=1:length(solver)
67 solver{s}.reset();
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));
71 subplot(3,1,2);
72 plot(QNt_marg{2,1}.t,QNt_marg{2,1}.metric,dashing{s}); hold on
73 solver{s}.reset();
74end
75title('Prior on first state with the same number of jobs');
76ylabel('QLen- station 2, class 1');
77ylim([0,5])
78xlabel('Time t');
79xlim(options.timespan)
80legend('ctmc','fluid')
81%%
82disp('Prior 3: uniform prior over all states with the same number of jobs')
83model.initFromMarginal([0,0;4,1]);
84disp('Initial states are:')
85space=sn.space;
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);
90for s=1:length(solver)
91 solver{s}.reset();
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));
95 subplot(3,1,3);
96 plot(QNt_unif{2,1}.t,QNt_unif{2,1}.metric,dashing{s}); hold on
97end
98title('Uniform prior on states with the same number of jobs');
99ylabel('QLen- station 2, class 1');
100ylim([0,5])
101xlabel('Time t');
102xlim(options.timespan)
103legend('ctmc','fluid')
104hold off