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

Two-level multigrid aggregation-disaggregation for a nearly completely decomposable CTMC. More...

#include <cstddef>
#include <vector>
#include "line/api/mc/ctmc_courtois.h"
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
Include dependency graph for ctmc_multi.h:

Go to the source code of this file.

Classes

struct  line::mc::MultiResult< T >

Namespaces

namespace  line
namespace  line::mc

Functions

template<class T>
MultiResult< T > line::mc::ctmc_multi (const Matrix< T > &Q, const std::vector< std::vector< std::size_t > > &MS, const std::vector< std::vector< std::size_t > > &MSS, const T &q)
 Two-level multigrid aggregation-disaggregation for a nearly completely decomposable CTMC.
template<class T>
MultiResult< T > line::mc::ctmc_multi (const Matrix< T > &Q, const std::vector< std::vector< std::size_t > > &MS, const std::vector< std::vector< std::size_t > > &MSS)
 Overload deriving the rate as MATLAB does, q = (21/20) max|Qperm|.

Detailed Description

Two-level multigrid aggregation-disaggregation for a nearly completely decomposable CTMC.

Templated port of matlab/src/api/mc/ctmc_multi.m and jar/src/main/java/jline/api/mc/Ctmc_multi.java. The construction is exactly Courtois's: permute into macro-state order, decouple, solve each diagonal block for its conditional distribution, and assemble the macro-state chain G. The one difference, and the whole point of the method, is that G is not solved directly but decomposed AGAIN, by a second Courtois step over the macro-macro-states MSS, so the coarse problem is itself solved by aggregation. This is the one-step, two-level instance of multigrid; a full multi-level implementation is repeated coarsening with the same base method.

The fine level is shared verbatim with ctmc_courtois rather than duplicated, so the two cannot drift apart.

GATED ON TRANSCENDENTAL ARITHMETIC: both levels are Courtois steps, and epsMAX is an eigenvalue modulus.

Definition in file ctmc_multi.h.