LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
sn_pf_params.h File Reference

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"
Include dependency graph for sn_pf_params.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.

Detailed Description

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.