![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Exact interval-valued MVA for single-class closed product-form networks. More...
#include <algorithm>#include <cstddef>#include <vector>#include "line/api/pfqn/pfqn_mva.h"#include "line/lang/lang_types.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Classes | |
| struct | line::pfqn::MvaIntervalResult< T > |
| Every output of pfqn_mva_interval, each a [lower, upper] pair. More... | |
Namespaces | |
| namespace | line |
| namespace | line::pfqn |
Functions | |
| template<class T> | |
| MvaIntervalResult< T > | line::pfqn::pfqn_mva_interval (const Matrix< T > &L, int nlo, int nup, const T &zlo, const T &zup) |
| Exact interval-valued MVA for single-class closed product-form networks. | |
Exact interval-valued MVA for single-class closed product-form networks.
Port of matlab/src/api/pfqn/pfqn_mva_interval.m, the algorithm of J. Luthi and G. Haring, "Mean value analysis for queueing network models with intervals as input parameters", Performance Evaluation 32(3):185-215, 1998.
WHY CORNERS AND NOT INTERVAL ARITHMETIC. Single-class MVA is monotone in every input – the throughput decreases in each demand and in the think time and increases in the population, a station's own queue length and residence time increase in its own demand and in the population and decrease in the other demands and in the think time, and the totals increase in every demand and in the population and decrease in the think time (their Theorems 2-5, Table 1). By their Theorem 1 the exact range of a function monotone in each argument is attained AT A CORNER of the input box, so every bound below is one ordinary MVA call at the corner the sign pattern selects: 2*(m+2) calls, m being the number of thick demand intervals. Running the recursion in interval arithmetic instead is valid but far wider, because every input recurs at each step – the dependency problem, 14x too wide on the paper's own example.
WHAT THE INTERVAL IS, AND WHAT IT IS NOT. It is the exact hull of MVA over the input box, conditional on the demands lying in that box; it says nothing about the accuracy of MVA itself. It must therefore NOT be composed with the brackets of SolverBA, which bracket the exact solution of a model whose demands are known. The two answer different questions and intersecting them would claim a guarantee neither provides.
Delay stations are folded into Z exactly as pfqn_mva folds them: a delay demand interval enters as a term of the think-time interval, and the hull of the sum is the sum of the hulls when the delays vary independently. Load-independent single-server queueing stations only, one class only; the monotonicity theorems cover no other case.
Definition in file pfqn_mva_interval.h.