![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
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"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. | |
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:
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.