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

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"
Include dependency graph for qsys_mmc_prio_tardiness.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.

Detailed Description

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.