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

The SolverCTMC knobs this port honours. More...

#include <line/solvers/ctmc/solver_ctmc_analyzer.h>

Collaboration diagram for line::ctmc::CtmcOptions:

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.

Detailed Description

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.

Member Data Documentation

◆ chain_aggregation

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.

◆ cutoff

double line::ctmc::CtmcOptions::cutoff = -1.0

◆ cutoff_mat

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.

◆ cutoff_vec

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.

◆ fau_delta

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.

◆ fau_epsilon

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.

◆ fau_ngrid

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.

◆ fes_stations

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.

◆ force

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.

◆ keep_filtration

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().

◆ load_concealment

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.

◆ memory_safety_fraction

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.

◆ method

std::string line::ctmc::CtmcOptions::method = "default"

Definition at line 86 of file solver_ctmc_analyzer.h.

◆ nonmkv_order

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.

◆ state_max

std::size_t line::ctmc::CtmcOptions::state_max = 3000000

◆ timestep

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.

◆ transform_iter_max

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.

◆ transient_method

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.


The documentation for this struct was generated from the following file: