LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
cache_xi_fp.m
1%{ @file cache_xi_fp.m
2 % @brief Fixed-point iteration for computing cache performance metrics
3 %
4 % @author LINE Development Team
5%}
6
7%{
8 % @brief Computes cache performance metrics using fixed-point iteration
9 %
10 % @details
11 % This function uses fixed-point iteration to compute cache performance
12 % metrics including Lagrange multipliers, miss probabilities, and hit
13 % probabilities for given item popularity and cache capacity.
14 %
15 % @par Syntax:
16 % @code
17 % [xi, pi0, pij, it] = cache_xi_fp(gamma, m)
18 % [xi, pi0, pij, it] = cache_xi_fp(gamma, m, xi)
19 % @endcode
20 %
21 % @par Parameters:
22 % <table>
23 % <tr><th>Name<th>Description
24 % <tr><td>gamma<td>Item popularity probabilities
25 % <tr><td>m<td>Cache capacity
26 % <tr><td>xi<td>(Optional) Initial guess for Lagrange multipliers
27 % </table>
28 %
29 % @par Returns:
30 % <table>
31 % <tr><th>Name<th>Description
32 % <tr><td>xi<td>Converged Lagrange multipliers
33 % <tr><td>pi0<td>Miss probability per item
34 % <tr><td>pij<td>Hit probability per item per list
35 % <tr><td>it<td>Number of iterations
36 % </table>
37%}
38function [xi,pi0,pij,it] = cache_xi_fp(gamma,m,xi)
39[n,h]=size(gamma);
40tol=1e-14;
41pi0=ones(1,n)/(h+1);
42pij=zeros(n,h);
43xi=zeros(1,h);
44if nargin<3
45 for l=1:h
46 xi(l) = m(l)/mean(gamma(:,l))/(n+sum(m)-1);
47 end
48end
49for it=1:1e4
50 pi0_1=pi0;
51 xi = m ./ (pi0_1*gamma);
52 pij = abs(gamma .* repmat(xi,n,1)) ./ abs(1+gamma*xi');
53 pi0=max(tol,1-sum(pij,2)');
54 DELTA=norm(abs(1-pi0(:)./pi0_1(:)),1);
55 if DELTA<tol
56 xi(xi<0)=tol;
57 return
58 end
59end
60xi(xi<0)=tol;
61end