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

The QRF no-blocking nonlinear bounds: qrf_noblo_mmi, qrf_noblo_mem and the load-dependent qrf_noblo_mmi_ld. More...

#include <algorithm>
#include <cstddef>
#include <string>
#include <vector>
#include "line/api/mapqn/mapqn_qrf_common.h"
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
Include dependency graph for mapqn_qrf_noblo.h:

Go to the source code of this file.

Classes

struct  line::mapqn::QrfRates< T >
 The transition rates the constraint inventory reads. More...
struct  line::mapqn::QrfConstraints< T >
 The two constraint blocks: g(x) <= 0 and h(x) = 0. More...

Namespaces

namespace  line
namespace  line::mapqn

Functions

template<class T>
QrfRates< T > line::mapqn::qrf_build_q (std::size_t M, const std::vector< int > &K, const Matrix< T > &mu, const Matrix< T > &v, const Matrix< T > &rt)
 build_q_from_mu_v_rt: the population-free rates.
template<class T>
QrfRates< T > line::mapqn::qrf_build_q_ld (std::size_t M, const std::vector< int > &K, const Matrix< T > &mu, const Matrix< T > &v, const Matrix< T > &rt, std::size_t N, const Matrix< T > &alpha)
 build_q_ld: the load-dependent rates.
template<class T>
void line::mapqn::qrf_extract_mu_v (const std::vector< std::pair< Matrix< T >, Matrix< T > > > &MAPs, std::size_t M, const std::vector< int > &K, Matrix< T > *mu, Matrix< T > *v)
 extract_mu_v_from_maps: the completion and background rates of each MAP.
template<class T>
QrfConstraints< T > line::mapqn::sub_qrfcon_noblo (const std::vector< T > &x, const QrfRates< T > &q, std::size_t M, std::size_t MR, const Matrix< int > &BB, const std::vector< int > &F, std::size_t N, const std::vector< int > &K)
 The full no-blocking constraint inventory, sub_qrfcon_noblo.
template<class T>
QrfMetrics< T > line::mapqn::qrf_noblo_mmi (std::size_t M, const std::vector< int > &K, std::size_t N, const Matrix< T > &mu, const Matrix< T > &v, const Matrix< T > &rt)
 qrf_noblo_mmi: the no-blocking bound under mutual-information minimization.
template<class T>
QrfMetrics< T > line::mapqn::qrf_noblo_bethe (std::size_t M, const std::vector< int > &K, std::size_t N, const Matrix< T > &mu, const Matrix< T > &v, const Matrix< T > &rt)
 qrf_noblo_bethe: the same polytope under the tree-reweighted free entropy.
template<class T>
QrfMetrics< T > line::mapqn::qrf_noblo_mem (const std::vector< std::pair< Matrix< T >, Matrix< T > > > &MAPs, std::size_t N, const Matrix< T > &rt)
 qrf_noblo_mem: the same polytope under maximum entropy.
template<class T>
QrfMetrics< T > line::mapqn::qrf_noblo_mmi_ld (std::size_t M, const std::vector< int > &K, std::size_t N, const Matrix< T > &mu, const Matrix< T > &v, const Matrix< T > &rt, const Matrix< T > &alpha)
 qrf_noblo_mmi_ld: MMI on the LOAD-DEPENDENT polytope.
template<class T>
QrfMetrics< T > line::mapqn::qrf_noblo_mmi_linear (const std::vector< std::pair< Matrix< T >, Matrix< T > > > &MAPs, std::size_t N, const Matrix< T > &rt, const Matrix< T > &alpha)
 qrf_noblo_mmi_linear: the load-dependent no-blocking bound, under MMI.

Detailed Description

The QRF no-blocking nonlinear bounds: qrf_noblo_mmi, qrf_noblo_mem and the load-dependent qrf_noblo_mmi_ld.

Port of python/line_solver/api/mapqn/qrf_noblo_{mmi,mem,mmi_ld}.py and the sub_qrfcon_noblo constraint inventory they share. api/mapqn has no MATLAB implementation, so Python and the JAR are the references.

THE ARITY OF q SELECTS THE MODEL, exactly as the AMPL skeletons do:

  • a 4D q[i][j][k][h] is the population-free form of qrboundsbas_skel.mod, used by MMI and MEM. THM1 is stated on the aggregated e[i,k], which is exact here because no alpha makes the rate population-dependent.
  • a 5D q[i][j][k][h][n] is the load-dependent form of qrboundsrsrd_skel.mod, whose fifth index is the population of the EMITTING station. THM1 is then stated per population against the station-i marginal.

THM30 AND THM3 ARE WHAT MAKE THE POLYTOPE DEPEND ON THE SERVICE RATES AT ALL. They are the marginal-balance families; without them an LP over the remaining constraints returns the vacuous [0,1] for every instance (the reference verified that against glpsol). Both are emitted in either form and differ only in the q lookup.

ARITHMETIC: transcendental, inherited from the objectives.

Definition in file mapqn_qrf_noblo.h.