![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Port of solver_nc_mem.m and solver_nc_mem_supports.m: the Maximum Entropy Method of Kouvatsos (1994). More...
#include <algorithm>#include <cmath>#include <cstddef>#include <string>#include <vector>#include "line/api/sn/sn_get_buffer_size.h"#include "line/api/me/me_cqn.h"#include "line/api/me/me_mqn.h"#include "line/api/me/me_oqn.h"#include "line/api/me/me_oqn_blk.h"#include "line/lang/qn/network_struct.h"#include "line/solvers/mva/mva_types.h"#include "line/solvers/nc/solver_nc.h"#include "line/solvers/nc/nc_types.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Classes | |
| struct | line::nc::MemSupport |
| The verdict of solver_nc_mem_supports. More... | |
Namespaces | |
| namespace | line |
| namespace | line::nc |
Functions | |
| template<class T> | |
| MemSupport | line::nc::solver_nc_mem_supports (const qn::NetworkStruct< T > &sn) |
| Port of solver_nc_mem_supports.m. | |
| template<class T> | |
| NcSolution< T > | line::nc::solver_nc_mem (const qn::NetworkStruct< T > &sn, const NcSolverOptions &opt) |
| Port of solver_nc_mem.m. | |
Port of solver_nc_mem.m and solver_nc_mem_supports.m: the Maximum Entropy Method of Kouvatsos (1994).
WHY MEM IS IN A NORMALIZING-CONSTANT SOLVER AT ALL. It is not a normalizing-constant algorithm and shares no code with one. It is here because it answers the question the product-form path cannot: a network whose arrival or service processes are NOT exponential. The product-form analyzer silently exponentializes such a model – it reads only the mean rate – while MEM carries the second moment through GE (generalised exponential) building blocks and reports what the variability does.
THIS FILE IS A DISPATCHER, NOT AN ALGORITHM. The four algorithms live in api/me/, and three of them were already ported:
open Section 3.2, GE/GE/1, GE/GE/c and GE/GE/inf blocks -> me_oqn closed Section 3.3, two-stage pseudo-open plus convolution -> me_cqn mixed the two composed by product-form-style conditioning -> me_mqn blocking Section 4.1, censored GE/GE/c/0;N blocks -> me_oqn_blk
All four are now ported. The blocking one additionally covers TRANSFER BLOCKING (BAS) through the holding-node expansion of Tahilramani, Manjunath and Bose (1999); see api/me/me_oqn_blk.h for why that expansion is needed at all.
THE GATE IS PART OF THE METHOD. solver_nc_mem_supports is not a convenience: MEM's building blocks are defined for particular network shapes, and a model outside them has no MEM answer at all. The reference returns a REASON naming the first violated rule, and that reason is carried into the exception here so a refusal says which rule and which station.
ARITHMETIC. The GE blocks are transcendental throughout; a non-transcendental backend is refused by name.
Definition in file solver_nc_mem.h.