![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Conway's multiserver Linearizer for chain-dependent FCFS queues (Conway 1989, "Fast Approximate Solution of Queueing Networks with Multi-Server Chain-Dependent FCFS Queues"). More...
#include <cstddef>#include <vector>#include "line/api/pfqn/pfqn_amva_common.h"#include "line/api/pfqn/pfqn_egflinearizer.h"#include "line/api/pfqn/pfqn_linearizerms.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::pfqn |
Functions | |
| template<class T> | |
| LinearizerResult< T > | line::pfqn::pfqn_conwayms (const Matrix< T > &L, const std::vector< int > &N, const Matrix< T > &Z, const std::vector< int > &nservers, const std::vector< SchedStrategy > &type, double tol, int maxiter, const Matrix< T > &QN0) |
| Conway's multiserver Linearizer for chain-dependent FCFS queues (Conway 1989, "Fast Approximate Solution of Queueing Networks with
Multi-Server Chain-Dependent FCFS Queues"). | |
| template<class T> | |
| LinearizerResult< T > | line::pfqn::pfqn_conwayms (const Matrix< T > &L, const std::vector< int > &N, const Matrix< T > &Z, const std::vector< int > &nservers) |
| MATLAB defaults: all stations FCFS, tol = 1e-8, maxiter = 1000. | |
Conway's multiserver Linearizer for chain-dependent FCFS queues (Conway 1989, "Fast Approximate Solution of Queueing Networks with Multi-Server Chain-Dependent FCFS Queues").
Templated port of matlab/src/api/pfqn/pfqn_conwayms.m, cross-checked against jar/src/main/java/jline/api/pfqn/mva/Pfqn_conwayms.java.
The distinguishing feature over pfqn_linearizerms is the pair of conditional service rates at a c-server station, obtained by averaging over the compositions n of the c busy servers among the R chains,
A_i(n) = multinomial(n) prod_c F_r(i,c)^{n_c}, F_r(i,c) = T_1(c|r) L(i,c) / sum_c' ... XR(i,r) = sum_{n in B_r} A_i(n) / (sum_c n_c / L(i,c)) / sum_{n in B_r} A_i(n) XE(i,r,c) = the same restricted to n_c >= 1
with B_r = { n : sum(n) = c, n <= N - e_r }, which enter the residence time as W = L + PB XR + sum_c XE (Q_1 - L T_1).
Arithmetic: TRANSCENDENTAL-GATED, on the fixed-point tolerance alone. The inner Core loop stops on norm(Q_{k+1} - Q_k) < tol, so the returned value depends on the stopping rule. The reference forms A_i(n) as exp(multinomialln(n) + n log F), but that is a convenience: the value is a finite rational in F, and this port computes it as multinomial(n) times an integer power product, which is both exact and free of the 0 * (-Inf) = NaN the reference produces whenever some F_r(i,c) vanishes at n_c == 0.
Convergence norm and the FCFS selection follow pfqn_linearizerms: Frobenius rather than spectral (dominating, same fixed point), and the FCFS arm of the single-server residence time is taken only when every station is FCFS, which is what MATLAB's if type == SchedStrategy.FCFS on a vector means. The JAR inverts this test; MATLAB is the reference.
Definition in file pfqn_conwayms.h.