3% CLIMB (transposition) replacement: on a hit an item moves up one position;
4% on a miss it enters at
the tail. Exact in CTMC; simulated in SSA/LDES.
5% Not product-form, so MVA/NC/FLD reject it (use CTMC/SSA/LDES).
7model = Network(
'model');
9n = 5; % number of items
10m = 2; % cache capacity
12delay = Delay(model,
'Delay');
13cacheNode = Cache(model,
'Cache', n, m, ReplacementStrategy.CLIMB);
15jobClass = ClosedClass(model,
'JobClass', 1, delay, 0);
16hitClass = ClosedClass(model,
'HitClass', 0, delay, 0);
17missClass = ClosedClass(model,
'MissClass', 0, delay, 0);
19delay.setService(jobClass, Exp(1));
21pAccess = Zipf(1.2, n); % Zipf-like item references
22cacheNode.setRead(jobClass, pAccess);
24cacheNode.setHitClass(jobClass, hitClass);
25cacheNode.setMissClass(jobClass, missClass);
27P = model.initRoutingMatrix;
28P{jobClass, jobClass}(delay, cacheNode) = 1.0;
29P{hitClass, jobClass}(cacheNode, delay) = 1.0;
30P{missClass, jobClass}(cacheNode, delay) = 1.0;
33solver{1} = CTMC(model,
'keep',
false);
34AvgTable{1} = solver{1}.getAvgNodeTable; AvgTable{1}
37solver{2} = SSA(model,
'samples',1e4,
'method',
'serial',
'seed',23000);
38AvgTable{2} = solver{2}.getAvgNodeTable; AvgTable{2}