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

Normalizing constant of a closed network of LIMITED JOINT-DEPENDENT (LJD) stations plus one aggregated delay, by numerical inversion of the multichain generating function (Choudhury-Leung-Whitt, J. More...

#include <algorithm>
#include <cmath>
#include <cstddef>
#include <limits>
#include <vector>
#include "line/api/pfqn/pfqn_clw.h"
#include "line/api/pfqn/pfqn_ncoi.h"
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
Include dependency graph for pfqn_clwjd.h:

Go to the source code of this file.

Namespaces

namespace  line
namespace  line::pfqn

Functions

template<class T>
ClwResult< T > line::pfqn::pfqn_clwjd (const std::vector< T > &Z, const std::vector< int > &N, const std::vector< OiRate< T > > &mu, const Matrix< T > &visits, const Matrix< int > &lcut, const ClwOptions &opt)
 Normalizing constant of a closed network of LIMITED JOINT-DEPENDENT (LJD) stations plus one aggregated delay, by numerical inversion of the multichain generating function (Choudhury-Leung-Whitt, J.
template<class T>
ClwResult< T > line::pfqn::pfqn_clwjd (const std::vector< T > &Z, const std::vector< int > &N, const std::vector< OiRate< T > > &mu, const Matrix< T > &visits, const Matrix< int > &lcut)
 Overload with the CLW default parameters.
template<class T>
ClwResult< T > line::pfqn::pfqn_clwjd (const std::vector< T > &Z, const std::vector< int > &N, const std::vector< OiRate< T > > &mu, const Matrix< T > &visits)
 Overload with the all-N cutoff, i.e.
template<class T>
ClwResult< T > line::pfqn::pfqn_clwjd (const std::vector< T > &Z, const std::vector< int > &N, const std::vector< OiRate< T > > &mu)
 Overload with unit visits and the all-N cutoff.

Detailed Description

Normalizing constant of a closed network of LIMITED JOINT-DEPENDENT (LJD) stations plus one aggregated delay, by numerical inversion of the multichain generating function (Choudhury-Leung-Whitt, J.

ACM 42(5):935-970, 1995).

Templated port of matlab/src/api/pfqn/pfqn_clwjd.m. This stands to pfqn_clwoi as pfqn_clw_lld stands to pfqn_clw: a per-station cutoff beyond which the rate stops changing turns an infinite series into a rational function of the same denominators.

Station i has a rate mu_i(n) that reads the whole per-class occupancy but saturates coordinatewise: with a cutoff vector l_i,

mu_i(n) = c_{i,t}, t = ( min(n_1,l_{i,1}), ..., min(n_R,l_{i,R}) ),

so past l_{i,r} further class-r jobs no longer change the rate. Order independence is l_i = 1 (t is the support indicator); a multiserver station with c servers is l_i = c, min(sum n, c) being a function of the clipped vector once every l_{i,r} >= c.

Splitting the count lattice by clipped region, on which mu_i is constant, and writing F_{i,t} for the part of F_i carried by the states with t_i(n) = t,

( mu_{i,t} - sum_{r: t_r = l_{i,r}} v_{i,r} z_r ) F_{i,t}(z) = sum_{r: t_r >= 1} v_{i,r} z_r F_{i,t-e_r}(z), F_{i,0} = 1, F_i(z) = sum_t F_{i,t}(z),

the two sides differing because removing a class-r job leaves the region only on an UNsaturated coordinate: for t_r < l_{i,r} the region pins n_r = t_r so n - e_r lands in t - e_r, while for t_r = l_{i,r} the region is n_r >= l and n - e_r lands in t or in t - e_r. The singularities are therefore the hyperplanes sum_{r in S} v_{i,r} z_r = mu_{i,t} over the SATURATED sets S = {r : t_r = l_{i,r}}: at most 2^R per station, however large the cutoffs are. Setting l_i = 1 reduces this to the support recursion of pfqn_clwoi and R = 1 reduces it to Bertozzi-McKenna eq. 2.19.

The restrictive static scaling of eqs. 5.41-5.46 runs on one row per (station, saturated set), carrying v_{i,r}/min{mu_{i,t} : saturated set of t is S}, the smallest rate over regions sharing a saturated set being the binding one; rows dominated by a superset of no larger rate are dropped.

SCOPE. The rate must be constant on each clipped region, which is checked on probe states. Any rate is admissible with an all-N cutoff (the default), the clipping being vacuous on the reachable lattice.

Arithmetic: TRANSCENDENTAL, double and Real only, as for the rest of the CLW family.

COST. prod_r 2 l_r N_r contour points, each costing O(M R prod_r (l_{i,r}+1)), against O(M prod_r (N_r+1)(N_r+2)/2) for pfqn_ncjd: the inversion is linear rather than quadratic in each population, but the per-point region box grows with the cutoff, so it pays off exactly when the joint dependence saturates early and loses outright at cutoff N.

Definition in file pfqn_clwjd.h.