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

Options of SolverLN. More...

#include <line/solvers/ln/solver_ln.h>

Collaboration diagram for line::ln::LnOptions:

Public Attributes

int iter_max = 200
double iter_tol = 5e-3
double tol = 1e-4
bool interlocking = true
std::string interlock_method = "ilrate"
 options.config.interlock_method: how the interlock is TRACKED once interlocking is on.
double interlock_maxpaths = 32.0
 options.config.interlock_maxpaths: refpath refuses a layer carrying more routes into it.
std::string interlock_refpath_scope = "merging"
 options.config.interlock_refpath_scope: merging transforms only the layers where two or more callers descend from one reference task; all also those with a lone caller below a reference task.
std::string relax = "fixed"
double relax_factor = 0.5
mva::MvaOptions layer
 Options handed to each layer solver; SolverMVA defaults.
std::string layer_solver = "mva"
 Which solver runs each layer: mva, nc, fluid, ssa, mam, ctmc, ldes (the native in-process LDES engine) or jmt (JSIM, as a subprocess).
fluid::FluidOptions layer_fluid
 Options handed to each layer when layer_solver is fluid.
nc::NcSolverOptions layer_nc
 Options handed to each layer when layer_solver is nc.
ssa::SsaOptions layer_ssa
 Options handed to each layer when layer_solver is ssa.
