Class Pfqn_qlen_joint_moments
The coordinates are (station,class) pairs. Two pairs sharing a class give
the cross-station covariance of that class; two pairs sharing a station give
the cross-class covariance at that station, which is what a class-oriented
method of moments (Pfqn_comomrm and its relatives) is positioned to
deliver. Two exact routes reach the joint survival array, and both end in the
same conversion, the tail edge of the house of moments
(jline.api.moment) followed by the joint central-moment and cumulant
conversions:
- SINGLE CLASS (R = 1), route "tail". The survival probabilities are ratios of normalizing constants of the network itself, P(n_i >= k_i for all i) = (prod_i L_i^k_i) G(N - sum_i k_i) / G(N), which holds because a load-independent single-class station has the geometric occupancy L_i^n. Only N+1 constants of the ORIGINAL model are needed, which is why any normalizing-constant algorithm serves it.
- MULTICLASS, route "pmf". The geometric factorization fails, since a multiclass load-independent station carries the multinomial occupancy f_i(n_i) = (|n_i|)! prod_r L_(i,r)^n_(i,r) / n_(i,r)!. What holds instead is the joint law of the selected stations in terms of the COMPLEMENTARY network, the model with those stations deleted and the think times kept, P(n_i = m_i, i in S) = prod_i f_i(m_i) G_(S^c)(N - sum_i m_i) / G(N). The survival array is the reverse cumulative sum of that array, exactly, since the box covers the support.
Neither the factorial nor the raw moments have a one-constant closed form; the survival array is the queue-length functional that does. The normalizing-constant algorithm is INJECTED rather than called at a fixed site: the whole set of populations is known before any evaluation, so it is emitted in one batch and an algorithm that produces several constants in one pass serves it without recomputation. A precomputed table, which the MATLAB and native-Python versions accept directly, is passed here by wrapping it in the same functional interface.
Reference: M. Reiser and S. S. Lavenberg. Mean-value analysis of closed multichain queuing networks. Journal of the ACM, 27(2):313-322, 1980.
- Since:
- LINE 3.0
-
Method Summary
Modifier and TypeMethodDescriptionstatic Ret.pfqnQlenMomentspfqn_qlen_joint_moments(Matrix L, Matrix N, Matrix Z, int[][] pairs) Joint queue-length moments with the default options and no injected source of normalizing constants.static Ret.pfqnQlenMomentspfqn_qlen_joint_moments(Matrix L, Matrix N, Matrix Z, int[][] pairs, String route, BiFunction<Matrix, Matrix, Matrix> lgSource, SolverOptions options) Joint queue-length moments of a closed product-form network.
-
Method Details
-
pfqn_qlen_joint_moments
public static Ret.pfqnQlenMoments pfqn_qlen_joint_moments(Matrix L, Matrix N, Matrix Z, int[][] pairs) Joint queue-length moments with the default options and no injected source of normalizing constants.- Parameters:
L- service demand matrix of the queueing stations (M x R)N- population vector (1 x R)Z- think time vector (1 x R), may be nullpairs- P x 2 matrix of 0-based (station,class) pairs- Returns:
- the moment arrays over the selected coordinates
-
pfqn_qlen_joint_moments
public static Ret.pfqnQlenMoments pfqn_qlen_joint_moments(Matrix L, Matrix N, Matrix Z, int[][] pairs, String route, BiFunction<Matrix, Matrix, Matrix> lgSource, SolverOptions options) Joint queue-length moments of a closed product-form network.- Parameters:
L- service demand matrix of the QUEUEING stations (M x R). Delay stations belong in Z, their marginals following a different law. Load-dependent and multiserver stations are out of scope for both routesN- population vector (1 x R)Z- think time vector (1 x R), may be null for a closed model with no delaypairs- P x 2 matrix of 0-based (station,class) pairs, one per dimension of the returned arrays; null selects every class of every stationroute- "auto" (tail when R = 1, pmf otherwise), "tail" or "pmf"lgSource- where log G comes from, or null to always callPfqn_nc. It is invoked ONCE per network with the demand matrix and a P x R matrix of populations, and must return a P x 1 matrix of log G with NaN where it cannot serve; those rows are filled in by Pfqn_ncoptions- options passed to Pfqn_nc; null uses the exact method, since an approximate normalizing constant would silently make the moments approximate- Returns:
- the moment arrays over the selected coordinates
-