Class PetriSystem
fluid_petri_theta, fluid_petri_rates and
fluid_petri_jacobian.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classThe enabling terms and their derivatives, for one iterate. -
Method Summary
Modifier and TypeMethodDescriptionstatic booleanWhether a mode is timed, spelled once.static Matrixjacobian(PetriTerms t, PetriSystem.Theta th) Drift Jacobian A = D * dR/dX.static double[]rates(PetriTerms t, double[] x, double[] phi, double[] mu, PetriSystem.Theta th) The rate of every event column.static PetriSystem.Thetatheta(PetriTerms t, double[] x, double[] s2) The closed enabling term of every mode, and its derivative.
-
Method Details
-
theta
The closed enabling term of every mode, and its derivative.theta_j = ( prod_b Phi((thr_b - m_b)/sd_b) ) * E[ min_a(m_a/w_a), c_j ]
Both factors collapse to their first-order form at zero variance -- Phi becomes the hard indicator and the min closure becomes min() -- so the mean-field limit is one code path, not two.
THE INHIBITOR GATE IS WHY A PETRI NET NEEDS A SMOOTHED CLOSURE AT ALL, quite apart from accuracy: the indicator is a step, and a Newton solver has no derivative to descend on a step.
THE VARIANCES ARE UNKNOWNS, NOT FUNCTIONS OF X: s2 is pinned by its own consistency row in the DAE, so the derivative is with respect to the MEANS only.
-
rates
public static double[] rates(PetriTerms t, double[] x, double[] phi, double[] mu, PetriSystem.Theta th) The rate of every event column.kind 1 firing of mode j single phase: rateBase*theta*dep multi phase: rateBase*y(j,h) kind 2 internal phase change rateBase*y(j,h) kind 3 exogenous arrival a constant kind 4 firing of an IMMEDIATE mode phi_j, an algebraic unknown kind 5 the server latch mu_j, a free-sign unknown -
jacobian
Drift Jacobian A = D * dR/dX.This is what the Lyapunov equation of the linear noise approximation is written about, so it has to be the derivative of the SAME rate vector
rates(jline.solvers.fluid.petri.PetriTerms, double[], double[], double[], jline.solvers.fluid.petri.PetriSystem.Theta)returns: a covariance solved about an inconsistent Jacobian is not the covariance of anything. THE VARIANCES ARE HELD. -
isTimed
Whether a mode is timed, spelled once.
-