LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
example_infer_qmle_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', 2, node{1}, 0);
9jobclass{2} = ClosedClass(model, 'Class2', 3, 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 queue-lengths
23n = 1000;
24ts = 1:n;
25% synthetic queue-length data consistent with PS demands of 0.2 and 0.4
26qlen1_samples = 0.3 * ones(n,1) + rand(n,1) * 0.1;
27qlen2_samples = 0.8 * ones(n,1) + rand(n,1) * 0.1;
28
29%% Estimate demands using QMLE
30options = ParamEstimator.defaultOptions;
31options.method = 'qmle';
32se = ParamEstimator(model, options);
33
34ql1 = SampledMetric(MetricType.QLen, ts, qlen1_samples, node{2}, jobclass{1});
35ql2 = SampledMetric(MetricType.QLen, ts, qlen2_samples, node{2}, jobclass{2});
36
37se.addSamples(ql1);
38se.addSamples(ql2);
39se.interpolate();
40estVal = se.estimateAt(node{2})
41
42%% Solve model
43solver = {};
44solver{end+1} = SolverMVA(model);
45
46AvgTable = cell(1,length(solver));
47for s=1:length(solver)
48 fprintf(1,'SOLVER: %s\n',solver{s}.getName());
49 AvgTable{s} = solver{s}.getAvgTable();
50 AvgTable{s}
51end