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

SolverJMT: the Java Modelling Tools client, which also answers a transient, a response-time law, a state probability and a trajectory. More...

#include <line/solvers/solver.h>

Inheritance diagram for line::SolverJMT:
Collaboration diagram for line::SolverJMT:

Public Member Functions

 SolverJMT (Network &m, const SolverOptions &o=SolverOptions())
 SolverJMT (Network &m, const std::string &method)
std::vector< std::vector< CdfCurve > > cdf_respt ()
 getCdfRespT(): the EMPIRICAL response-time CDF per (station, class).
TranAvg tran_avg ()
 getTranAvg(): E[N](t), averaged over options.config.replications (SolverOptions::replications, default 10) independent replications under method default; an explicit jsim is one run.
double prob_aggr (std::size_t node, const std::vector< double > &state)
 getProbAggr(node, state): the time the declared state is held for.
SamplePath sample (std::size_t events=0, std::size_t node=0)
 sampleSysAggr(events), or sampleAggr(node, events) when node is given: one logged trajectory.
Public Member Functions inherited from line::NetworkSolver
virtual ~NetworkSolver ()
const std::string & get_name () const
 getName(): the solver's own name, e.g.
const SolverOptions & options () const
 The options this solver was built with.
Network & model () const
 The model this solver was built on.
const AvgTable & avg_table ()
 getAvgTable(): the average table, solving on first demand.
AvgSysTable avg_sys_table ()
 getAvgSysTable(): per-chain system response time and throughput of the same solve.
AvgMetricTable avg_qlen_table ()
 getAvgQLenTable(): avg_table()'s Station, JobClass and QLen columns.
AvgMetricTable avg_util_table ()
 getAvgUtilTable(): avg_table()'s Station, JobClass and Util columns.
AvgMetricTable avg_respt_table ()
 getAvgRespTTable(): avg_table()'s Station, JobClass and RespT columns.
AvgMetricTable avg_tput_table ()
 getAvgTputTable(): avg_table()'s Station, JobClass and Tput columns.
std::vector< double > avg_sys_respt ()
 getAvgSysRespT(): the per-chain system response time column of avg_sys_table.
std::vector< double > avg_sys_tput ()
 getAvgSysTput(): the per-chain system throughput column of avg_sys_table.
AvgChain avg_chain ()
 getAvgChain(): the station table of the same solve aggregated by chain, (nstations x nchains).
Matrix< double > avg_qlen_chain ()
 getAvgQLenChain() and its siblings: one matrix of avg_chain() each.
Matrix< double > avg_util_chain ()
Matrix< double > avg_respt_chain ()
Matrix< double > avg_residt_chain ()
Matrix< double > avg_arvr_chain ()
Matrix< double > avg_tput_chain ()
AvgChainTable avg_chain_table ()
 getAvgChainTable(): avg_chain() as a labelled table, one row per (station, chain).
const AvgTable & run_analyzer ()
 runAnalyzer(): force the solve, returning the table it produced.
std::vector< std::string > list_valid_methods () const
 listValidMethods(): the methods this solver advertises on this model.
bool is_solved () const
 isSolved() / hasResults(): whether a solve has been performed.
void reset ()
 reset(): discard the cached solve.
std::string method_used ()
 getMethodUsed(): the method the solve actually resolved to.
const solvers::CacheMetrics< double > & cache_metrics ()
 What the same solve observed at each Cache node, the data behind getAvgCacheTable() and getAvgItemTable().
std::vector< double > hit_ratio (const std::string &cache)
 cache.getHitRatio() after the solve: the per-class hit probability at the named Cache, NaN for a class that does not read it.
std::vector< double > hit_ratio (const Node &cache)
std::vector< double > miss_ratio (const std::string &cache)
 cache.getMissRatio() after the solve, with hit_ratio's conventions.
std::vector< double > miss_ratio (const Node &cache)
const solvers::FjMetrics< double > & avg_fj ()
 getAvgFJ(): the fork-join section metrics of the same solve, one row per Fork/Join pair (fj_sorted_pairs), one column per class.
