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

The 'ispn' method of SolverMAM: steady state of a stochastic Petri net with exactly one unbounded place, solved as a quasi-birth-death process by the matrix-geometric method (Haverkort 1998, ch. More...

#include <algorithm>
#include <cmath>
#include <limits>
#include <map>
#include <string>
#include <vector>
#include "line/api/spn/spn_ispn.h"
#include "line/lang/distribution.h"
#include "line/lang/qn/network_struct.h"
#include "line/solvers/mam/mam_types.h"
#include "line/util/error.h"
Include dependency graph for solver_mam_ispn.h:

Go to the source code of this file.

Namespaces

namespace  line
 Conservation laws of a layered queueing network, enumerated from its structure.
namespace  line::mam

Functions

template<class T>
bool line::mam::ispn_has_place (const qn::NetworkStruct< T > &L)
 True when the model holds a Place node, i.e.
template<class T>
void line::mam::ispn_refuse_entry (const qn::NetworkStruct< T > &L, const std::string &entry)
 Refuses the SolverMAM entry point ENTRY on a stochastic Petri net model with LINE:unsupported:Place.
template<class T>
std::string line::mam::ispn_refusal (const qn::NetworkStruct< T > &L, const std::string &method)
 Why the iSPN route cannot take this model under METHOD, or "" when it can or when the model is not a net.
template<class T>
MamSolution< T > line::mam::solver_mam_ispn (const qn::NetworkStruct< T > &L, const MamOptions &opt)
 The analyzer.

Detailed Description

The 'ispn' method of SolverMAM: steady state of a stochastic Petri net with exactly one unbounded place, solved as a quasi-birth-death process by the matrix-geometric method (Haverkort 1998, ch.

17; spn_ispn).

Port of matlab/src/solvers/MAM/solver_mam_ispn.m (Java twin jline.solvers.mam.analyzers.Solver_mam_ispn, Python twin line_solver.api.solvers.mam.ispn).

The net is flattened to (place, class) levels, place-major as in spn_mdd, so level pp*R+k (0-based) is class k in place pp. An open class arriving from a Source to a Place becomes a timed transition with no input place, firing at the arrival rate times the routing probability; tokens a mode sends to a Sink are dropped. The unbounded level is MamOptions::ispn_place when set (a place name, or 'place.class' in a multiclass net), and otherwise the one level that no non-negative S-invariant covers.

The measures are those SolverCTMC reports for a Petri net: Q(ist,k) is the mean number of class-k tokens in the place, U = Q (a Place is an INF station), Tp(ist,k) the token rate out of the place (the sum over the modes of their firing rate times the class-k input multiplicity), R = Q/Tp by Little's law. The Source row carries the arrival rate.

spn_ispn works at double; another arithmetic is converted to double on the way in and back on the way out, since the matrix-geometric solve is a floating-point iteration (the R matrix has no closed form in general).

Copyright (c) 2012-2026, Imperial College London All rights reserved.

Definition in file solver_mam_ispn.h.