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

Per-class throughput table of an isolated subnetwork, tabulated over the population lattice, for use as the load-dependent rates of a flow-equivalent server (Chandy, Herzog and Woo 1975). More...

#include <cstddef>
#include <vector>
#include "line/api/fes/ljd_linearize.h"
#include "line/api/pfqn/pfqn_mva.h"
#include "line/api/pfqn/pfqn_mvams.h"
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
#include "line/util/population.h"
Include dependency graph for fes_compute_throughputs.h:

Go to the source code of this file.

Namespaces

namespace  line
namespace  line::fes

Functions

template<class T>
std::vector< std::vector< T > > line::fes::fes_compute_throughputs (const Matrix< T > &L, const std::vector< int > &mi, const std::vector< bool > &isDelay, const std::vector< int > &cutoffs)
 Per-class throughput table of an isolated subnetwork, tabulated over the population lattice, for use as the load-dependent rates of a flow-equivalent server (Chandy, Herzog and Woo 1975).

Detailed Description

Per-class throughput table of an isolated subnetwork, tabulated over the population lattice, for use as the load-dependent rates of a flow-equivalent server (Chandy, Herzog and Woo 1975).

Templated port of matlab/src/api/fes/fes_compute_throughputs.m. Every population state 0 <= n <= cutoffs is solved with pfqn_mva on the isolated subnetwork; scalingTable[r][idx-1] holds X_r(n) at the LJD_LINEARIZE index idx of n. States with n_r = 0 store 0 for class r, and the empty state stores 0 for every class.

Arithmetic. pfqn_mva stays in the field of the inputs, and this function only enumerates and stores, so the table is exact at T = Rational.

Deviation from MATLAB, mechanical: MATLAB walks the lattice with a BFS over a cell-array queue guarded by a visited mask, which reaches every state exactly once; the port enumerates the same lattice directly with next_pop. The states, and hence the table, are identical; only the visit order differs, and each state is solved independently of the others. The MATLAB try/catch that stores zeros when the solver fails is mirrored by catching line::Error.

Definition in file fes_compute_throughputs.h.