1%{ @file cache_rrm_meanfield_ode.m
2 % @brief ODE function
for RRM mean-field cache dynamics
4 % @author LINE Development Team
8 % @brief Computes ODE dynamics
for RRM mean-field cache model
11 % This function defines the ODE system
for the Random Replacement Model (RRM)
12 % mean-field cache dynamics.
16 % dxdt = cache_rrm_meanfield_ode(t, x, lambda, m, n, h)
21 % <tr><th>Name<th>Description
22 % <tr><td>t<td>Time variable (unused)
23 % <tr><td>x<td>State vector
24 % <tr><td>lambda<td>Arrival rates per item
25 % <tr><td>m<td>Cache capacity vector
26 % <tr><td>n<td>Number of items
27 % <tr><td>h<td>Number of cache levels
32 % <tr><th>Name<th>Description
33 % <tr><td>dxdt<td>Time derivative of state vector
36function dxdt = cache_rrm_meanfield_ode(~, x, lambda, m, n, h)
37% Reshape state vector to matrix form: x_{k,s}
38x = reshape(x, [n, 1+ h]);
40% TODO check list 0 dxdt
46 % First term: promotion from list s-1
49 sum1 = sum1 + lambda(k1) / m(s) * x(k1,1+ s-1) * x(k, 1+ s);
52 % Second term: demotion from list s+1
56 sum2 = sum2 + lambda(k1) / m(s+1) * x(k1,1+ s) * x(k, 1+ s+1);
58 sum2 = sum2 - lambda(k) * x(k,1+ s);
64 dxdt(k, 1+s) = lambda(k) * x(k, 1+ s-1) - sum1 + sum2;
67 dxdt(k, 1) = - sum(dxdt(k, 2:(1+h)));
70dxdt = dxdt(:); % Flatten to vector