![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Port of matlab/src/api/sn/sn_get_product_form_params.m: the CLASS-level product-form parameters. More...
#include <algorithm>#include <cmath>#include <cstddef>#include <vector>#include "line/lang/qn/network_struct.h"#include "line/num/number.h"#include "line/util/matrix.h"Go to the source code of this file.
Classes | |
| struct | line::nc::PfParams< T > |
| The [lambda,D,N,Z,mu,S,V] of the reference. More... | |
Namespaces | |
| namespace | line |
| namespace | line::nc |
Functions | |
| template<class T> | |
| PfParams< T > | line::nc::sn_get_product_form_params (const qn::NetworkStruct< T > &sn) |
| Port of sn_get_product_form_params. | |
Port of matlab/src/api/sn/sn_get_product_form_params.m: the CLASS-level product-form parameters.
This is the sibling of sn_get_product_form_chain_params in solvers/mva/sn_chain.h, and the difference is the whole point of having both. The chain version aggregates classes into chains and is what the mean-value solvers want; this one keeps the classes apart, which is what the SOJOURN-TIME distribution needs – pfqn_stdf conditions on a tagged job of a named class, and a chain-aggregated demand has no such job in it.
The demand is normalized by the visits of the chain's REFERENCE CLASS at the reference station when the chain has one, and left unnormalized when it does not, exactly as the reference does. That divisor is what makes D a demand per system completion rather than per visit.
mu is wider than the population on purpose: the reference sizes it ceil(sum N) + max(S) because pfqn_mvaldmx indexes past |N| by the server count. Narrowing it to |N| is a silent out-of-range read there.
Definition in file sn_pf_params.h.