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

All minimal siphons of a stochastic Petri net and Commoner's condition (Murata 1989, sec. More...

#include <cstddef>
#include <vector>
#include "line/api/spn/spn_net.h"
Include dependency graph for spn_siphons.h:

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 >())

Detailed Description

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.