![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Exact mean-value analysis for networks with order-independent stations. More...
#include <cmath>#include <functional>#include <vector>#include "line/api/pfqn/pfqn_mvaoi.h"#include "line/lang/qn/network_struct.h"#include "line/solvers/mva/mva_types.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::mva |
Functions | |
| template<class T> | |
| std::vector< std::size_t > | line::mva::find_oi_stations (const qn::NetworkStruct< T > &L) |
| The OI stations of a model, 1-based station indices. | |
| template<class T> | |
| bool | line::mva::nc_is_oi_model (const qn::NetworkStruct< T > &L) |
| Port of nc_is_oi_model: whether the model as a WHOLE is order-independent, which is a strictly stronger condition than having an OI station. | |
| template<class T> | |
| MvaSolution< T > | line::mva::solver_mva_oi_analyzer (const qn::NetworkStruct< T > &L, const MvaOptions &opt) |
| Port of solver_mva_oi_analyzer.m. | |
Exact mean-value analysis for networks with order-independent stations.
Templated port of matlab/src/solvers/MVA/solver_mva_oi_analyzer.m.
An ORDER-INDEPENDENT (OI) station is a class-dependent load-dependent server whose total service rate mu(n) is a permutation-invariant function of the per-class count vector. A closed network of delay stations, load-independent single-server queues and ANY number of OI stations is product-form, and pfqn_mvaoi – the Conditional MVA that carries one rate-shift vector per OI station – solves it exactly, with no normalizing constant and no joint marginal.
References: Reiser and Lavenberg, JACM 27(2), 1980; the load-dependent extension of Bruell, Balbo and Afshari, 1984; OI stations and CMVA in Casale 2009 and Casale, Comte and Dorsman 2026.
A MULTISERVER BCMP QUEUE IS PROMOTED TO AN OI STATION rather than approximated. pfqn_mvaoi models a load-independent queue as a SINGLE server, so a c-server station cannot take that path; but its BCMP weight satisfies the OI balance recursion exactly for the permutation-invariant rate
mu(n) = (min(|n|, c) / |n|) * sum_{r : n_r > 0} n_r / D_r,
so it goes down the OI path instead and the answer stays exact. Reporting still classifies it as a queue, so its utilization keeps the per-server offered-load convention.
DETECTION mirrors nc_is_oi_model: PAS or OI scheduling, a service-rate function, and an ALL-ZERO swap graph. A nonzero swap graph is a genuine pass-and-swap station, which is not order-independent and is not product form, so it is excluded from the list – and if that leaves no OI station at all, the analyzer refuses rather than solving a different model.
Arithmetic: whatever pfqn_mvaoi accepts; the analyzer itself is field arithmetic.
Definition in file solver_mva_oi.h.