LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
example_infer_ubo_closed.m
1clear node jobclass solver AvgTable
2
3%% define model
4model = Network('model');
5
6node{1} = Delay(model, 'Delay');
7node{2} = Queue(model, 'Queue1', SchedStrategy.PS);
8jobclass{1} = ClosedClass(model, 'Class1', 1, node{1}, 0);
9jobclass{2} = ClosedClass(model, 'Class2', 2, node{1}, 0);
10
11node{1}.setService(jobclass{1}, Exp.fitMean(1.0));
12node{1}.setService(jobclass{2}, Exp.fitMean(1.0));
13
14node{2}.setService(jobclass{1}, Exp(NaN)); % NaN = to be estimated
15node{2}.setService(jobclass{2}, Exp(NaN)); % NaN = to be estimated
16
17P = model.initRoutingMatrix;
18P{1} = [0,1; 1,0];
19P{2} = [0,1; 1,0];
20model.link(P);
21
22%% Generate random dataset for utilization and average arrival rate
23n = 30; % 30 measured points
24ts = 1:n;
25ts2 = 1:1:n;
26arvr2_samples = ones(n,1)-rand(n,1)*0.15;
27arvr1_samples = 2*ones(n,1)-rand(n,1)*0.15;
28util_samples = 0.1 * arvr1_samples + 0.3 * arvr2_samples;
29respt1_samples = 0.1./(1-util_samples);
30respt2_samples = 0.3./(1-util_samples);
31
32%% Estimate demands
33options = ParamEstimator.defaultOptions;
34options.method = 'ubo';
35se = ParamEstimator(model, options);
36
37lambda1 = SampledMetric(MetricType.ArvR, ts, arvr1_samples, node{2}, jobclass{1});
38lambda2 = SampledMetric(MetricType.ArvR, ts2, arvr2_samples, node{2}, jobclass{2});
39respT1 = SampledMetric(MetricType.RespT, ts, respt1_samples, node{2}, jobclass{1});
40respT2 = SampledMetric(MetricType.RespT, ts, respt2_samples, node{2}, jobclass{2});
41util = SampledMetric(MetricType.Util, ts, util_samples, node{2});
42
43se.addSamples(lambda1);
44se.addSamples(lambda2);
45se.addSamples(respT1);
46se.addSamples(respT2);
47se.addSamples(util);
48se.interpolate();
49estVal = se.estimateAt(node{2})
50
51%% Solve model
52solver = {};
53solver{end+1} = SolverMVA(model);
54
55AvgTable = cell(1,length(solver));
56for s=1:length(solver)
57 fprintf(1,'SOLVER: %s\n',solver{s}.getName());
58 AvgTable{s} = solver{s}.getAvgTable();
59 AvgTable{s}
60end