LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
sn_has_bursty_arrival.m
1%{ @file sn_has_bursty_arrival.m
2 % @brief Checks whether the network has a bursty (non-renewal) arrival process
3 %
4 % @author LINE Development Team
5%}
6
7%{
8 % @brief Checks whether any external arrival process is bursty, i.e. non-renewal
9 %
10 % @details
11 % Returns true if any Source station has an arrival process with autocorrelated
12 % inter-arrival times (a non-renewal Markovian arrival process such as an
13 % MMPP/MAP), as opposed to a renewal process (Poisson, or any i.i.d. renewal
14 % process such as Erlang/HyperExp/Coxian/APH). Detection is exact: a MAP with
15 % matrices (D0,D1) is renewal iff D1 equals its rank-one renewal form t0*pie,
16 % where t0 = -D0*e and pie is the embedded stationary vector; any departure from
17 % that form signals correlation between successive inter-arrival times.
18 %
19 % @par Syntax:
20 % @code
21 % bool = sn_has_bursty_arrival(sn)
22 % @endcode
23 %
24 % @par Parameters:
25 % <table>
26 % <tr><th>Name<th>Description
27 % <tr><td>sn<td>Network structure
28 % </table>
29 %
30 % @par Returns:
31 % <table>
32 % <tr><th>Name<th>Description
33 % <tr><td>bool<td>True if some external arrival process is non-renewal (bursty)
34 % </table>
35%}
36function bool = sn_has_bursty_arrival(sn)
37
38bool = false;
39for ist = 1:sn.nstations
40 nd = sn.stationToNode(ist);
41 if sn.nodetype(nd) ~= NodeType.Source
42 continue;
43 end
44 for r = 1:sn.nclasses
45 pc = sn.proc{ist,r};
46 if isempty(pc)
47 continue;
48 end
49 map = pc{1};
50 if isempty(map) || numel(map) < 2 || isempty(map{1})
51 continue;
52 end
53 D1 = map{2};
54 n = size(D1,1);
55 if n <= 1
56 continue; % single-phase arrival is Poisson, hence renewal
57 end
58 D1ren = D1 * ones(n,1) * map_pie(map); % rank-one renewal form t0*pie
59 if norm(D1 - D1ren, 'fro') > 1e-8 * max(1, norm(D1,'fro'))
60 bool = true;
61 return;
62 end
63 end
64end
65end
Definition Station.m:287
Definition Station.m:245