![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Kronecker rate descriptor for shared-server stations with phase-type service. More...
#include <cmath>#include <cstddef>#include <map>#include <string>#include <vector>#include "line/api/mdd/mdd_types.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::mdd |
Functions | |
| template<class T> | |
| MddDescriptor< T > | line::mdd::mdd_ps (const std::vector< T > &mu, const Matrix< T > &P, const std::vector< double > &servers, int N, const std::vector< MddServiceLaw< T > > &proc=std::vector< MddServiceLaw< T > >()) |
| Build the descriptor. | |
Kronecker rate descriptor for shared-server stations with phase-type service.
Port of matlab/src/api/mdd/mdd_ps.m, jline.api.mdd.Mdd_ps and python/line_solver/api/mdd/ps.py.
Under processor sharing every job at a station is in service at once, each holding its own phase, so naming a single in-service phase (what mdd_descriptor does, which is non-preemptive semantics) cannot represent the state. The local state here is instead the PER-PHASE COUNT vector v = (v_1,...,v_h), v_a jobs in phase a, with n = sum(v) jobs present. That is still a per-station quantity, so every event stays a product of per-level terms and the Kronecker form of Eq. 1 survives.
With one server shared by n jobs each job advances at rate 1/n, so from local state v with n = sum(v):
internal v -> v - e_a + e_b at v_a * D0[a][b] / n (a != b) departure v -> v - e_a at v_a * t[a] / n * P[i][j] arrival v -> v + e_b at pie[b]
An infinite-server (delay) station is the same without the 1/n scaling. For h = 1 the departure rate collapses to n*mu/n = mu at PS and to n*mu at IS, reproducing the usual single-server and delay rate laws.
The local domain is the number of compositions of 0..N over h phases, C(N+h,h), against 1+N*h for the non-preemptive encoding: the price of tracking every job's phase rather than one.
Definition in file mdd_ps.h.