LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
cdf_respt_populations.m
1clear node jobclass;
2
3figure;
4label = {};
5nJobs = [1,4,8];
6plotColors = {'k';'b--';'r-.'};
7for ni = 1:length(nJobs)
8 N = nJobs(ni);
9 model = Network('model');
10
11 node{1} = Delay(model, 'Delay');
12 node{2} = Queue(model, 'Queue1', SchedStrategy.PS);
13 node{3} = Queue(model, 'Queue2', SchedStrategy.PS);
14
15 jobclass{1} = ClosedClass(model, 'Class1', N, node{1}, 0);
16
17 jobclass{1}.completes = false;
18
19 node{1}.setService(jobclass{1}, Exp(1/1));
20 node{2}.setService(jobclass{1}, Exp(1/2));
21 node{3}.setService(jobclass{1}, Exp(1/2));
22
23 M = model.getNumberOfStations();
24 K = model.getNumberOfClasses();
25
26 P = circul(M);
27 model.link(P);
28 %%
29 options = FLD.defaultOptions;
30 options.iter_max = 100;
31 solver = FLD(model, options);
32 AvgRespT{ni} = solver.getAvgRespT;
33 % Direct fluid mean response times (exact, codebase-independent parity target)
34 fprintf('FLD getAvgRespT N=%d:', N);
35 fprintf(' %.6f', AvgRespT{ni});
36 fprintf('\n');
37 RDfluid = solver.getCdfRespT();
38 %%
39 for c=1:model.getNumberOfClasses
40 for i=1:model.getNumberOfStations
41 AvgRespTfromCDF{ni}(i,c) = diff(RDfluid{i,c}(:,1))'*RDfluid{i,c}(2:end,2); %mean
42 PowerMoment2_R{ni}(i,c) = diff(RDfluid{i,c}(:,1))'*(RDfluid{i,c}(2:end,2).^2);
43 Variance_R{ni}(i,c) = PowerMoment2_R{ni}(i,c)-AvgRespTfromCDF{ni}(i,c)^2; %variance
44 SqCoeffOfVariationRespTfromCDF{ni}(i,c) = (Variance_R{ni}(i,c))/AvgRespTfromCDF{ni}(i,c)^2; %scv
45 end
46 end
47 for i=2
48 for c=1:model.getNumberOfClasses
49 semilogx(RDfluid{i,c}(:,2),RDfluid{i,c}(:,1),plotColors{find(N==nJobs)}); hold on;
50 end
51 end
52 AvgRespTfromCDF{ni}
53 SqCoeffOfVariationRespTfromCDF{ni}
54 label{end+1} = ['N=', num2str(N),' jobs'];
55end
56legend(label,'Location','SouthEast');
57xlim([0,200])
58title('Response time CDF at station 3 under increasing populations')
59ylabel('Pr[RespT < t]')
60xlabel('Response time t')