Print

Print


I forgot to add this:

You're going to need to perform the split outside of a step() method,  
because there may be several things on the stack ready to go, and  
stacks won't serialize or clone of course.  Instead, the split will  
have to happen in the outer loop which pulses the schedule itself.   
This may put a bit of a kink in your style in terms of building your  
model -- and you'll have to handle the split-test code manually.

Assuming you could reset your simulation state, another possible  
approach would be to create subschedules.  The idea would be this.   
An agent, during its step() method, decides the simulation needs to  
be split for a while.  The agent copies away the current simulation  
state, or whatever is necessary, storing the copy as a local  
variable.  Then it creates a MASON schedule (we'd have to make sure  
everything works nicely there but it should), loads it with agents,  
and runs it.  Then it destroys the schedule , copies back from the  
local variable, creates another MASON schedule, loads it with agents,  
and runs *it*, and so on.  When done branching, we copy back from the  
local variable and return from the step() method maybe.

Sean