LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
line::npfqn Namespace Reference

Classes

struct  BndBgt
struct  BndBpt
struct  DpsMorrisonResult
 Mean queue lengths, sojourn times and throughputs, with Morrison's intermediate constants. More...
struct  FeedbackElimResult
 Outcome of the feedback elimination. More...
struct  MergeConfig
 MATLAB's config struct. More...
struct  NonexpApproxResult
 Return value, mirroring MATLAB's [ST,gamma,nservers,rho,scva,scvs,eta]. More...
struct  SqdOptions
 The four option switches of the reference, with its defaults. More...
struct  SqdResult
 Return value of npfqn_sqd, mirroring [X, Q, U, R]. More...
struct  TrafficIdcContext
 Context returned by npfqn_traffic_idc, mirroring the MATLAB ctx struct. More...
struct  TrafficIdcCorrections
 Toggle for the two correction terms, mirroring MATLAB's corrections. More...
struct  TrafficRqt

Typedefs

template<class T>
using Mmap = std::vector<Matrix<T>>
 An MMAP as the MATLAB cell {D0, D1, D1^(1), ..., D1^(R)}.

Enumerations

enum class  Merge { Default , Super , Mixture , Interpos }
 Merge rule, MATLAB's config.merge. More...
enum class  Compress { Default , None }
 Post-merge compression, MATLAB's config.compress. More...

Functions

template<class T>
BndBgt< T > npfqn_bnd_bgt (const std::vector< T > &lambda, const std::vector< std::vector< T > > &mu, const std::vector< std::vector< std::size_t > > &sigma, std::size_t J)
 Piecewise-linear Lyapunov UPPER bound on the steady-state queue lengths of a multitype (deterministic-routing) multiclass Markovian queueing network, valid for EVERY work-conserving Markovian policy.
template<class T>
BndBpt< T > npfqn_bnd_bpt (const std::vector< T > &lambda0, const std::vector< T > &mu, const Matrix< T > &P, const std::vector< std::size_t > &stationOf, const std::vector< T > &c)
 First-order linear-programming relaxation of the achievable region of a multiclass open Markovian queueing network.
template<class T>
DpsMorrisonResult< T > npfqn_dps_morrison (const std::vector< T > &N, const std::vector< T > &Z, const std::vector< T > &S, const std::vector< T > &w)
 Evaluates Morrison's two-term approximation.
template<class T>
FeedbackElimResult< T > npfqn_feedback_elim (const Matrix< T > &P, const std::vector< T > &rho, const std::vector< T > &cs2=std::vector< T >(), const std::vector< T > &lambda=std::vector< T >(), bool immediateOnly=false)
 Near-immediate feedback elimination for the robust queueing network analyzer.
template<class T>
NonexpApproxResult< T > npfqn_nonexp_approx (const std::string &method, const std::vector< bool > &isFCFS, const Matrix< T > &rates, const Matrix< T > &ST, const Matrix< T > &V, const Matrix< T > &SCV, const Matrix< T > &Tput, const Matrix< T > &U, const std::vector< T > &gamma, const std::vector< T > &nservers)
 Handler for non-exponential service and arrival processes in AMVA and NC.
template<class T>
npfqn_rqna_weight (const T &t)
 Canonical reflected-Brownian-motion correlation weight w*(t) used by the Robust Queueing Network Analyzer (RQNA).
template<class T>
std::vector< T > npfqn_rqna_weight (const std::vector< T > &t)
 Elementwise form, mirroring the MATLAB array argument.
template<class T>
SqdResult< T > npfqn_sqd (const std::vector< T > &ST, const std::vector< T > &V, const std::vector< T > &cap, const std::vector< bool > &isDelay, const Matrix< T > &rt, const std::vector< std::size_t > &stationToStateful, std::size_t nclasses, int N, const SqdOptions< T > &opt)
 Smith Queue Decomposition (SQD): approximate MVA for closed networks under Blocking-After-Service (manufacturing / transfer blocking).
template<class T>
SqdResult< T > npfqn_sqd (const std::vector< T > &ST, const std::vector< T > &V, const std::vector< T > &cap, const std::vector< bool > &isDelay, const Matrix< T > &rt, const std::vector< std::size_t > &stationToStateful, std::size_t nclasses, int N)
 Overload with the reference's default option switches.
