LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
line::env::SolverEnvLimit< T > Class Template Reference

The limit solver. More...

#include <line/solvers/env/solver_env_limit.h>

Classes

class  CacheAccum
 The RATE accumulator behind the cache blend, SolverENV.accumCacheMetric. More...

Public Member Functions

 SolverEnvLimit (Environment< T > &e, const EnvOptions &o)
 SolverEnvLimit (Environment< T > &e, const EnvOptions &o, EnvStageAvgFn< T > stage_fn)
 With an injected stage solver: stage_fn runs every stage, exactly as the reference calls its factory.
EnvLimitSolution solve ()

Static Public Member Functions

static void stage_occupation (const Environment< T > &env, const EnvOptions &o, std::vector< double > &occ, std::vector< double > &w)
 stageOccupation_: the expected time spent in each stage over the horizon and the weight of each stage, read off the initialised environment without solving any stage.
static void occupation_refusal (const Environment< T > &env, const EnvOptions &o)
 occupationRefusal_: a finite horizon integrates exp(A t), which only an environment of exponential arcs has; T = Inf reads the embedded chain and mean holding times, which any semi-Markov stage has.
static std::vector< double > env_init_prob (const EnvOptions &o, std::size_t E)
 envInitProb_: options.config.env_init, default the first stage.
static double env_horizon (const EnvOptions &o)
 envHorizon_: the length of SolverENV's timespan, Inf when unbounded.
static EnvStageAvg< T > ctmc_stage_steady (const qn::NetworkStruct< T > &sn, double cutoff)
 One stage in steady state under the enumerated CTMC at cutoff, with its cache split, which is exact (read off the chain).

Detailed Description

template<class T>
class line::env::SolverEnvLimit< T >

The limit solver.

envObj must already carry a model per stage; init() is called here, as solveEnvLimit calls self.init() before reading probEnv.

Definition at line 176 of file solver_env_limit.h.

Constructor & Destructor Documentation

◆ SolverEnvLimit() [1/2]

template<class T>
line::env::SolverEnvLimit< T >::SolverEnvLimit ( Environment< T > & e,
const EnvOptions & o )
inline

Definition at line 178 of file solver_env_limit.h.

◆ SolverEnvLimit() [2/2]

template<class T>
line::env::SolverEnvLimit< T >::SolverEnvLimit ( Environment< T > & e,
const EnvOptions & o,
EnvStageAvgFn< T > stage_fn )
inline

With an injected stage solver: stage_fn runs every stage, exactly as the reference calls its factory.

opt.stage_solver is then not consulted, since the caller has already named the solver by handing one over.

Definition at line 185 of file solver_env_limit.h.

Member Function Documentation

◆ ctmc_stage_steady()

template<class T>
EnvStageAvg< T > line::env::SolverEnvLimit< T >::ctmc_stage_steady ( const qn::NetworkStruct< T > & sn,
double cutoff )
inlinestatic

◆ env_horizon()

template<class T>
double line::env::SolverEnvLimit< T >::env_horizon ( const EnvOptions & o)
inlinestatic

envHorizon_: the length of SolverENV's timespan, Inf when unbounded.

Definition at line 337 of file solver_env_limit.h.

References line::env::EnvOptions::env_timespan_end, and line::env::EnvOptions::env_timespan_start.

Referenced by occupation_refusal(), and stage_occupation().

◆ env_init_prob()

template<class T>
std::vector< double > line::env::SolverEnvLimit< T >::env_init_prob ( const EnvOptions & o,
std::size_t E )
inlinestatic

envInitProb_: options.config.env_init, default the first stage.

Definition at line 329 of file solver_env_limit.h.

References line::env::EnvOptions::env_init.

Referenced by occupation_refusal(), and stage_occupation().

◆ occupation_refusal()

template<class T>
void line::env::SolverEnvLimit< T >::occupation_refusal ( const Environment< T > & env,
const EnvOptions & o )
inlinestatic

occupationRefusal_: a finite horizon integrates exp(A t), which only an environment of exponential arcs has; T = Inf reads the embedded chain and mean holding times, which any semi-Markov stage has.

The initial stage law must be a distribution over the stages.

Definition at line 292 of file solver_env_limit.h.

References line::lang::GlobalConstants::CoarseTol, line::env::EnvArc< T >::dist, line::env::EnvArc< T >::enabled, env_horizon(), env_init_prob(), line::lang::EXP, line::InputError::InputError(), line::lang::process_to_text(), and line::UnsupportedError::UnsupportedError().

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

◆ solve()

◆ stage_occupation()

template<class T>
void line::env::SolverEnvLimit< T >::stage_occupation ( const Environment< T > & env,
const EnvOptions & o,
std::vector< double > & occ,
std::vector< double > & w )
inlinestatic

stageOccupation_: the expected time spent in each stage over the horizon and the weight of each stage, read off the initialised environment without solving any stage.

See the file header.

Definition at line 200 of file solver_env_limit.h.

References line::env::EnvArc< T >::dist, line::env::EnvArc< T >::enabled, env_horizon(), env_init_prob(), line::expm(), line::lang::GlobalConstants::FineTol, line::inverse(), and line::UnsupportedError::UnsupportedError().

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


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