Sharp-Bits¶
JAX Constraints¶
Esquilax makes use of many features of JAX, and hence also inherits many of its constraints, including:
Functional programming patterns and pure functions
Method of random number generation
JIT compilation, and compile time requirements
If you are unfamiliar with these aspects of JAX, the JAX docs have a very useful section on these aspects.
Unsupported Features¶
Continuous Time¶
Esquilax is intended for step-based simulations where the state of the simulation is updated at each step/fixed interval. As such it is not suitable for discrete event simulation where events are ordered and can occur at continuous time intervals.
Ordered Interactions¶
Esquilax is designed around agents that update in parallel, this especially allows models to be deployed on GPUs for large performance gains. It is possible to implement behaviours that depend on ordering (using JAX scans or loops) at the cost of performance at scale.