template<class T>
TrafficIdcContext< T > npfqn_traffic_idc (const std::vector< T > &lambda0, const Matrix< T > &P, const std::vector< T > &c2a0, const std::vector< T > &mu, const std::vector< T > &cs2, const TrafficIdcCorrections &corrections)
 Traffic variability equations of the Robust Queueing Network Analyzer (W.
template<class T>
TrafficIdcContext< T > npfqn_traffic_idc (const std::vector< T > &lambda0, const Matrix< T > &P, const std::vector< T > &c2a0, const std::vector< T > &mu, const std::vector< T > &cs2)
 Default corrections (both on), matching MATLAB's nargin < 8 branch.
template<class T>
std::vector< T > npfqn_traffic_idc_at (const TrafficIdcContext< T > &ctx, const T &t, const std::function< std::vector< T >(const T &)> &a0IdcFun, const std::function< std::vector< T >(const std::vector< T > &)> &sIdcFun)
 Time-dependent IDC equations (eq.
template<class T>
mam::Mmap< T > mmap_super_match (const mam::Mmap< T > &a, const mam::Mmap< T > &b)
 Superposition matching classes one to one (mmap_super.m, option 'match').
template<class T>
mam::Mmap< T > mmap_mark_types (const mam::Mmap< T > &m, const Matrix< T > &prob)
 Re-mark an MMAP's K types into R classes (mmap_mark.m).
template<class T>
mam::Mmap< T > npfqn_traffic_merge (const std::vector< mam::Mmap< T > > &flows, const MergeConfig &config=MergeConfig())
 Merge a list of MMAPs carrying the same classes.
template<class T>
mam::Mmap< T > npfqn_traffic_merge_cs (const std::vector< mam::Mmap< T > > &flows, const Matrix< T > &prob, Merge merge=Merge::Default)
 Merge flows that switch class on departure.
template<class T>
TrafficRqt< T > npfqn_traffic_rqt (const std::vector< T > &lambda0, const std::vector< T > &Gamma0, const std::vector< T > &alpha0, const Matrix< T > &F)
 Effective arrival processes of a network under the Robust Queueing calculus.
template<class T>
std::vector< Mmap< T > > npfqn_traffic_split_cs (const Mmap< T > &MMAP, const Matrix< T > &P)
 Splitting of a marked MAP departure flow with class switching.
template<class T>
Matrix< T > npfqn_traffic_split_rr (const qn::NetworkStruct< T > &sn)
 Port of npfqn_traffic_split_rr.m.

Typedef Documentation

◆ Mmap

template<class T>
using line::npfqn::Mmap = std::vector<Matrix<T>>

An MMAP as the MATLAB cell {D0, D1, D1^(1), ..., D1^(R)}.

Definition at line 53 of file npfqn_traffic_split_cs.h.

Enumeration Type Documentation

◆ Compress

enum class line::npfqn::Compress
strong

Post-merge compression, MATLAB's config.compress.

Enumerator
Default 

'default', mmap_compress with its own default method

None 

'none'

Definition at line 156 of file npfqn_traffic_merge.h.

◆ Merge

enum class line::npfqn::Merge
strong

Merge rule, MATLAB's config.merge.

Enumerator
Default 

'default', identical to 'super'

Super 

'super'

Mixture 

'mixture', not ported

Interpos 

'interpos', lumped interleaving of per-flow M3PP(2, m) fits

Definition at line 148 of file npfqn_traffic_merge.h.

Function Documentation

◆ mmap_mark_types()

template<class T>
mam::Mmap< T > line::npfqn::mmap_mark_types ( const mam::Mmap< T > & m,
const Matrix< T > & prob )

Re-mark an MMAP's K types into R classes (mmap_mark.m).

Parameters
man MMAP with K marked types
prob(K x R); prob(k, r) is the probability that a type-k arrival is marked as class r

D0 and D1 are untouched and D1^(r) = sum_k D1^(k) prob(k, r). MATLAB does not normalize here, so neither does this: the caller's mmap_super does it.

Distinct from line::mam::mmap_mark, which marks a plain MAP with phase-dependent weights; MATLAB's mmap_mark is this one.

Definition at line 125 of file npfqn_traffic_merge.h.

References line::mam::Mmap< T >::classes(), line::Matrix< T >::cols(), line::mam::Mmap< T >::D0, line::mam::Mmap< T >::D1, line::mam::Mmap< T >::Dc, line::InputError::InputError(), mmap_mark_types(), line::mam::Mmap< T >::order(), and line::Matrix< T >::rows().

Referenced by mmap_mark_types(), and npfqn_traffic_merge_cs().

◆ mmap_super_match()

template<class T>
mam::Mmap< T > line::npfqn::mmap_super_match ( const mam::Mmap< T > & a,
const mam::Mmap< T > & b )

Superposition matching classes one to one (mmap_super.m, option 'match').

Every component of the MATLAB cell, D0 and D1 included, is combined with the same Kronecker sum, so the result carries the same class list as its operands. This is NOT line::mam::mmap_super, which is the 'default' option and CONCATENATES the two class lists; the merge needs the matching form, because merging n flows of R classes must yield R classes and not n R. MATLAB errors when the class counts differ; so does this.

It lives in the npfqn namespace, next to its only caller, rather than in the mam domain: the mam MMAP algebra is owned elsewhere in this tree and this option is not part of it.

Definition at line 99 of file npfqn_traffic_merge.h.

References line::mam::Mmap< T >::classes(), line::mam::Mmap< T >::D0, line::mam::Mmap< T >::D1, line::mam::Mmap< T >::Dc, line::InputError::InputError(), line::mam::krons(), line::mam::mmap_normalize(), and mmap_super_match().

Referenced by mmap_super_match(), npfqn_traffic_merge(), and npfqn_traffic_merge_cs().

◆ npfqn_bnd_bgt()

template<class T>
BndBgt< T > line::npfqn::npfqn_bnd_bgt ( const std::vector< T > & lambda,
const std::vector< std::vector< T > > & mu,
const std::vector< std::vector< std::size_t > > & sigma,
std::size_t J )

Piecewise-linear Lyapunov UPPER bound on the steady-state queue lengths of a multitype (deterministic-routing) multiclass Markovian queueing network, valid for EVERY work-conserving Markovian policy.

Parameters
lambdaPoisson arrival rate of each type
mumu[i][k] = service rate of stage k of type i
sigmasigma[i][k] = zero-based station of stage k of type i
Jnumber of stations

Definition at line 107 of file npfqn_bnd_bgt.h.

References line::npfqn::BndBgt< T >::B, line::npfqn::BndBgt< T >::classStage, line::npfqn::BndBgt< T >::classStation, line::npfqn::BndBgt< T >::classType, line::lp::LpModel< T >::emit(), line::npfqn::BndBgt< T >::finite, line::npfqn::BndBgt< T >::gamma, line::lp::GE, line::InputError::InputError(), line::npfqn::BndBgt< T >::L, line::lp::LE, line::npfqn::BndBgt< T >::Lmax, line::lp::lp_solve(), line::lp::lp_status_name(), npfqn_bnd_bgt(), line::lp::LpSolution< T >::objective, line::lp::LpSolution< T >::ok(), line::npfqn::BndBgt< T >::Qub, line::npfqn::BndBgt< T >::rho, line::npfqn::BndBgt< T >::rhoStation, line::lp::LpModel< T >::row_add(), line::lp::LpModel< T >::row_clear(), line::npfqn::BndBgt< T >::scale, line::lp::LpModel< T >::set_bounds(), line::lp::LpModel< T >::set_cost(), line::lp::LpModel< T >::set_maximize(), line::lp::LpSolution< T >::status, line::npfqn::BndBgt< T >::tailRatio, line::npfqn::BndBgt< T >::tailStep, line::npfqn::BndBgt< T >::U, line::UnsupportedError::UnsupportedError(), line::npfqn::BndBgt< T >::V, and line::lp::LpSolution< T >::x.

Referenced by npfqn_bnd_bgt(), and line::ba::solver_ba_bgt().

◆ npfqn_bnd_bpt()

template<class T>
BndBpt< T > line::npfqn::npfqn_bnd_bpt ( const std::vector< T > & lambda0,
const std::vector< T > & mu,
const Matrix< T > & P,
const std::vector< std::size_t > & stationOf,
const std::vector< T > & c )

◆ npfqn_dps_morrison()

template<class T>
DpsMorrisonResult< T > line::npfqn::npfqn_dps_morrison ( const std::vector< T > & N,
const std::vector< T > & Z,
const std::vector< T > & S,
const std::vector< T > & w )

Evaluates Morrison's two-term approximation.

Parameters
Nper-class populations, finite and positive
Zper-class mean think times, finite and positive
Sper-class mean DPS service times, finite and positive
wper-class DPS weights, finite and positive
Returns
the mean performance measures and the intermediate constants

Definition at line 196 of file npfqn_dps_morrison.h.

References line::npfqn::DpsMorrisonResult< T >::a, line::npfqn::DpsMorrisonResult< T >::cA, line::npfqn::DpsMorrisonResult< T >::cB, line::npfqn::DpsMorrisonResult< T >::cC, line::npfqn::DpsMorrisonResult< T >::cD, line::npfqn::DpsMorrisonResult< T >::cH, line::npfqn::DpsMorrisonResult< T >::cI, line::npfqn::DpsMorrisonResult< T >::cJ, line::npfqn::DpsMorrisonResult< T >::cK, line::npfqn::DpsMorrisonResult< T >::cL, line::npfqn::DpsMorrisonResult< T >::cM, line::npfqn::DpsMorrisonResult< T >::cQ, line::npfqn::DpsMorrisonResult< T >::cR, line::npfqn::DpsMorrisonResult< T >::cS, line::npfqn::DpsMorrisonResult< T >::cU, line::npfqn::DpsMorrisonResult< T >::cV, line::npfqn::DpsMorrisonResult< T >::delta, line::InputError::InputError(), npfqn_dps_morrison(), line::npfqn::DpsMorrisonResult< T >::Q, line::npfqn::DpsMorrisonResult< T >::Qlead, line::npfqn::DpsMorrisonResult< T >::R, line::npfqn::DpsMorrisonResult< T >::rho, line::npfqn::DpsMorrisonResult< T >::Rlead, line::npfqn::DpsMorrisonResult< T >::sigma, line::npfqn::DpsMorrisonResult< T >::W, and line::npfqn::DpsMorrisonResult< T >::X.

Referenced by npfqn_dps_morrison(), and line::nc::solver_nc_dps_analyzer().

◆ npfqn_feedback_elim()

template<class T>
FeedbackElimResult< T > line::npfqn::npfqn_feedback_elim ( const Matrix< T > & P,
const std::vector< T > & rho,
const std::vector< T > & cs2 = std::vector<T>(),
const std::vector< T > & lambda = std::vector<T>(),
bool immediateOnly = false )

Near-immediate feedback elimination for the robust queueing network analyzer.

Parameters
Prouting matrix, substochastic
rhotraffic intensity of each station
cs2service SCV of each station, empty to skip modifiedScv
lambdaarrival rate of each station, empty to skip modifiedRates
immediateOnlykeep only the self-loops, i.e. Section 4.1 feedback

Definition at line 78 of file npfqn_feedback_elim.h.

References line::Matrix< T >::cols(), line::npfqn::FeedbackElimResult< T >::feedbackProb, line::InputError::InputError(), line::npfqn::FeedbackElimResult< T >::modifiedRates, line::npfqn::FeedbackElimResult< T >::modifiedRouting, line::npfqn::FeedbackElimResult< T >::modifiedScv, npfqn_feedback_elim(), line::num_abs(), line::npfqn::FeedbackElimResult< T >::reductionExact, line::Matrix< T >::rows(), line::solve(), and line::npfqn::FeedbackElimResult< T >::visitInflation.

Referenced by npfqn_feedback_elim().

◆ npfqn_nonexp_approx()

template<class T>
NonexpApproxResult< T > line::npfqn::npfqn_nonexp_approx ( const std::string & method,
const std::vector< bool > & isFCFS,
const Matrix< T > & rates,
const Matrix< T > & ST,
const Matrix< T > & V,
const Matrix< T > & SCV,
const Matrix< T > & Tput,
const Matrix< T > & U,
const std::vector< T > & gamma,
const std::vector< T > & nservers )

Handler for non-exponential service and arrival processes in AMVA and NC.

Parameters
method'default', 'none', 'hvmva' (all no-ops) or 'interp'
isFCFS(M) sn.sched(i) == SchedStrategy.FCFS
rates(M x R) sn.rates
ST(M x R) service times
V(M x R) visit ratios; present in the MATLAB signature but never read by it, kept here for a 1:1 argument list
SCV(M x R) service SCVs
Tput(M x R) per-class throughputs
U(M x R) per-class utilizations
gamma(M) input decay rates
nservers(M) input server counts

Definition at line 91 of file npfqn_nonexp_approx.h.

References line::Matrix< T >::cols(), line::npfqn::NonexpApproxResult< T >::eta, line::npfqn::NonexpApproxResult< T >::gamma, line::InputError::InputError(), npfqn_nonexp_approx(), line::npfqn::NonexpApproxResult< T >::nservers, line::num_pow_int(), line::npfqn::NonexpApproxResult< T >::rho, line::Matrix< T >::rows(), line::npfqn::NonexpApproxResult< T >::scva, line::npfqn::NonexpApproxResult< T >::scvs, and line::npfqn::NonexpApproxResult< T >::ST.

Referenced by npfqn_nonexp_approx(), line::nc::solver_nc(), and line::nc::solver_ncld().

◆ npfqn_rqna_weight() [1/2]

template<class T>
std::vector< T > line::npfqn::npfqn_rqna_weight ( const std::vector< T > & t)

Elementwise form, mirroring the MATLAB array argument.

Definition at line 81 of file npfqn_rqna_weight.h.

References npfqn_rqna_weight().

◆ npfqn_rqna_weight() [2/2]

template<class T>
T line::npfqn::npfqn_rqna_weight ( const T & t)

Canonical reflected-Brownian-motion correlation weight w*(t) used by the Robust Queueing Network Analyzer (RQNA).

Parameters
tnonnegative time argument; t <= 0 gives 0 and t = Inf gives 1
Returns
the weight w*(t), clamped to [0,1] as in MATLAB and the JAR

Definition at line 47 of file npfqn_rqna_weight.h.

References npfqn_rqna_weight().

Referenced by npfqn_rqna_weight(), npfqn_rqna_weight(), and npfqn_traffic_idc_at().

◆ npfqn_sqd() [1/2]

template<class T>
SqdResult< T > line::npfqn::npfqn_sqd ( const std::vector< T > & ST,
const std::vector< T > & V,
const std::vector< T > & cap,
const std::vector< bool > & isDelay,
const Matrix< T > & rt,
const std::vector< std::size_t > & stationToStateful,
std::size_t nclasses,
int N )

Overload with the reference's default option switches.

Eight arguments, so it cannot collide with a MATLAB call transcribed positionally (the reference accepts at most seven, starting with an sn).

Definition at line 397 of file npfqn_sqd.h.

References npfqn_sqd().

◆ npfqn_sqd() [2/2]

template<class T>
SqdResult< T > line::npfqn::npfqn_sqd ( const std::vector< T > & ST,
const std::vector< T > & V,
const std::vector< T > & cap,
const std::vector< bool > & isDelay,
const Matrix< T > & rt,
const std::vector< std::size_t > & stationToStateful,
std::size_t nclasses,
int N,
const SqdOptions< T > & opt )

Smith Queue Decomposition (SQD): approximate MVA for closed networks under Blocking-After-Service (manufacturing / transfer blocking).

Parameters
ST(M) chain-aggregated service times, STchain(:,1)
V(M) chain-aggregated visit ratios, Vchain(:,1)
cap(M) buffer capacities; use infinity for unbounded
isDelay(M) true at the INF / EXT stations
rtstateful-indexed routing matrix (sn.rt)
stationToStateful(M) ONE-based station-to-stateful map
nclassesclass count, the stride of rt
Ntotal closed population
optthe four option switches and the initial V1

Definition at line 248 of file npfqn_sqd.h.

References line::InputError::InputError(), npfqn_sqd(), line::npfqn::SqdResult< T >::Q, line::npfqn::SqdResult< T >::R, line::npfqn::SqdResult< T >::U, and line::npfqn::SqdResult< T >::X.

Referenced by npfqn_sqd(), npfqn_sqd(), and line::mva::solver_sqd().

◆ npfqn_traffic_idc() [1/2]

template<class T>
TrafficIdcContext< T > line::npfqn::npfqn_traffic_idc ( const std::vector< T > & lambda0,
const Matrix< T > & P,
const std::vector< T > & c2a0,
const std::vector< T > & mu,
const std::vector< T > & cs2 )

Default corrections (both on), matching MATLAB's nargin < 8 branch.

Definition at line 258 of file npfqn_traffic_idc.h.

References npfqn_traffic_idc().

◆ npfqn_traffic_idc() [2/2]

template<class T>
TrafficIdcContext< T > line::npfqn::npfqn_traffic_idc ( const std::vector< T > & lambda0,
const Matrix< T > & P,
const std::vector< T > & c2a0,
const std::vector< T > & mu,
const std::vector< T > & cs2,
const TrafficIdcCorrections & corrections )

Traffic variability equations of the Robust Queueing Network Analyzer (W.

Whitt and W. You 2018, "A Robust Queueing Network Analyzer Based on Indices of Dispersion").

Parameters
lambda0(K) external arrival rate into each queue
P(K x K) routing matrix among the queues, P(i,j) = p_{i,j}
c2a0(K) asymptotic IDC (SCV) of each external arrival process
mu(K) service rate at each queue
cs2(K) service SCV c2_{s,i}
correctionswhich of the two correction terms to include

Definition at line 121 of file npfqn_traffic_idc.h.

References line::npfqn::TrafficIdcCorrections::alpha, line::npfqn::TrafficIdcCorrections::beta, line::npfqn::TrafficIdcContext< T >::c2a, line::npfqn::TrafficIdcContext< T >::c2a0, line::npfqn::TrafficIdcContext< T >::c2aij, line::npfqn::TrafficIdcContext< T >::c2alpha, line::npfqn::TrafficIdcContext< T >::c2d, line::npfqn::TrafficIdcContext< T >::c2x, line::Matrix< T >::cols(), line::npfqn::TrafficIdcContext< T >::cs2, line::InputError::InputError(), line::npfqn::TrafficIdcContext< T >::K, line::npfqn::TrafficIdcContext< T >::lam_ji, line::npfqn::TrafficIdcContext< T >::lambda, line::npfqn::TrafficIdcContext< T >::lambda0, line::Matrix< T >::Matrix(), line::npfqn::TrafficIdcContext< T >::mu, npfqn_traffic_idc(), line::npfqn::TrafficIdcContext< T >::P, line::npfqn::TrafficIdcContext< T >::rho, line::Matrix< T >::rows(), line::solve(), line::npfqn::TrafficIdcContext< T >::Xi, and line::npfqn::TrafficIdcContext< T >::zetaAll.

Referenced by npfqn_traffic_idc(), npfqn_traffic_idc(), and line::mva::solver_rqna().

◆ npfqn_traffic_idc_at()

template<class T>
std::vector< T > line::npfqn::npfqn_traffic_idc_at ( const TrafficIdcContext< T > & ctx,
const T & t,
const std::function< std::vector< T >(const T &)> & a0IdcFun,
const std::function< std::vector< T >(const std::vector< T > &)> & sIdcFun )

Time-dependent IDC equations (eq.

43) at a single time t, the port of the MATLAB nested function local_idc_at reached through ctx.IaFun.

Parameters
ctxcontext from npfqn_traffic_idc
ttime argument
a0IdcFunexternal-arrival IDC, a0IdcFun(t) -> (K) vector
sIdcFunservice IDC, sIdcFun(rho .* t) -> (K) vector
Returns
(K) total arrival IDCs I_{a,i}(t)

Definition at line 275 of file npfqn_traffic_idc.h.

References line::npfqn::TrafficIdcContext< T >::c2alpha, line::npfqn::TrafficIdcContext< T >::c2x, line::InputError::InputError(), line::npfqn::TrafficIdcContext< T >::K, line::npfqn::TrafficIdcContext< T >::lam_ji, line::npfqn::TrafficIdcContext< T >::lambda, line::npfqn::TrafficIdcContext< T >::lambda0, npfqn_rqna_weight(), npfqn_traffic_idc_at(), line::npfqn::TrafficIdcContext< T >::P, line::npfqn::TrafficIdcContext< T >::rho, line::solve(), and line::npfqn::TrafficIdcContext< T >::zetaAll.

Referenced by npfqn_traffic_idc_at(), and line::mva::solver_rqna().

◆ npfqn_traffic_merge()

template<class T>
mam::Mmap< T > line::npfqn::npfqn_traffic_merge ( const std::vector< mam::Mmap< T > > & flows,
const MergeConfig & config = MergeConfig() )

Merge a list of MMAPs carrying the same classes.

Parameters
flowsthe MMAPs to superpose; empty ones are dropped, as in MATLAB
configmerge rule and compression
Returns
the merged MMAP, normalized

Definition at line 197 of file npfqn_traffic_merge.h.

References Default, line::InputError::InputError(), Interpos, line::mam::m3pp2m_fitc_theoretical(), line::mam::m3pp2m_interleave(), Mixture, line::mam::mmap_normalize(), mmap_super_match(), npfqn_traffic_merge(), Super, and line::UnsupportedError::UnsupportedError().

Referenced by npfqn_traffic_merge(), line::mam::solver_mam_traffic(), and line::mam::solver_mam_traffic_mmap().

◆ npfqn_traffic_merge_cs()

template<class T>
mam::Mmap< T > line::npfqn::npfqn_traffic_merge_cs ( const std::vector< mam::Mmap< T > > & flows,
const Matrix< T > & prob,
Merge merge = Merge::Default )

Merge flows that switch class on departure.

Parameters
flowsn MMAPs, each carrying R marked classes
prob(n R x R), prob((i-1)R + r, s) in MATLAB 1-based terms
mergemerge rule; only Default and Super are ported
Returns
the merged MMAP with R classes

Definition at line 73 of file npfqn_traffic_merge_cs.h.

References line::Matrix< T >::cols(), Default, line::InputError::InputError(), mmap_mark_types(), mmap_super_match(), npfqn_traffic_merge_cs(), line::Matrix< T >::rows(), Super, and line::UnsupportedError::UnsupportedError().

Referenced by npfqn_traffic_merge_cs().

◆ npfqn_traffic_rqt()

template<class T>
TrafficRqt< T > line::npfqn::npfqn_traffic_rqt ( const std::vector< T > & lambda0,
const std::vector< T > & Gamma0,
const std::vector< T > & alpha0,
const Matrix< T > & F )

Effective arrival processes of a network under the Robust Queueing calculus.

Parameters
lambda0external arrival rate at each node, 0 where there is none
Gamma0variability parameter of each external arrival process, which for a renewal stream is the interarrival standard deviation
alpha0tail coefficient in (1,2] of each external arrival process
Frouting probabilities, F(i,j) = fraction of the jobs leaving node i that go to node j (row sums <= 1)

Definition at line 70 of file npfqn_traffic_rqt.h.

References line::npfqn::TrafficRqt< T >::alpha, line::npfqn::TrafficRqt< T >::Gamma, line::inverse(), line::npfqn::TrafficRqt< T >::lambda, line::matmul(), and npfqn_traffic_rqt().

Referenced by npfqn_traffic_rqt(), and line::mva::solver_rqt().

◆ npfqn_traffic_split_cs()

template<class T>
std::vector< Mmap< T > > line::npfqn::npfqn_traffic_split_cs ( const Mmap< T > & MMAP,
const Matrix< T > & P )

Splitting of a marked MAP departure flow with class switching.

Parameters
MMAPthe departure MMAP {D0, D1, D1^(1), ..., D1^(R)}
P(R x J) with J = M*R, P(r, (j-1)R + s) in MATLAB 1-based terms
Returns
one MMAP per destination station, in destination order

Definition at line 106 of file npfqn_traffic_split_cs.h.

References line::Matrix< T >::cols(), line::InputError::InputError(), npfqn_traffic_split_cs(), and line::Matrix< T >::rows().

Referenced by npfqn_traffic_split_cs(), line::mam::solver_mam_traffic(), and line::mam::solver_mam_traffic_mmap().

◆ npfqn_traffic_split_rr()

template<class T>
Matrix< T > line::npfqn::npfqn_traffic_split_rr ( const qn::NetworkStruct< T > & sn)

Port of npfqn_traffic_split_rr.m.

Parameters
snthe model, after refresh(): rtnodes carries the expanded routing
Returns
an (nstations x nclasses) matrix of split degrees, 1 where the split is Markovian

Definition at line 94 of file npfqn_traffic_split_rr.h.

References line::lang::GlobalConstants::FineTol, npfqn_traffic_split_rr(), and line::qn::NodeDef::routing.

Referenced by npfqn_traffic_split_rr(), line::mam::solver_mna_open(), and line::mva::solver_qna().