LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
aoi_fcfs_mm1.m
1function [meanAoI, varAoI, peakAoI] = aoi_fcfs_mm1(lambda, mu)
2%AOI_FCFS_MM1 Mean, variance, and peak AoI for M/M/1 FCFS queue
3%
4% [meanAoI, varAoI, peakAoI] = aoi_fcfs_mm1(lambda, mu)
5%
6% Computes the Age of Information metrics for an M/M/1 queue with
7% First-Come First-Served (FCFS) discipline.
8%
9% Parameters:
10% lambda (double): Arrival rate (Poisson arrivals)
11% mu (double): Service rate (exponential service)
12%
13% Returns:
14% meanAoI (double): Mean (average) Age of Information
15% varAoI (double): Variance of Age of Information
16% peakAoI (double): Mean Peak Age of Information
17%
18% Formulas (from Inoue et al., IEEE Trans. IT, 2019):
19% Mean AoI: E[A] = (1/mu) * (1 + 1/rho + rho^2/(1-rho))
20% Peak AoI: E[Apeak] = (1/mu) * (1 + 1/rho + rho/(1-rho))
21%
22% Reference:
23% Y. Inoue, H. Masuyama, T. Takine, T. Tanaka, "A General Formula for
24% the Stationary Distribution of the Age of Information and Its
25% Application to Single-Server Queues," IEEE Trans. Information Theory,
26% vol. 65, no. 12, pp. 8305-8324, 2019.
27%
28% See also: aoi_lcfspr_mm1, aoi_fcfs_mgi1, aoi_optimal_rate
29
30% Copyright (c) 2012-2026, Imperial College London
31% All rights reserved.
32
33% Validate inputs
34if lambda <= 0
35 line_error(mfilename, 'Arrival rate lambda must be positive');
36end
37if mu <= 0
38 line_error(mfilename, 'Service rate mu must be positive');
39end
40
41% Compute utilization
42rho = lambda / mu;
43
44% Check stability
45if rho >= 1
46 line_error(mfilename, 'System unstable: rho = lambda/mu = %.4f >= 1', rho);
47end
48
49% Mean AoI (Proposition 1 / Corollary from Section III-A)
50% E[A] = (1/mu) * (1 + 1/rho + rho^2/(1-rho))
51% = (1/mu) * (1 + mu/lambda + rho^2/(1-rho))
52meanAoI = (1/mu) * (1 + 1/rho + rho^2/(1-rho));
53
54% see _kb/03-api-layer.md (AoI family) for the Inoue et al. 2019 derivation
55peakAoI = (1/mu) * (1 + 1/rho + rho/(1-rho));
56
57% see _kb/03-api-layer.md (AoI family) for the Inoue et al. 2019 derivation
58E_A = meanAoI;
59E_A2 = (2/mu^2) * (1 - rho - rho^3 + 4*rho^4 - 2*rho^5) / (rho^2 * (1-rho)^2);
60varAoI = E_A2 - E_A^2;
61
62% Ensure non-negative variance (numerical safety)
63if varAoI < 0
64 varAoI = 0;
65end
66
67end