![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Options of SolverENV. More...
#include <line/solvers/env/solver_env.h>
Public Attributes | |
| int | iter_max = 100 |
| double | iter_tol = 1e-4 |
| std::string | stage_solver = "fluid" |
| Which solver runs each FLAT stage: fluid (the fluid transient), ctmc (the enumerated chain), mva or nc. | |
| mva::MvaOptions | stage_mva |
| Options of an mva stage solver, SolverMVA(model, options). | |
| nc::NcSolverOptions | stage_nc |
| Options of an nc stage solver, SolverNC(model, options). | |
| std::string | method = "meanfield" |
| The inter-stage coupling: meanfield is the reference's default. | |
| std::string | sojourn = "stochastic" |
| options.sojourn: stochastic (default) or deterministic. | |
| fluid::FluidOptions | stage |
| Options handed to each stage solver. | |
| double | stage_cutoff = -1.0 |
| options.cutoff of a CTMC stage, read only when stage_solver is ctmc. | |
| double | timespan_end = 100.0 |
| options.timespan(2) of the inner solver: the transient horizon. | |
| double | env_timespan_start = std::numeric_limits<double>::infinity() |
| Method occupation: SolverENV's OWN options.timespan, [t0, t1]. | |
| double | env_timespan_end = std::numeric_limits<double>::infinity() |
| std::vector< double > | env_init |
| Method occupation: options.config.env_init, the initial probability of each stage. | |
| std::size_t | tran_points = 1001 |
| Points on a UNIFORM transient grid, used only where stage_grid declines to build one (a stage whose holding time is the disabled 1 x 1 zero pair). | |
| ln::LnOptions | lqn = env_default_lqn_options() |
| Options of the SolverLN that runs a LAYERED stage. | |
Options of SolverENV.
Defaults are Solver.defaultOptions.
Definition at line 120 of file solver_env.h.
| std::vector<double> line::env::EnvOptions::env_init |
Method occupation: options.config.env_init, the initial probability of each stage.
Empty means the first stage, as the reference defaults.
Definition at line 167 of file solver_env.h.
Referenced by line::env::SolverEnvLimit< T >::env_init_prob().
| double line::env::EnvOptions::env_timespan_end = std::numeric_limits<double>::infinity() |
Definition at line 162 of file solver_env.h.
Referenced by line::env::SolverEnvLimit< T >::env_horizon().
| double line::env::EnvOptions::env_timespan_start = std::numeric_limits<double>::infinity() |
Method occupation: SolverENV's OWN options.timespan, [t0, t1].
The horizon is t1 - t0 when both are finite and unbounded otherwise, which is the default ([Inf, Inf], as SolverOptions('ENV') sets it). Distinct from timespan_end, the inner solvers' transient horizon of the couplings.
Definition at line 161 of file solver_env.h.
Referenced by line::env::SolverEnvLimit< T >::env_horizon().
| int line::env::EnvOptions::iter_max = 100 |
Definition at line 121 of file solver_env.h.
| double line::env::EnvOptions::iter_tol = 1e-4 |
Definition at line 122 of file solver_env.h.
| ln::LnOptions line::env::EnvOptions::lqn = env_default_lqn_options() |
Options of the SolverLN that runs a LAYERED stage.
The reference names the stage solver by handing SolverENV a FACTORY – ENV(env, @(m) LN(m, @(mm) FLD(mm), 'timespan', [0 T])) – and this field is that factory's argument list, because a C++ template cannot take a MATLAB function handle. timespan_end, tran_points and tran_grid are OVERWRITTEN by the environment for every stage: the horizon and the grid the exit average is summed on belong to the coupling, not to a stage.
layer_solver defaults to fluid here where LnOptions alone defaults to mva, and the difference is not a preference: the coupling carries queue lengths across a switch and therefore needs each stage's TRANSIENT, which only the fluid layer engine produces. A caller who names another engine is refused by init, not quietly served the fluid one.
Definition at line 197 of file solver_env.h.
| std::string line::env::EnvOptions::method = "meanfield" |
The inter-stage coupling: meanfield is the reference's default.
Definition at line 143 of file solver_env.h.
Referenced by line::solvers::map_env_approx(), line::env::solver_env(), line::env::solver_env(), line::env::solver_env(), and line::env::stage_occupation().
| std::string line::env::EnvOptions::sojourn = "stochastic" |
options.sojourn: stochastic (default) or deterministic.
Definition at line 145 of file solver_env.h.
| fluid::FluidOptions line::env::EnvOptions::stage |
Options handed to each stage solver.
Definition at line 147 of file solver_env.h.
| double line::env::EnvOptions::stage_cutoff = -1.0 |
options.cutoff of a CTMC stage, read only when stage_solver is ctmc.
An open stage needs one; a closed one enumerates its own population.
Definition at line 152 of file solver_env.h.
| mva::MvaOptions line::env::EnvOptions::stage_mva |
Options of an mva stage solver, SolverMVA(model, options).
Definition at line 139 of file solver_env.h.
| nc::NcSolverOptions line::env::EnvOptions::stage_nc |
Options of an nc stage solver, SolverNC(model, options).
Definition at line 141 of file solver_env.h.
| std::string line::env::EnvOptions::stage_solver = "fluid" |
Which solver runs each FLAT stage: fluid (the fluid transient), ctmc (the enumerated chain), mva or nc.
A LAYERED stage is run by SolverLN whatever this says, and its own layer engine is named by lqn.layer_solver; asking for ctmc alongside a layered stage is refused rather than reinterpreted, since an LQN has no single generator to enumerate.
mva and nc are the ensemble the reference builds with SolverENV(env, @SolverMVA) / @SolverNC. Neither has a transient, so, as SolverENV.methodRefusal rules, they serve the closed-form limits avg and dec (SolverEnvLimit, at stage_mva / stage_nc) and the mean-field family refuses them by name.
Definition at line 137 of file solver_env.h.
| double line::env::EnvOptions::timespan_end = 100.0 |
options.timespan(2) of the inner solver: the transient horizon.
Definition at line 154 of file solver_env.h.
| std::size_t line::env::EnvOptions::tran_points = 1001 |
Points on a UNIFORM transient grid, used only where stage_grid declines to build one (a stage whose holding time is the disabled 1 x 1 zero pair).
It used to be the accuracy knob of the whole method, because the exit metrics are a Riemann-Stieltjes sum over whatever grid the stage was integrated on and a uniform grid resolves the HORIZON rather than the sojourn. Since 2026-08-11 each stage is integrated on the grid the sojourn asks for – 90% of the points under 5*E[S] – so the answer no longer moves with this: on renv_node_breakdown the horizon may be 100 or 1000 and Server QLen is 0.458854 or 0.459191.
Definition at line 180 of file solver_env.h.