![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Port of solver_ctmc_pools.m: rewrite every heterogeneous-server station (Queue.addServerType) into the form the CTMC state space enumerates exactly, following the LDES semantics. More...
#include <algorithm>#include <cmath>#include <cstddef>#include <string>#include <vector>#include "line/api/mam/map_moment.h"#include "line/lang/distribution.h"#include "line/lang/qn/network_struct.h"#include "line/lang/qn/state_events.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| Conservation laws of a layered queueing network, enumerated from its structure. | |
| namespace | line::ctmc |
| namespace | line::ctmc::pools_detail |
Functions | |
| template<class T> | |
| void | line::ctmc::pools_detail::require_ph (const lang::Distrib< T > &d, const mam::Map< T > &m, const std::string &name, const std::string &cname, const std::string &what) |
| A renewal phase-type law is what a pool server can carry; anything else is refused by name. | |
| template<class T> | |
| void | line::ctmc::pools_detail::refuse_features (const qn::NetworkStruct< T > &sn, std::size_t ind, std::size_t ist) |
| The features a pooled station cannot be combined with, sub_refuse_features of the reference. | |
| template<class T> | |
| void | line::ctmc::pools_detail::pool_station (qn::NetworkStruct< T > &sn, std::size_t ind, std::size_t ist) |
| Rewrite one station; the struct is the solver's private copy. | |
| template<class T> | |
| bool | line::ctmc::ctmc_has_pools (const qn::NetworkStruct< T > &sn) |
| True when the struct has a heterogeneous-server station that ctmc_pools rewrites. | |
| template<class T> | |
| bool | line::ctmc::ctmc_pools (const qn::NetworkStruct< T > &in, qn::NetworkStruct< T > &out) |
| Rewrite a copy of in into out when it has pooled stations; false, leaving out untouched, when there is nothing to rewrite. | |
| template<class T> | |
| bool | line::ctmc::ctmc_pool_station (const qn::NetworkStruct< T > &sn, std::size_t ist) |
| Utilization at a pooled station: the mean number of busy servers of the class over the bank. | |
Port of solver_ctmc_pools.m: rewrite every heterogeneous-server station (Queue.addServerType) into the form the CTMC state space enumerates exactly, following the LDES semantics.
A class-r job in service at a pooled station occupies one server of ONE compatible pool t and is served by that pool's law, or by the station's own law for r when the pool declares none. The per-class service process becomes a block-diagonal phase-type law with one block per compatible pool, in ascending pool order, so a phase of the class-r server block names both the pool and the service phase. The bookkeeping read by qn::after_event_station_pool and qn::from_marginal_pool goes to sn.ctmcpool. Under ALIS and FAIRNESS, when some class has two or more compatible pools, the global rotating pool order is part of the state: its index into perms is the station's single local variable (nvars column 2R+1). The PHASE synchronizations a multi-phase pool law needs follow from refresh_sync, which reads the rewritten laws.
Definition in file solver_ctmc_pools.h.