![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Cosmetatos / Page interpolation approximation for the GI/G/k queue. More...
#include "line/api/qsys/qsys_mmk.h"#include "line/api/qsys/qsys_types.h"#include "line/num/number.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::qsys |
Functions | |
| template<class T> | |
| QsysResult< T > | line::qsys::qsys_gigk_approx_cosmetatos (const T &lambda, const T &mu, const T &ca, const T &cs, unsigned k) |
| Cosmetatos / Page interpolation approximation for the GI/G/k queue. | |
Cosmetatos / Page interpolation approximation for the GI/G/k queue.
Templated port of matlab/src/api/qsys/qsys_gigk_approx_cosmetatos.m.
gamma = min(0.24, (1-rho)(k-1)(sqrt(4+5k)-2)/(16 k rho)) phi1 = 1 + gamma (M/D/k factor) phi3 = (1-4 gamma) exp(-2(1-rho)/(3 rho)) (D/M/k factor) Wq = [ca^2 cs^2 + ca^2(1-cs^2) phi1/2 + (1-ca^2) cs^2 phi3/2] Wq(M/M/k)
for ca^2 <= 1 and cs^2 <= 1; outside the unit box the Lee-Longton scaling Wq = ((ca^2+cs^2)/2) Wq(M/M/k) is used instead. W = Wq + 1/mu.
DIVERGENCE: jar/.../Qsys_gigk_approx_cosmetatos.java names its arguments ca2 and cs2 and uses them unsquared, i.e. it expects squared coefficients of variation, whereas MATLAB takes ca, cs and squares them internally. MATLAB is ground truth, so this port takes ca, cs. The JAR also returns {L,W,Q,U} instead of [W,rhohat]; W agrees once the argument convention is matched.
References: Cosmetatos (1975) INFOR 13, 328-331; Page (1982) J. Opl. Res. Soc. 33, 453-473; Whitt (1993) eq. (2.17) for the gamma safeguard.
Carries sqrt and exp, so it requires transcendental arithmetic and cannot be instantiated at T = Rational.
Definition in file qsys_gigk_approx_cosmetatos.h.