![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
The SolverCTMC knobs this port honours. More...
#include <line/solvers/ctmc/solver_ctmc_analyzer.h>
Public Attributes | |
| std::string | method = "default" |
| bool | keep_filtration = false |
| Keep the per-synchronization EVENT FILTRATION alongside Q. | |
| double | cutoff = -1.0 |
| < 0 = not given | |
| std::vector< std::size_t > | cutoff_vec |
| per-class override, or empty | |
| std::vector< std::vector< std::size_t > > | cutoff_mat |
| options.cutoff AS A (station x class) MATRIX, or empty. | |
| std::size_t | state_max = 3000000 |
| refuse a space larger than this | |
| bool | force = false |
| options.force: downgrade the memory pre-gate's refusal to a warning. | |
| double | memory_safety_fraction = mc::CTMC_DEFAULT_SAFETY_FRACTION |
| options.memorySafetyFraction: share of available memory a solve may target. | |
| std::size_t | nonmkv_order = 20 |
| options.config.nonmkvorder: the phase budget sn_nonmarkov_toph spends on a non-Markovian service law. | |
| double | timestep = -1.0 |
| options.timestep: the FIXED OUTPUT STEP of a transient analysis. | |
| std::string | transient_method = "ode" |
| options.config.transient_method: "ode" (the default) integrates the forward equation, "fau" marches fast adaptive uniformization (mc::ctmc_fau) over the output grid. | |
| double | fau_epsilon = 1e-6 |
| options.config.fau_epsilon: total probability mass the whole grid may discard under "fau". | |
| double | fau_delta = 1e-12 |
| options.config.fau_delta: occupancy below which a state is dropped. | |
| std::size_t | fau_ngrid = 100 |
| options.config.fau_ngrid: output grid size when timestep is unset. | |
| bool | chain_aggregation = false |
| options.config.chain_aggregation: solve the CHAIN-AGGREGATED model. | |
| bool | load_concealment = false |
| options.config.transform='lc': solve by LOAD CONCEALMENT. | |
| std::size_t | transform_iter_max = 1000 |
| Sweep cap for an iterated transformation; the kernel's own default. | |
| std::vector< std::size_t > | fes_stations |
| options.config.fes_stations: 1-BASED station indices to collapse into a flow-equivalent server before the chain is enumerated. | |
The SolverCTMC knobs this port honours.
cutoff is per-class when cutoff_vec is given and uniform otherwise; a negative cutoff means "not given" and takes the reference's solver default CTMC_DEFAULT_CUTOFF, while an infinite one takes its automatic value, ceil(6000^(1/(M*K))).
Definition at line 85 of file solver_ctmc_analyzer.h.
| bool line::ctmc::CtmcOptions::chain_aggregation = false |
options.config.chain_aggregation: solve the CHAIN-AGGREGATED model.
The state space grows with the per-class populations, so collapsing every chain onto a single class is the standard way to make an otherwise intractable multiclass model solvable: api::sn_aggregate_chains builds the collapsed model and mva::sn_deaggregate_chain_results maps the chain-level metrics back through alpha. EXACT on a product-form model, an approximation otherwise, since one aggregate service law replaces the per-class ones. Off by default: a caller who needs the exact multiclass answer must pay the state space, not discover the trade after the fact.
Definition at line 164 of file solver_ctmc_analyzer.h.
| double line::ctmc::CtmcOptions::cutoff = -1.0 |
< 0 = not given
Definition at line 96 of file solver_ctmc_analyzer.h.
Referenced by line::ssa::solver_ssa_prob(), line::ssa::solver_ssa_reachability(), and line::ssa::SsaSerialEngine< T >::SsaSerialEngine().
| std::vector<std::vector<std::size_t> > line::ctmc::CtmcOptions::cutoff_mat |
options.cutoff AS A (station x class) MATRIX, or empty.
The reference accepts a matrix wherever a model needs a different truncation per station – oqn_cs_routing writes [1,1,0;3,3,0;0,0,3], which bounds each queue only in the classes it actually serves. Reducing that to its per-class maximum enumerates a far larger chain and answers a different model, so it is carried whole and applied per station in space_capacity_c.
Definition at line 108 of file solver_ctmc_analyzer.h.
| std::vector<std::size_t> line::ctmc::CtmcOptions::cutoff_vec |
per-class override, or empty
Definition at line 97 of file solver_ctmc_analyzer.h.
| double line::ctmc::CtmcOptions::fau_delta = 1e-12 |
options.config.fau_delta: occupancy below which a state is dropped.
Definition at line 149 of file solver_ctmc_analyzer.h.
| double line::ctmc::CtmcOptions::fau_epsilon = 1e-6 |
options.config.fau_epsilon: total probability mass the whole grid may discard under "fau".
It is divided by the number of steps, each step removing mass and none putting any back, so the accumulated defect stays below it.
Definition at line 147 of file solver_ctmc_analyzer.h.
| std::size_t line::ctmc::CtmcOptions::fau_ngrid = 100 |
options.config.fau_ngrid: output grid size when timestep is unset.
Definition at line 151 of file solver_ctmc_analyzer.h.
| std::vector<std::size_t> line::ctmc::CtmcOptions::fes_stations |
options.config.fes_stations: 1-BASED station indices to collapse into a flow-equivalent server before the chain is enumerated.
Empty by default.
The collapsed stations' own metrics are recovered by conditioning on the FES population, so the table still names every station of the model the caller built; see solver_ctmc_fes_aggregation.
Definition at line 187 of file solver_ctmc_analyzer.h.
| bool line::ctmc::CtmcOptions::force = false |
options.force: downgrade the memory pre-gate's refusal to a warning.
Definition at line 111 of file solver_ctmc_analyzer.h.
| bool line::ctmc::CtmcOptions::keep_filtration = false |
Keep the per-synchronization EVENT FILTRATION alongside Q.
Off by default because it costs one n x n matrix per synchronization, which on a model with many routing pairs dwarfs the generator itself. The response-time CDF needs it, since splitting Q on one event cannot be done after the contributions have been summed.
Definition at line 95 of file solver_ctmc_analyzer.h.
Referenced by line::ctmc::ctmc_get_generator(), line::ctmc::ctmc_get_preempt_rate(), and line::ctmc::ctmc_get_start_rate().
| bool line::ctmc::CtmcOptions::load_concealment = false |
options.config.transform='lc': solve by LOAD CONCEALMENT.
Birman-Kogan Algorithm 2 as a model transformation: each chain is solved on its own against the residual capacity the others leave it, with the single-chain subproblem a real struct this analyzer solves. Distinct from the pfqn_bklc KERNEL, which sweeps a demand matrix and stays the fast path; see tr::transform_solve_lc.
Definition at line 175 of file solver_ctmc_analyzer.h.
| double line::ctmc::CtmcOptions::memory_safety_fraction = mc::CTMC_DEFAULT_SAFETY_FRACTION |
options.memorySafetyFraction: share of available memory a solve may target.
Definition at line 113 of file solver_ctmc_analyzer.h.
| std::string line::ctmc::CtmcOptions::method = "default" |
Definition at line 86 of file solver_ctmc_analyzer.h.
| std::size_t line::ctmc::CtmcOptions::nonmkv_order = 20 |
options.config.nonmkvorder: the phase budget sn_nonmarkov_toph spends on a non-Markovian service law.
The reference default is 20, and it is a real cost here – every phase multiplies the state space.
Definition at line 119 of file solver_ctmc_analyzer.h.
| std::size_t line::ctmc::CtmcOptions::state_max = 3000000 |
refuse a space larger than this
Definition at line 109 of file solver_ctmc_analyzer.h.
Referenced by line::ssa::solver_ssa_prob(), line::ssa::solver_ssa_reachability(), and line::ssa::SsaSerialEngine< T >::SsaSerialEngine().
| double line::ctmc::CtmcOptions::timestep = -1.0 |
options.timestep: the FIXED OUTPUT STEP of a transient analysis.
<= 0 means adaptive, which is the reference's default and its []. It changes WHERE the solution is reported and not how it is computed: the integrator takes the same steps either way, and the grid points are read off its interpolant. A caller comparing two transients needs the second, because two adaptive solves land on different time vectors.
Definition at line 129 of file solver_ctmc_analyzer.h.
| std::size_t line::ctmc::CtmcOptions::transform_iter_max = 1000 |
Sweep cap for an iterated transformation; the kernel's own default.
Definition at line 178 of file solver_ctmc_analyzer.h.
| std::string line::ctmc::CtmcOptions::transient_method = "ode" |
options.config.transient_method: "ode" (the default) integrates the forward equation, "fau" marches fast adaptive uniformization (mc::ctmc_fau) over the output grid.
It is a config key rather than a value of method because it changes no stationary answer – it is the transient path only – and because the reference's valid-method list is enumerated by its sanity harness, which then wants a recorded baseline per method.
Definition at line 140 of file solver_ctmc_analyzer.h.