Question

I need to find an agent-based language or framework that allows the user to "rewind" the model, change some parameters and see how it develops with the new parameters. Basically - an ABM that allows its user to time-travel within the simulation and branch different timelines.

Does something like that exists?

Was it helpful?

Solution

I don't know if anything like what you have in mind exists out of the box, but you can usually achieve something very similar by using a fixed random seed (see, e.g., the section on random numbers in the NetLogo programming guide). A well designed ABM platform will always give you the same result every time if you use the same seed, unless you change something in your model: in your case, some parameters at some point.

OTHER TIPS

I think you need to do two things here

1) Develop a mechanism to save the state of your agents and model state at every model tick. This is known as freeze-drying data (at least it is known as this in Repast).

2) Keep each freeze-dried state in a binary-tree like structure. In this example, your root nodes become the "unaltered" timeline and any child nodes are each a possible alternative due to some altered parameter.

Even for simple models your storage requirements for holding many plausible futures becomes something that needs to be managed.

Also, how are you planning on displaying the model? The 2D rendering engine in Repast Simphony leaves something to be desired and having lots of Java Swing components pop all over your screen isn't likely to be effective. If you are willing to spend time building a custom View to render the simulations I would recommend looking at the work of Crooks especially of interest is his paper covering loosely coupled ABM's.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top