![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
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> | |
| 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. | |
| 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.
|
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.
|
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.
| 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).
| m | an 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().
| 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().
| 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.
| lambda | Poisson arrival rate of each type |
| mu | mu[i][k] = service rate of stage k of type i |
| sigma | sigma[i][k] = zero-based station of stage k of type i |
| J | number 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().
| 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 ) |
First-order linear-programming relaxation of the achievable region of a multiclass open Markovian queueing network.
| lambda0 | external Poisson arrival rate into each class (0 if none) |
| mu | exponential service rate of each class |
| P | K x K routing, P(r,r') = P(class r becomes r' after service) |
| stationOf | zero-based station index of each class |
| c | objective weights; empty means all ones |
Definition at line 94 of file npfqn_bnd_bpt.h.
References line::Matrix< T >::cols(), line::lp::LpModel< T >::emit(), line::lp::EQ, line::InputError::InputError(), line::inverse(), line::npfqn::BndBpt< T >::lambda, line::lp::lp_solve(), line::lp::lp_status_name(), line::matmul(), npfqn_bnd_bpt(), line::npfqn::BndBpt< T >::nrows, line::lp::LpModel< T >::num_rows(), line::lp::LpModel< T >::num_vars(), line::npfqn::BndBpt< T >::nvars, line::lp::LpSolution< T >::objective, line::lp::LpSolution< T >::ok(), line::npfqn::BndBpt< T >::rho, line::npfqn::BndBpt< T >::rhoStation, line::lp::LpModel< T >::row_add(), line::lp::LpModel< T >::row_clear(), line::Matrix< T >::rows(), line::lp::LpModel< T >::set_cost(), line::lp::LpModel< T >::set_maximize(), line::lp::LpSolution< T >::status, line::UnsupportedError::UnsupportedError(), line::lp::LpSolution< T >::x, line::npfqn::BndBpt< T >::x, and line::npfqn::BndBpt< T >::zlb.
Referenced by npfqn_bnd_bpt(), and line::ba::solver_ba_bpt().
| 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.
| N | per-class populations, finite and positive |
| Z | per-class mean think times, finite and positive |
| S | per-class mean DPS service times, finite and positive |
| w | per-class DPS weights, finite and positive |
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().
| 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.
| P | routing matrix, substochastic |
| rho | traffic intensity of each station |
| cs2 | service SCV of each station, empty to skip modifiedScv |
| lambda | arrival rate of each station, empty to skip modifiedRates |
| immediateOnly | keep 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().
| 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.
| 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().
| 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().
| 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).
| t | nonnegative time argument; t <= 0 gives 0 and t = Inf gives 1 |
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().
| 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().
| 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).
| 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 |
| rt | stateful-indexed routing matrix (sn.rt) |
| stationToStateful | (M) ONE-based station-to-stateful map |
| nclasses | class count, the stride of rt |
| N | total closed population |
| opt | the 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().
| 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().
| 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").
| 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} |
| corrections | which 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().
| 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.
| ctx | context from npfqn_traffic_idc |
| t | time argument |
| a0IdcFun | external-arrival IDC, a0IdcFun(t) -> (K) vector |
| sIdcFun | service IDC, sIdcFun(rho .* t) -> (K) vector |
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().
| 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.
| flows | the MMAPs to superpose; empty ones are dropped, as in MATLAB |
| config | merge rule and compression |
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().
| 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.
| flows | n MMAPs, each carrying R marked classes |
| prob | (n R x R), prob((i-1)R + r, s) in MATLAB 1-based terms |
| merge | merge rule; only Default and Super are ported |
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().
| 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.
| lambda0 | external arrival rate at each node, 0 where there is none |
| Gamma0 | variability parameter of each external arrival process, which for a renewal stream is the interarrival standard deviation |
| alpha0 | tail coefficient in (1,2] of each external arrival process |
| F | routing 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().
| 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.
| MMAP | the 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 |
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().
| Matrix< T > line::npfqn::npfqn_traffic_split_rr | ( | const qn::NetworkStruct< T > & | sn | ) |
Port of npfqn_traffic_split_rr.m.
| sn | the model, after refresh(): rtnodes carries the expanded routing |
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().