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