![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
All minimal siphons of a stochastic Petri net and Commoner's condition (Murata 1989, sec. More...
Go to the source code of this file.
Classes | |
| struct | line::spn::SpnSiphons |
Namespaces | |
| namespace | line |
| Conservation laws of a layered queueing network, enumerated from its structure. | |
| namespace | line::spn |
Functions | |
| template<class T> | |
| SpnSiphons | line::spn::spn_siphons (const qn::NetworkStruct< T > &sn, const std::vector< double > &init=std::vector< double >()) |
All minimal siphons of a stochastic Petri net and Commoner's condition (Murata 1989, sec.
VI-A; Silva, Teruel and Colom 1998). A siphon S is a level set with S contained in S: once S is empty it stays empty. The enumeration is the branch and bound of Cordone, Ferrarini and Piroddi (2005): a node (I, O) asks for a minimal siphon containing I and avoiding O, prunes with the largest siphon inside the complement of O (a fixpoint that drops every level fed by an event taking nothing from the set), and branches on the first level of that siphon outside I. A net can hold exponentially many minimal siphons, so time and output are exponential in the number of levels in the worst case; each node costs O(n^2 E).
S lists the siphons as 0/1 rows over the levels, sorted by size and then by their level indices. trapped(i) is true when the largest trap inside siphon i is marked at m0; commoner = all(trapped). The check is structural: inhibitor arcs, priorities and the timed/immediate split are ignored. MATLAB twin: matlab/src/api/spn/spn_siphons.m.
Definition in file spn_siphons.h.