Idea of time in Agents.jl modelling

  1. You need to determine whether the phenomena you are modeling is best described using discrete or continuous time. It also depends on your research question.

  2. If you decided on discrete time, then you need to determine which time step / time delta is the best to answer your research question.

  3. You can emulate multiple timeframes even with discerete time steps, i.e using if abmtime(model) % cycle_time == 0

  4. Special case: If you want to model Time Travel, then you need to add time dimension into your space. i.e. (x, y, t) for 2D, and (x, y, z, t) for 3D (doesn’t matter ContinuousSpace or GridSpace).

  5. Useful mental models

One mental model is a a regular OS like Windows or Linux vs special “tickless” Realtime OS (RTOS). In the former the scheduler switches between tasks every so and so milliseconds (called “tick”), which creates an illusion that all processes run concurrently, but in practice most of the time the system is idling between processes, and can miss important hardware or realtime events. In the latter, the RTOS “tickless” scheduler allocates time slices for each task, and have higher priority for important realtime or HW events, so they don’t need to wait for CPU.

Another mental model is Gradient Descent: if your step is too large - you may miss the maximum, if it’s too small - the search will take a long time.


1 Hour Here Is 7 Years on Earth - INTERSTELLAR scene

Time in Agent-based models

2 Likes