Overview
CompetingClocks.jl is a sampling engine, not a simulation framework. It answers: what fires next, when, and how likely is it? Plug it into any simulation—agent-based models, queueing systems, chemical kinetics—without adopting a DSL or state management layer.
Features
- Added 2 new samplers for a total of 11: Exact Rejection-based Stochastic Simulation Algorithm (RSSA), and Partial-Propensity SSA with Composition–Rejection (PSSA-CR).
- Calculates probability density of a next event or path-log-likelihood of a sequence of events for use with statistical tools like Gen.jl and Turing.jl. Can be used as a likelihood calculator without actually sampling.
- API includes delayed reactions with support for cancellation of delayed reactions.
- Importance sampling can use mixture proposals efficiently.
- Sampler now holds the current time and list of enabled events.
- Extensive statistical testing of every sampler.
- New interface to hierarchical samplers in order to optimize performance.
Migration Notes
- The v0.1.0 sampler interface remains supported.
- The new interface uses fire!() to mark event completion (which also disables the clock).