I am happy to announce a new version of the package PiecewiseDeterministicMarkovProcesses.jl to simulate ODE with stochastic jumps.
A lot of effort has been put to remove unncessary allocations, to make it fast and precise (in term of sampling of the process). It builds upon the fantastic
In this version, the following has been done
- a new interface closer to the organisation
PDMPProblemis defined and one simulates the process with
solve(prob, algo). This new interface still remains efficient by avoiding unnecessary allocations. Hence, when simulating a process without saving the result except the last jump, the allocation is independent of the requested jump number.
- a wrapper (still WIP) to
DiffEqJump.jlso that user can tap in our algorithms for the simulation of their jump processes
- the package is heavily tested against analytical solutions to test the precision of the algo and the absence of bug (if only…), to track allocations… in a variety of configurations.
For one of the algorithms (e.g. the
CHV), autodiff does not work as mentioned in this discourse post but the algorithm is functional otherwise.
- Compared to
DiffEqJump.jl, this is a bit of a niche because we don’t consider SDE + jumps and this justifies the need for a specific package (at least for now).
- I found it non trivial to design a structure to wrap a closure in an iterator which does not allocate. I did it by trial and errors while checking the allocations.