1%{ @file sn_has_bursty_arrival.m
2 % @brief Checks whether
the network has a bursty (non-renewal) arrival process
4 % @author LINE Development Team
8 % @brief Checks whether any external arrival process
is bursty, i.e. non-renewal
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.
21 %
bool = sn_has_bursty_arrival(sn)
26 % <tr><th>Name<th>Description
27 % <tr><td>sn<td>Network structure
32 % <tr><th>Name<th>Description
33 % <tr><td>bool<td>True
if some external arrival process
is non-renewal (bursty)
36function
bool = sn_has_bursty_arrival(sn)
39for ist = 1:sn.nstations
40 nd = sn.stationToNode(ist);
41 if sn.nodetype(nd) ~= NodeType.Source
50 if isempty(
map) || numel(
map) < 2 || isempty(
map{1})
56 continue; % single-phase arrival
is Poisson, hence renewal
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'))