AvgFJTable avg_fj_table ()
 getAvgFJTable() (aliases getAvgFJT, fjAvgT, aFJT): the same metrics as a labelled table.
AvgFJTable avg_fjt ()
AvgFJTable fj_avg_t ()

Additional Inherited Members

Protected Member Functions inherited from line::NetworkSolver
 NetworkSolver (Network &m, const std::string &name, const SolverOptions &o)
Protected Attributes inherited from line::NetworkSolver
Network * model_
std::string name_
SolverOptions opts_
AvgTable table_
solvers::CacheMetrics< double > cache_
solvers::FjMetrics< double > fj_
bool solved_ = false

Detailed Description

SolverJMT: the Java Modelling Tools client, which also answers a transient, a response-time law, a state probability and a trajectory.

IT IS NOT A BARE LINE_DECLARE_SOLVER, and the difference is the point: the macro exposes averages alone, so a program holding a SolverJMT could reach getAvgTable and nothing else while jmt_logs.h implemented all four of these and line-cli -s jmt reached none of them either.

EVERY ONE OF THEM IS READ OFF A LOGGED RUN, so each is a jsim answer whatever --method asked for: JMVA computes means from a product form and logs no trajectory at all.

Definition at line 251 of file solver.h.

Constructor & Destructor Documentation

◆ SolverJMT() [1/2]

line::SolverJMT::SolverJMT ( Network & m,
const SolverOptions & o = SolverOptions() )
inlineexplicit

◆ SolverJMT() [2/2]

line::SolverJMT::SolverJMT ( Network & m,
const std::string & method )
inline

Definition at line 255 of file solver.h.

References line::NetworkSolver::NetworkSolver().

Member Function Documentation

◆ cdf_respt()

std::vector< std::vector< CdfCurve > > line::SolverJMT::cdf_respt ( )

getCdfRespT(): the EMPIRICAL response-time CDF per (station, class).

Definition at line 1571 of file solver_facade.cpp.

References line::qn::Network< T >::get_struct(), line::jmt::jmt_get_cdf_resp_t(), line::NetworkSolver::model_, and line::NetworkSolver::opts_.

◆ prob_aggr()

double line::SolverJMT::prob_aggr ( std::size_t node,
const std::vector< double > & state )

◆ sample()

SamplePath line::SolverJMT::sample ( std::size_t events = 0,
std::size_t node = 0 )

sampleSysAggr(events), or sampleAggr(node, events) when node is given: one logged trajectory.

events TRUNCATES, it does not stop the run: JMT's maxEvents is global and cannot be asked for a count at one node, so what comes back is a prefix of the run the engine produced. Zero returns all of it.

Definition at line 1625 of file solver_facade.cpp.

References line::qn::Network< T >::get_struct(), line::InputError::InputError(), line::jmt::jmt_sample_aggr(), line::jmt::jmt_sample_sys_aggr(), line::SamplePath::label, line::NetworkSolver::model_, line::NetworkSolver::opts_, line::SamplePath::state, and line::SamplePath::t.

◆ tran_avg()

TranAvg line::SolverJMT::tran_avg ( )

getTranAvg(): E[N](t), averaged over options.config.replications (SolverOptions::replications, default 10) independent replications under method default; an explicit jsim is one run.

A FINITE HORIZON IS REQUIRED (options.timespan): a transient mean over an unstated horizon is not a quantity, and it is also what makes the replications' event grids commensurable.

Definition at line 1596 of file solver_facade.cpp.

References line::qn::Network< T >::get_struct(), line::jmt::jmt_transient_replications(), line::TranAvg::label, line::NetworkSolver::model_, line::NetworkSolver::opts_, line::jmt::JmtReplication< T >::QNt, line::TranAvg::QNt, line::jmt::JmtReplication< T >::t, and line::TranAvg::t.


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