mam::MamOptions layer_mam
 Options handed to each layer when layer_solver is mam (SolverMAM's own default method).
ctmc::CtmcOptions layer_ctmc
 Options handed to each layer when layer_solver is ctmc, and to a Region layer, which goes to CTMC whatever the layer solver is.
ldes::LdesOptions layer_ldes
 Options handed to each layer when layer_solver is ldes.
jmt::JmtOptions layer_jmt
 Options handed to each layer when layer_solver is jmt (JSIM); seed as for layer_ldes.
std::string method = "default"
 options.method, which selects WHAT is reported and not merely how:
std::string ln_transient = "coupled"
 options.config.ln_transient: how the per-layer transients are coupled.
long ln_transient_iter_max = 20
 options.config.ln_transient_iter_max and ..._tol of the relaxation.
double ln_transient_tol = 1e-2
std::string ln_transient_channels = "both"
 options.config.ln_transient_channels: which inter-layer coupling is injected, both, thinkt (client delay only) or callservt (synchronous-call service only).
double timespan_end = std::numeric_limits<double>::infinity()
 options.timespan(2): the transient horizon; infinite means none is set.
std::size_t tran_points = 101
 Output points per layer trajectory, and the relaxation's own grid size.
std::vector< double > tran_grid
 An EXPLICIT output grid for the layered transient, replacing the uniform tran_points one when it is not empty.
std::map< std::string, ::line::lqn::NlpLld > lld
 options.config.lld: a smooth queue-dependent rate multiplier per station, {processor or task name: expression in n}, read by method='nlp' and by warmstart='nlp' only.
double nlp_alpha = 20.0
 options.config.nlp_alpha: sharpness of the softmin standing in for min(n, m).
int nlp_warm = 0
 options.config.nlp_warm: the warm-start sweeps the program's Newton ladder begins from.
int nlp_maxiter = 3000
 options.config.nlp_maxiter: budget of the descent the root-find falls back to.
std::string nlp_fork = "refuse"
 options.config.nlp_fork: 'refuse' an AND-fork block, or price it at E[max] of exponentials ('exp').
std::string warmstart
 options.config.warmstart: empty for a cold start, or 'nlp' / 'mol' to seed a LAYERED method's fixed point with the QD-AMVA program's solution or the Method of Layers'.
std::size_t mol_iter_max = 200
 options.config.mol_iter_max, mol_iter_tol, mol_relax_factor: lqn_mol's own settings for warmstart='mol'.
double mol_iter_tol = 1e-6
double mol_relax_factor = 0.5

Detailed Description

Options of SolverLN.

Defaults are SolverOptions('LN').

Definition at line 275 of file solver_ln.h.

Member Data Documentation

◆ interlock_maxpaths

double line::ln::LnOptions::interlock_maxpaths = 32.0

options.config.interlock_maxpaths: refpath refuses a layer carrying more routes into it.

Definition at line 291 of file solver_ln.h.

◆ interlock_method

std::string line::ln::LnOptions::interlock_method = "ilrate"

options.config.interlock_method: how the interlock is TRACKED once interlocking is on.

ilrate is the post-hoc rate discount of update_populations (the default and the historical method); refpath merges the callers that are the same reference customers into ONE client chain running down the reference path, replacing the discount; none applies no correction. A request refpath cannot carry DOWNGRADES to ilrate, see ln_interlock_method.

Definition at line 289 of file solver_ln.h.

◆ interlock_refpath_scope

std::string line::ln::LnOptions::interlock_refpath_scope = "merging"

options.config.interlock_refpath_scope: merging transforms only the layers where two or more callers descend from one reference task; all also those with a lone caller below a reference task.

Definition at line 297 of file solver_ln.h.

◆ interlocking

bool line::ln::LnOptions::interlocking = true

Definition at line 279 of file solver_ln.h.

◆ iter_max

int line::ln::LnOptions::iter_max = 200

Definition at line 276 of file solver_ln.h.

◆ iter_tol

double line::ln::LnOptions::iter_tol = 5e-3

Definition at line 277 of file solver_ln.h.

◆ layer

mva::MvaOptions line::ln::LnOptions::layer

Options handed to each layer solver; SolverMVA defaults.

Definition at line 301 of file solver_ln.h.

◆ layer_ctmc

ctmc::CtmcOptions line::ln::LnOptions::layer_ctmc

Options handed to each layer when layer_solver is ctmc, and to a Region layer, which goes to CTMC whatever the layer solver is.

Definition at line 331 of file solver_ln.h.

◆ layer_fluid

fluid::FluidOptions line::ln::LnOptions::layer_fluid

Options handed to each layer when layer_solver is fluid.

Definition at line 320 of file solver_ln.h.

◆ layer_jmt

jmt::JmtOptions line::ln::LnOptions::layer_jmt

Options handed to each layer when layer_solver is jmt (JSIM); seed as for layer_ldes.

Definition at line 339 of file solver_ln.h.

◆ layer_ldes

ldes::LdesOptions line::ln::LnOptions::layer_ldes

Options handed to each layer when layer_solver is ldes.

seed is the BASE of the reference's Robbins-Monro schedule: layer e (1-based) of iteration it runs at seed + (it-1)*nlayers + e, as SolverLN.pre does for every stochastic layer.

Definition at line 337 of file solver_ln.h.

◆ layer_mam

mam::MamOptions line::ln::LnOptions::layer_mam

Options handed to each layer when layer_solver is mam (SolverMAM's own default method).

Definition at line 326 of file solver_ln.h.

◆ layer_nc

nc::NcSolverOptions line::ln::LnOptions::layer_nc

Options handed to each layer when layer_solver is nc.

Definition at line 322 of file solver_ln.h.

◆ layer_solver

std::string line::ln::LnOptions::layer_solver = "mva"

Which solver runs each layer: mva, nc, fluid, ssa, mam, ctmc, ldes (the native in-process LDES engine) or jmt (JSIM, as a subprocess).

The reference names this by passing a solver FACTORY, LN(model, @(m) Fluid(m, opt)), so the choice is per-ensemble and not per-layer; this field is the same choice under a name, because a C++ template cannot take a MATLAB function handle.

THEY DO NOT CONVERGE TO THE SAME PLACE. Each engine feeds different service demands back into the next outer iteration, so the ensembles reach different fixed points rather than the same one by different routes. ssa in particular is a NOISY layer solver: the deterministic convergence test cannot terminate against its standard error, so it is driven with LnStochController (lqn_analyzers.h) instead.

Definition at line 318 of file solver_ln.h.

Referenced by line::env::env_default_lqn_options().

◆ layer_ssa

ssa::SsaOptions line::ln::LnOptions::layer_ssa

Options handed to each layer when layer_solver is ssa.

Definition at line 324 of file solver_ln.h.

◆ lld

std::map<std::string, ::line::lqn::NlpLld> line::ln::LnOptions::lld

options.config.lld: a smooth queue-dependent rate multiplier per station, {processor or task name: expression in n}, read by method='nlp' and by warmstart='nlp' only.

See lqn_export_nlp.h.

Definition at line 391 of file solver_ln.h.

◆ ln_transient

std::string line::ln::LnOptions::ln_transient = "coupled"

options.config.ln_transient: how the per-layer transients are coupled.

decoupled freezes the inter-layer demands at the converged fixed point; coupled reconciles them by waveform relaxation. Iteration 0 of the coupled relaxation IS the decoupled answer.

Definition at line 358 of file solver_ln.h.

◆ ln_transient_channels

std::string line::ln::LnOptions::ln_transient_channels = "both"

options.config.ln_transient_channels: which inter-layer coupling is injected, both, thinkt (client delay only) or callservt (synchronous-call service only).

Used to isolate each channel's share of the coupled transient.

Definition at line 368 of file solver_ln.h.

◆ ln_transient_iter_max

long line::ln::LnOptions::ln_transient_iter_max = 20

options.config.ln_transient_iter_max and ..._tol of the relaxation.

Definition at line 360 of file solver_ln.h.

◆ ln_transient_tol

double line::ln::LnOptions::ln_transient_tol = 1e-2

Definition at line 361 of file solver_ln.h.

◆ method

std::string line::ln::LnOptions::method = "default"

options.method, which selects WHAT is reported and not merely how:

default the mean-based update (updateMetricsDefault) moment3 the APH moment-based update (updateMetricsMomentBased), which additionally produces a per-entry response-time distribution, get_cdf_respt() mw.upper Majumdar-Woodside robust box bounds INSTEAD of a fixed mw.lower point: no layer is ever solved, and every metric the bound does not define is reported as undefined

Definition at line 351 of file solver_ln.h.

◆ mol_iter_max

std::size_t line::ln::LnOptions::mol_iter_max = 200

options.config.mol_iter_max, mol_iter_tol, mol_relax_factor: lqn_mol's own settings for warmstart='mol'.

Definition at line 407 of file solver_ln.h.

◆ mol_iter_tol

double line::ln::LnOptions::mol_iter_tol = 1e-6

Definition at line 408 of file solver_ln.h.

◆ mol_relax_factor

double line::ln::LnOptions::mol_relax_factor = 0.5

Definition at line 409 of file solver_ln.h.

◆ nlp_alpha

double line::ln::LnOptions::nlp_alpha = 20.0

options.config.nlp_alpha: sharpness of the softmin standing in for min(n, m).

Definition at line 393 of file solver_ln.h.

◆ nlp_fork

std::string line::ln::LnOptions::nlp_fork = "refuse"

options.config.nlp_fork: 'refuse' an AND-fork block, or price it at E[max] of exponentials ('exp').

Definition at line 399 of file solver_ln.h.

◆ nlp_maxiter

int line::ln::LnOptions::nlp_maxiter = 3000

options.config.nlp_maxiter: budget of the descent the root-find falls back to.

Definition at line 397 of file solver_ln.h.

◆ nlp_warm

int line::ln::LnOptions::nlp_warm = 0

options.config.nlp_warm: the warm-start sweeps the program's Newton ladder begins from.

Definition at line 395 of file solver_ln.h.

◆ relax

std::string line::ln::LnOptions::relax = "fixed"

Definition at line 298 of file solver_ln.h.

◆ relax_factor

double line::ln::LnOptions::relax_factor = 0.5

Definition at line 299 of file solver_ln.h.

◆ timespan_end

double line::ln::LnOptions::timespan_end = std::numeric_limits<double>::infinity()

options.timespan(2): the transient horizon; infinite means none is set.

Definition at line 370 of file solver_ln.h.

◆ tol

double line::ln::LnOptions::tol = 1e-4

Definition at line 278 of file solver_ln.h.

◆ tran_grid

std::vector<double> line::ln::LnOptions::tran_grid

An EXPLICIT output grid for the layered transient, replacing the uniform tran_points one when it is not empty.

SolverENV is what asks for it: a layered stage's exit metric is a Riemann-Stieltjes sum against the environment's holding-time CDF, and a uniform grid over the horizon resolves the horizon rather than the sojourn. Interpolating afterwards cannot recover resolution the trajectory never had, so the points are asked for instead – SolverEnv::stage_grid builds them and set_tran_grid installs them. The grid must be increasing and start at zero; LSODA takes it as given.

Definition at line 385 of file solver_ln.h.

◆ tran_points

std::size_t line::ln::LnOptions::tran_points = 101

Output points per layer trajectory, and the relaxation's own grid size.

Definition at line 372 of file solver_ln.h.

◆ warmstart

std::string line::ln::LnOptions::warmstart

options.config.warmstart: empty for a cold start, or 'nlp' / 'mol' to seed a LAYERED method's fixed point with the QD-AMVA program's solution or the Method of Layers'.

Refused with method='nlp', which runs no iteration.

Definition at line 405 of file solver_ln.h.


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