Package jline.api.spn

Class Spn_metrics

java.lang.Object
jline.api.spn.Spn_metrics

public class Spn_metrics extends Object
Stationary measures of a product-form stochastic Petri net from the MDD-rec masses.

S. Balsamo, A. Marin, I. Stojic, FGCS 111 (2020) 475-490, Sec. 3.1 for the definitions and Sec. 5.3 for the recursions they are read off.

   n(P_j) = sum_k k P(m_j = k)                    mean tokens
   u(P_j) = 1 - P(m_j = 0)                        place utilization
   u(T_j) = P(e_j >= 1)                           transition utilization
   x(T_j) = sum_k min(k, c_j) W(T_j) P(e_j = k)   throughput
   x(P_j) = sum_T I_j(T) x(T)                     tokens removed per unit time
 

ONE DEVIATION FROM THE PAPER'S x(T_j), AND IT IS A GENERALISATION. The paper writes x(T_j) = sum_k k W(T_j) P(e_j = k), which is INFINITE-SERVER firing semantics -- every enabling set fires in parallel. LINE's own rate law is min(enabling degree, nmodeservers) * W(T), so c_j above is the mode's server count: c_j = 1 recovers single-server semantics, x = W(T) P(e >= 1), and c_j = infinity recovers the paper's formula exactly. Using the paper's form for a single-server mode would report a throughput that grows with the token population of a net whose transition can only fire one set at a time.

The measures come out of ONE reachable set and ONE set of g_l, so they are mutually consistent by construction: no per-measure fixed point, no iteration.

MATLAB twin: spn_metrics.m. Python twin: api/spn/metrics.py.

  • Method Details

    • spn_metrics

      public static Spn_metrics.SpnMetricsResult spn_metrics(MddStruct mdds, double[][] g, Spn_mdd.SpnInfo info)
      Every measure of Sec. 3.1 from one diagram and one product form.
      Parameters:
      mdds - the reachable set built by Spn_mdd
      g - per-level product-form factors g_l(v)
      info - the metadata Spn_mdd returned alongside the diagram
      Returns:
      the stationary measures