LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
pfqn_mvajd.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2012-2026, QORE Lab, Imperial College London
3 * All rights reserved.
4 */
5#ifndef LINE_API_PFQN_MVAJD_H
6#define LINE_API_PFQN_MVAJD_H
7
8/**
9 * @file
10 * @ingroup api_pfqn
11 * Joint-dependent name of pfqn_mvaoi: the mean-value analysis of a closed
12 * network whose station rates read the whole per-class occupancy vector.
13 *
14 * The two names denote the SAME routine because the recursion evaluates the rate
15 * callable at a full occupancy vector, mu_i(s_i + e_r) with s_i the shift (the
16 * occupancy already committed at the bottom of station i), and never inspects
17 * the structure of mu_i. That is the "third form" of the Conditional MVA of
18 * Casale (QUESTA 2009), a rate depending on the full per-class occupancy vector,
19 * so any joint-dependent scaling eta_i(n) (sn.jdscaling) is admissible.
20 *
21 * Unlike the AMVA joint-dependence route, which evaluates eta at the MEAN
22 * arrival-instant vector 1 + E[Q] and therefore collapses a support indicator to
23 * 1, this routine evaluates the rate at exact integer occupancies and is exact
24 * for the balanced-fair station, at the cost of walking
25 * prod_r C(N_r+K+1,K+1) states with K joint-dependent stations.
26 */
27
28#include <functional>
29#include <vector>
30
32
33namespace line {
34namespace pfqn {
35
36/** @see pfqn_mvaoi */
37template <class T>
38MvaoiResult<T> pfqn_mvajd(const std::vector<T>& Z, const std::vector<int>& N,
39 const std::vector<std::function<T(const std::vector<int>&)>>& mu,
40 const Matrix<T>& Dli, const Matrix<T>& visits, bool want_soi) {
41 return pfqn_mvaoi(Z, N, mu, Dli, visits, want_soi);
42}
43
44/** @see pfqn_mvaoi */
45template <class T>
46MvaoiResult<T> pfqn_mvajd(const std::vector<T>& Z, const std::vector<int>& N,
47 const std::vector<std::function<T(const std::vector<int>&)>>& mu,
48 const Matrix<T>& Dli, const Matrix<T>& visits) {
49 return pfqn_mvaoi(Z, N, mu, Dli, visits);
50}
51
52/** @see pfqn_mvaoi */
53template <class T>
54MvaoiResult<T> pfqn_mvajd(const std::vector<T>& Z, const std::vector<int>& N,
55 const std::vector<std::function<T(const std::vector<int>&)>>& mu,
56 const Matrix<T>& Dli, bool want_soi) {
57 return pfqn_mvaoi(Z, N, mu, Dli, want_soi);
58}
59
60/** @see pfqn_mvaoi */
61template <class T>
62MvaoiResult<T> pfqn_mvajd(const std::vector<T>& Z, const std::vector<int>& N,
63 const std::vector<std::function<T(const std::vector<int>&)>>& mu,
64 const Matrix<T>& Dli) {
65 return pfqn_mvaoi(Z, N, mu, Dli);
66}
67
68} // namespace pfqn
69} // namespace line
70
71#endif // LINE_API_PFQN_MVAJD_H
MvaoiResult< T > pfqn_mvaoi(const std::vector< T > &Z, const std::vector< int > &N, const std::vector< std::function< T(const std::vector< int > &)> > &mu, const Matrix< T > &Dli, const Matrix< T > &visits, bool want_soi)
Mean-value analysis of a closed network with order-independent (OI) stations, the composition-depende...
Definition pfqn_mvaoi.h:122
MvaoiResult< T > pfqn_mvajd(const std::vector< T > &Z, const std::vector< int > &N, const std::vector< std::function< T(const std::vector< int > &)> > &mu, const Matrix< T > &Dli, const Matrix< T > &visits, bool want_soi)
Definition pfqn_mvajd.h:38
Mean-value analysis of a closed network with order-independent (OI) stations, the composition-depende...
Return value of pfqn_mvaoi, mirroring [X, Qoi, Qli, Qdelay, Soi].
Definition pfqn_mvaoi.h:82