LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
solver_ctmc_pools.h File Reference

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"
Include dependency graph for solver_ctmc_pools.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.

Detailed Description

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.