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

Performance Bound Hierarchy (Eager and Sevcik 1983, ACM TOCS 1(2):99-115) for single-class closed product-form networks, and the two iterative families that are defined in terms of it. More...

#include <algorithm>
#include <cstddef>
#include <vector>
#include "line/num/number.h"
#include "line/util/error.h"
Include dependency graph for pfqn_pbh.h:

Go to the source code of this file.

Classes

struct  line::pfqn::PbhBounds< T >
 Return value of pfqn_pbh, mirroring [Xlo, Xhi, Qlo, Qhi]. More...

Namespaces

namespace  line
namespace  line::pfqn

Functions

template<class T>
PbhBounds< T > line::pfqn::pfqn_pbh (const std::vector< T > &L, int N, const T &Z, int level)
 Performance Bound Hierarchy (Eager and Sevcik 1983, ACM TOCS 1(2):99-115) for single-class closed product-form networks, and the two iterative families that are defined in terms of it.
template<class T>
PbhBounds< T > line::pfqn::pfqn_pbh (const std::vector< T > &L, int N, const T &Z)
template<class T>
PbhBounds< T > line::pfqn::pfqn_pbk (const std::vector< T > &L, int N, const T &Z, int k)
 PB(k), the iterative Eager-Sevcik proportional bound.
template<class T>
PbhBounds< T > line::pfqn::pfqn_pbk (const std::vector< T > &L, int N, const T &Z)
template<class T>
PbhBounds< T > line::pfqn::pfqn_bjbk (const std::vector< T > &L, int N, const T &Z, int k)
 BJB(k), the iterative Balanced Job Bound.
template<class T>
PbhBounds< T > line::pfqn::pfqn_bjbk (const std::vector< T > &L, int N, const T &Z)

Detailed Description

Performance Bound Hierarchy (Eager and Sevcik 1983, ACM TOCS 1(2):99-115) for single-class closed product-form networks, and the two iterative families that are defined in terms of it.

Templated port of matlab/src/api/pfqn/pfqn_pbh.m, pfqn_pbk.m and pfqn_bjbk.m. level MVA steps from an ABA-initialized residence give nested optimistic and pessimistic bounds that converge to exact MVA as level -> N.

MATLAB REDUNDANCY, reproduced rather than hidden: pfqn_pbk.m and pfqn_bjbk.m are both one-line forwarders to pfqn_pbh with the same arguments, so PB(k) and BJB(k) return identical numbers for every input. The two names are kept because the surrounding solver code refers to both, and collapsing them here would hide the fact in the port.

ARITHMETIC. The recursion is a finite sequence of field operations – no root, no logarithm anywhere – so these bounds are EXACT in rational arithmetic and are deliberately left ungated. That is worth having: a bound violated only by rounding cannot be told apart from a real violation.

Definition in file pfqn_pbh.h.