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

Exact solve of a single-class closed exponential queueing network whose CTMC state space (reachable occupancy vectors) is stored in a Multi-valued Decision Diagram instead of an explicit state list. More...

#include <chrono>
#include <cmath>
#include <cstddef>
#include <vector>
#include "line/api/mc/ctmc_solve.h"
#include "line/api/mdd/mdd.h"
#include "line/api/mdd/mdd_reachset.h"
#include "line/api/mdd/mdd_types.h"
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
Include dependency graph for mdd_closedqn.h:

Go to the source code of this file.

Classes

struct  line::mdd::MddClosedQnResult< T >
 Result of the MDD-stored exact closed-network solve. More...

Namespaces

namespace  line
namespace  line::mdd

Functions

template<class T>
MddClosedQnResult< T > line::mdd::mdd_closedqn (const std::vector< T > &mu, const Matrix< T > &P, const std::vector< double > &servers, int N, const MDD *reuse=nullptr)
 Exact solve of a single-class closed exponential queueing network whose CTMC state space (reachable occupancy vectors) is stored in a Multi-valued Decision Diagram instead of an explicit state list.

Detailed Description

Exact solve of a single-class closed exponential queueing network whose CTMC state space (reachable occupancy vectors) is stored in a Multi-valued Decision Diagram instead of an explicit state list.

Port of matlab/src/api/mdd/mdd_closedqn.m, jline.api.mdd.Mdd_closedqn and python/line_solver/api/mdd/closedqn.py. The reachable set is generated with mdd_reachset and the generator matrix is assembled using the MDD's O(K) state indexing (MDD::index), so no explicit (|S| x width) state matrix is ever materialised during assembly – the diagram is the store. For single-class exponential stations the aggregated (occupancy) chain is exact: the rate from n to n-e_i+e_j is mu_i * min(n_i, c_i) * P(i,j) for n_i > 0, matching SolverCTMC on the same model, which makes this the live exact oracle the mdd_mcd aggregation is validated against.

The reference's 'verbose' knob is NOT carried (this api layer is silent, as MddMcdOptions documents); stats returns the same storage numbers. The reference's 'ctmcmethod' knob is NOT carried either: the C++ ctmc_solve has a single direct backend.

Definition in file mdd_closedqn.h.