![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Finite Capacity Regions in SolverCTMC: the DROP rule, as a filter on the enumerated state space, and the gate that refuses WAITQ. More...
#include <algorithm>#include <cmath>#include <cstddef>#include <vector>#include "line/lang/qn/network_struct.h"#include "line/lang/qn/state.h"#include "line/solvers/ctmc/solver_ctmc.h"#include "line/util/error.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::ctmc |
Enumerations | |
| enum class | line::ctmc::DropStrategy |
| Blocking and loss rules, with the values of MATLAB DropStrategy. More... | |
Functions | |
| template<class T> | |
| void | line::ctmc::ctmc_check_region_rules (const NetworkStruct< T > &sn) |
| Refuse the region rules this port does not implement. | |
| template<class T> | |
| bool | line::ctmc::ctmc_region_admissible (const NetworkStruct< T > &sn, const std::vector< T > &nir) |
| True when nir – the per-(station, class) counts of one state, in (ist-1)*K + k order – satisfies every region. | |
| template<class T> | |
| std::vector< NetState< T > > | line::ctmc::ctmc_filter_regions (const NetworkStruct< T > &sn, const std::vector< NetState< T > > &space) |
| The states of space a DROP region admits, in their original order. | |
| template<class T> | |
| std::vector< bool > | line::ctmc::ctmc_in_drop_region (const NetworkStruct< T > &sn) |
| True where a class sits at a station inside a DROP region, per station. | |
Finite Capacity Regions in SolverCTMC: the DROP rule, as a filter on the enumerated state space, and the gate that refuses WAITQ.
WHY DROP IS A FILTER AND WAITQ IS NOT. Under DROP a job refused entry to a full region is LOST, so the chain simply never occupies a state violating the region's caps: removing those states and letting make_infgen re-close the rows is exactly the censored chain, and it is what the reference does (its spaceGeneratorNodes bound plus the post-generation filter). Under WAITQ the job leaves its station and PARKS in a per-region FIFO outside every station, to be released head-of-line as capacity frees; that queue is extra state the region owns, so the state vector has to be augmented with one token buffer per region and the transition relation rebuilt around it. The two are not variants of one mechanism, which is why only the first is here and the second is refused BY NAME rather than approximated by dropping.
THE REGION BOUND ALSO BELONGS IN THE ENUMERATION, not only after it. The automatic cutoff is region-blind and can far exceed any reachable population – cutoff 10 for a region capped at 4 – and filtering only after generation means enumerating an intractable space first. Filtering here is correct but not sufficient for large models; see the note on ctmc_region_class_cap.
Definition in file solver_ctmc_fcr.h.