![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Exact stationary expected tardiness in a multiclass priority M/M/c queue (Hafizoglu, Gel and Keskinocak, INFORMS J. More...
#include <algorithm>#include <cctype>#include <cmath>#include <complex>#include <cstddef>#include <limits>#include <string>#include <vector>#include "line/api/lti/laplace_invert.h"#include "line/api/qsys/qsys_res.h"#include "line/util/error.h"Go to the source code of this file.
Classes | |
| struct | line::qsys::MmcPrioTardinessResult |
| MATLAB's [Tard, Ptard, res] outputs. More... | |
Namespaces | |
| namespace | line |
| Conservation laws of a layered queueing network, enumerated from its structure. | |
| namespace | line::qsys |
| namespace | line::qsys::tarddetail |
Typedefs | |
| using | line::qsys::tarddetail::Cplx = std::complex<double> |
Functions | |
| bool | line::qsys::tarddetail::is_preemptive (const std::string &type, const char *fn) |
| double | line::qsys::tarddetail::erlang_c (unsigned c, double A) |
| Cplx | line::qsys::tarddetail::busy_lst (Cplx s, double lb, double cmu) |
| LST of the M/M/1 busy period with rates lb and cmu, conjugate form. | |
| Cplx | line::qsys::tarddetail::ipow (Cplx z, unsigned k) |
| std::vector< Cplx > | line::qsys::tarddetail::pr_state_lst (Cplx s, double lb, double mu, unsigned c) |
| Theorem 4 transforms f_0..f_{c-1}, by the tridiagonal (Thomas) solve. | |
| std::vector< double > | line::qsys::tarddetail::pr_means (double lb, double mu, unsigned c) |
| Mean response times S_0..S_{c-1} of the Theorem 4 states. | |
| void | line::qsys::tarddetail::exp_mix_tard (double mu, double theta, double Pc, double d, double &S, double &T, double &P) |
| {S, Tard, P} of T = X + B Y, X ~ Exp(mu), Y ~ Exp(theta), B ~ Bernoulli(Pc). | |
| void | line::qsys::tarddetail::invert_tard (const lti::LaplaceFn &F, double S, double d, lti::LaplaceMethod m, double &T, double &P) |
| Tard and P by inverting (s S - 1 + F)/s^2 and (1 - F)/s at d. | |
| void | line::qsys::tarddetail::hypo_tard (unsigned K, double mu, double theta, double d, double S, double &T, double &P) |
| Tard and P of T = Exp(mu) + Erlang(K, theta) by nonnegative Poisson series. | |
| MmcPrioTardinessResult | line::qsys::qsys_mmc_prio_tardiness (const std::vector< double > &lambda, double mu, unsigned c, const std::vector< double > &d, const std::string &type="np", const std::string &method="euler") |
| Stationary per-class expected tardiness of a priority M/M/c queue. | |
Exact stationary expected tardiness in a multiclass priority M/M/c queue (Hafizoglu, Gel and Keskinocak, INFORMS J.
Comput. 25(2), 2013).
Port of matlab/src/api/qsys/qsys_mmc_prio_tardiness.m. Classes are listed in priority order (class 1 highest), all share one exponential service rate mu, FCFS within a class, under head-of-line ("np") or preemptive-resume ("pr") priority. A class-i order that finds all servers busy waits q+1 busy periods of an M/M/1 queue with the higher-priority rate and service rate c mu (Theorem 2); under preemption the in-service states solve the tridiagonal system of Theorem 4. Mixing over the stationary state seen on arrival gives the response-time transform f(s); tardiness and its probability are the inverses at d of (s E[T] - 1 + f(s))/s^2 and (1 - f(s))/s. Classes with no higher-priority traffic use a closed form.
ARITHMETIC: double. The result is a numerical Laplace inversion.
Definition in file qsys_mmc_prio_tardiness.h.