![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Exact mean value analysis of the two-station multiclass LCFS network of Casale, QUESTA 2026 (station 1 LCFS, station 2 LCFS-PR). More...
#include <cstddef>#include <vector>#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"#include "line/util/population.h"Go to the source code of this file.
Classes | |
| struct | line::pfqn::LcfsMvaResult< T > |
Namespaces | |
| namespace | line |
| namespace | line::pfqn |
Functions | |
| template<class T> | |
| LcfsMvaResult< T > | line::pfqn::pfqn_lcfsqn_mva (const std::vector< T > &alpha, const std::vector< T > &beta, const std::vector< int > &N) |
| Exact mean value analysis of the two-station multiclass LCFS network of Casale, QUESTA 2026 (station 1 LCFS, station 2 LCFS-PR). | |
Exact mean value analysis of the two-station multiclass LCFS network of Casale, QUESTA 2026 (station 1 LCFS, station 2 LCFS-PR).
Templated port of matlab/src/api/pfqn/pfqn_lcfsqn_mva.m.
The recursion over the population lattice carries, besides the queue lengths Q and the throughputs T, the BACK PROBABILITIES B(s,r) that a class-r job sits at the back of the queue at station s. Writing |n| for the total population, n_k for the class-k population and A = prod_r alpha_r^{n_r},
Wnp = A [ 1 + Q_{n-e_k}(1,k)
with everything zero at n = 0. The reference special-cases |n| = 1; it is not necessary, since the general step reduces to it (the r != k sum is empty and every n - e_k term is zero), and the port therefore uses one uniform recursion.
Arithmetic: EXACT-CAPABLE. The reference is written entirely in a scaled-log representation – B is stored as a mantissa plus a log scale, and every sum goes through a log-sum-exp helper – and its own comments state that this is a range device and "mathematically EXACT, no approximations are made". That representation is dropped here: the recursion is evaluated directly in T, which needs no scaling in an exact field and none in the high-precision floats either.
ONE SEMANTIC CONSEQUENCE of dropping it. The log-sum-exp helper cannot represent a negative term, so the reference silently skips the throughput contribution whenever (1 - sum_r alpha_r T_{n-e_k}(r)) is negative, and skips any term whose factors are not strictly positive. Those guards are artifacts of the representation, not of the model: the bracket is a probability complement and is nonnegative on a consistent state. This port includes every term unconditionally, which is what the recursion says.
Definition in file pfqn_lcfsqn_mva.h.