LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
smp_stage_cif.h File Reference

Cumulative incidence functions of one semi-Markov stage. More...

#include <algorithm>
#include <cstddef>
#include <vector>
#include "line/lang/distribution.h"
#include "line/lang/lang_types.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
Include dependency graph for smp_stage_cif.h:

Go to the source code of this file.

Classes

struct  line::mc::SmpStageCif
 What smp_stage_cif returns: C(h, j) = CIF_h(t_j) and Fhold[j]. More...

Namespaces

namespace  line
 Conservation laws of a layered queueing network, enumerated from its structure.
namespace  line::mc
namespace  line::mc::smp_detail

Functions

std::vector< double > line::mc::smp_detail::linspace (double a, double b, std::size_t n)
 linspace(a, b, n), with the last point exactly b.
template<class T>
std::vector< double > line::mc::smp_detail::cdf_row (const lang::Distrib< T > &d, const std::vector< double > &t)
 The CDF of d at every instant of t, clamped to [0, 1] (cdfRow).
template<class T>
SmpStageCif line::mc::smp_stage_cif (const std::vector< lang::Distrib< T > > &arcs, const std::vector< double > &probs, const std::vector< double > &t)
 CIF and holding-time CDF of a stage at the ascending instants t.

Detailed Description

Cumulative incidence functions of one semi-Markov stage.

Port of matlab/src/api/mc/smp_stage_cif.m. A stage left by E possible transitions is described in one of two ways, which are the two parameterizations of a semi-Markov kernel compared by Asanjarani, Liquet and Nazarathy (arXiv:2005.14462, 2020):

COMPETING arcs (transition intensities, probs empty): every arc h is a latent clock with CDF F_h started on entry, the first to ring picks the destination, and CIF_h(t) = int_0^t prod_{k!=h} (1 - F_k(s)) dF_h(s), Fhold(t) = 1 - prod_k (1 - F_k(t)).

KERNEL arcs (sojourn times, probs the jump probabilities): the destination is drawn on entry and the sojourn then has the law F_h, so CIF_h(t) = p_h F_h(t), Fhold(t) = sum_h p_h F_h(t).

The competing integral is the Riemann-Stieltjes sum on the grid t with the other clocks' survival read at the interval midpoints, which needs no density and so admits a deterministic clock. When t(1) > 0 the sum starts at zero on 200 uniform intervals below t(1), whose values are dropped. Every CDF is clamped to [0, 1] before use.

Definition in file smp_stage_cif.h.