3clearvars -except exampleName;
4model = Network(
'model');
6node{1} = Delay(model,
'Delay');
7node{2} = Queue(model,
'Queue1', SchedStrategy.FCFS);
8node{3} = Source(model,
'Source');
9node{4} = Sink(model,
'Sink');
11jobclass{1} = OpenClass(model,
'Class1', 0);
13node{1}.setService(
jobclass{1}, HyperExp(0.5,3.0,10.0));
14node{2}.setService(
jobclass{1}, Exp(NaN)); % NaN = to be estimated
15node{3}.setArrival(
jobclass{1}, Exp(0.1));
17M = model.getNumberOfStations();
18K = model.getNumberOfClasses();
21P{1,1} = [0,1,0,0; 0,0,0,1; 1,0,0,0; 0,0,0,0];
25%% Generate random dataset
for utilization and average arrival rate
27ts = 1:n; % timestamps at which the system
is sampled
28arvrate_samples = 2*ones(n,1)-rand(n,1)*0.15; % sampled arrival rate values
29util_samples = ones(n,1)-rand(n,1)*0.05; % sampled utilization values
30respt_samples = 0.7./(1-util_samples); % sampled response time values
33estoptions = ParamEstimator.defaultOptions;
34estoptions.method =
'ubr';
35se = ParamEstimator(model, estoptions);
37lambda1 = SampledMetric(MetricType.ArvR, ts, arvrate_samples, node{2},
jobclass{1});
38respT1 = SampledMetric(MetricType.RespT, ts, respt_samples, node{2},
jobclass{1});
39util = SampledMetric(MetricType.Util, ts, util_samples, node{2});
41se.addSamples(lambda1);
44se.interpolate(); % ensures that the metrics are interpolated at the same time instants all
45estVal = se.estimateAt(node{2}) % the change to the NaN value in Exp
is applied automatically
48options = Solver.defaultOptions;
56solver{end+1} = SolverMVA(model);
58AvgTable = cell(1,length(solver));
60 fprintf(1,
'SOLVER: %s\n',solver{s}.getName());
61 AvgTable{s} = solver{s}.getAvgTable();