Class Retrieval_mva

java.lang.Object
jline.api.retrieval.Retrieval_mva

public final class Retrieval_mva extends Object
Exact MVA-style recursion for delayed-hit (list-based) cache metrics.

Port of matlab/src/api/retrieval/retrieval_mva.m, twin of cpp/include/line/api/retrieval/retrieval_mva.h and of the native Python api.retrieval.retrieval_mva.

This is the exact recursion that Retrieval_fpi approximates. Writing phi^(k) for the delayed-hit probability in the system WITHOUT item k,

   theta_ij(m) = gamma_ij / (1 + lambda_i eta_0i
                   + sum_s lambda_i eta_si (1 + sum_{k!=i} phi^(i)_sk(m - 1_j)))
   xi_j(m)     = m_j / sum_i theta_ij(m) (1 - pihit_i(m - 1_j))
   pi_ij(m)    = theta_ij(m) xi_j(m) (1 - pihit_i(m - 1_j))
   pi_i0(m)    = (1 - pihit_i(m)) / (1 + lambda_i eta_0i
                   + sum_s lambda_i eta_si (1 + sum_{k!=i} phi^(i)_sk(m)))
   phi_sk(m)   = lambda_k pi_k0(m) eta_sk (1 + sum_{i!=k} phi^(k)_si(m))
   phi_0k(m)   = lambda_k eta_0k pi_k0(m)
 
memoized over (item subset, capacity vector). The recursion bottoms out at the empty item set and at any capacity able to hold every remaining item, where the items are permanently cached: hit probability one, no miss and no fetch.

Cost is O(2^n n^2 h r prod_j (1+m_j)) in time and memory, so this is a small-case ORACLE; use Retrieval_fpi beyond that.

  • Method Details

    • retrieval_mva

      public static Retrieval_mva.Result retrieval_mva(int[] m, double[] lambda, Matrix eta, Matrix gamma)
      Parameters:
      m - 1 x h cache list capacities
      lambda - 1 x n per-item arrival rates
      eta - n x (r+1) fetching demands; column 0 is the IS station, columns 1..r the PS stations
      gamma - n x h access factors