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

Exact normalizing-constant analysis of a discrete-time (slotted) model. More...

#include <cmath>
#include <cstddef>
#include <limits>
#include <string>
#include <vector>
#include "line/api/dpfqn/dpfqn_nc.h"
#include "line/api/dqsys/dqsys_bernoulli1.h"
#include "line/api/sn/sn_rt_stations.h"
#include "line/lang/qn/network_struct.h"
#include "line/solvers/nc/nc_types.h"
#include "line/util/error.h"
Include dependency graph for solver_nc_dt.h:

Go to the source code of this file.

Classes

struct  line::nc::DtModel< T >
 Classification of a model against the discrete-time product form. More...

Namespaces

namespace  line
namespace  line::nc

Functions

template<class T>
DtModel< T > line::nc::nc_is_dt_model (const qn::NetworkStruct< T > &sn)
 Classify sn against the two discrete-time product-form families.
template<class T>
NcSolution< T > line::nc::solver_nc_dt (const qn::NetworkStruct< T > &sn, const NcSolverOptions &opt)
 Exact discrete-time analysis of sn.

Detailed Description

Exact normalizing-constant analysis of a discrete-time (slotted) model.

Port of matlab/src/solvers/NC/nc_is_dt_model.m and solver_nc_dt_analyzer.m. The route is requested with NcSolverOptions::slotted, the same switch SolverLDES uses to run on a discrete time scale, and is never auto-detected: a Geometric service time is a perfectly ordinary continuous-time model unless the caller says the model lives on a slot lattice.

Two families are covered, both from Daduna (2001):

chapter 2 a Bernoulli server fed by a Bernoulli arrival stream, with an unbounded buffer (theorem 2.3, corollary 2.7), a finite buffer (corollary 2.8) or a load-dependent service probability (example 2.10), evaluated by dqsys_bernoulli1; chapter 3 a closed cycle of Bernoulli servers (theorem 3.2, corollary 3.4), evaluated by dpfqn_nc when the service probabilities are state independent and by dpfqn_ncld otherwise.

THE ADMISSIBLE FEATURE SET IS NARROW BECAUSE THE PRODUCT FORM IS NARROW. Beyond the geometric service requirement:

  • a cycle is the only topology; section 4.1 of the reference records that general discrete-time topologies of FCFS Bernoulli servers have no product form;
  • every station must be a single server. Pestien and Ramakrishnan, quoted before example 2.10, proved that a multiserver node inside a cycle of geometrical queues destroys the product form for ANY finite server count, so the multiserver case is refused rather than approximated;
  • class switching is rejected, and a multichain cycle is admitted only through its aggregate population.

A model that fails any of these is an ERROR, not a fallback to the continuous-time analyzer: the continuous-time answer to a slotted question is a different number, not a worse one.

Every metric is on the slot lattice: a rate is a per-slot probability and a time is a number of slots. NcSolverOptions::slotlength rescales both to model time units.

Definition in file solver_nc_dt.h.