3n=5; m=[2,1]; alpha=1.0;
4replStrat = {ReplacementStrategy.RR, ReplacementStrategy.FIFO, ReplacementStrategy.LRU};
8%fprintf(1,
'replc-strategy, ctmc, mva, nc:\n');
9for s = 1:length(replStrat)
10 model = Network(
'model');
11 source = Source(model,
'Source');
12 cacheNode = Cache(model,
'Cache', n, m, replStrat{s});
13 sink = Sink(model,
'Sink');
15 jobClass = OpenClass(model,
'InitClass', 0);
16 hitClass = OpenClass(model,
'HitClass', 0);
17 missClass = OpenClass(model,
'MissClass', 0);
19 source.setArrival(jobClass, Exp(2));
21 pAccess = Zipf(alpha, n); % Zipf-like item references
22 cacheNode.setRead(jobClass, pAccess);
24 cacheNode.setHitClass(jobClass, hitClass);
25 cacheNode.setMissClass(jobClass, missClass);
27 P = model.initRoutingMatrix;
29 P{jobClass, jobClass}(source, cacheNode) = 1.0;
30 P{hitClass, hitClass}(cacheNode, sink) = 1.0;
31 P{missClass, missClass}(cacheNode, sink) = 1.0;
35 solver{end+1} = CTMC(model,
'keep',
false,
'cutoff',1,
'verbose',
false);
36 AvgTable{end+1} = solver{end}.getAvgNodeTable;
37 if ~isempty(cacheNode.getHitRatio)
38 ctmcHitRatio(s) = cacheNode.getHitRatio;
40 ctmcHitRatio(s) = NaN;
43 if MVA.supports(model)
44 solver{end+1} = MVA(model,
'verbose',
false);
45 model.reset; AvgTable{end+1} = solver{end}.getAvgNodeTable;
46 if ~isempty(cacheNode.getHitRatio)
47 mvaHitRatio(s) = cacheNode.getHitRatio;
54 solver{end+1} = NC(model,
'verbose',
false);
55 model.reset; AvgTable{end+1} = solver{end}.getAvgNodeTable;
56 if ~isempty(cacheNode.getHitRatio)
57 ncHitRatio(s) = cacheNode.getHitRatio;
65 fprintf(1,'%s: %.8f, %.8f, %.8f\n',ReplacementStrategy.toString(replStrat{s}),ctmcHitRatio(s),mvaHitRatio(s),ncHitRatio(s));