Print

Print


On Oct 8, 2006, at 9:50 PM, Maciej M Latek wrote:

> I need to solve a problem concerning stopping and restarting a  
> simulation. My bless point is to have a function on a schedule,  
> which in each step checks a condition for ending a given run, if  
> false does nothing,  if true does some reporting, resets simulation  
> parameters to some new values and restarts the simulation.
>
> Now, the condition checking, reporting and resetting values works  
> fine, unfortunately I'm not able to get simulation started once  
> again after finishing the first run (I'm using the start() SimState  
> method).

If you're using the command line, it's fairly straightforward: write  
your on top-level MASON loop.
A basic loop is really pretty simple; I think we cover it in one of  
the tutorials.  All you have to do
is write a version of it that repeats, something like:

1. Make a SimState
2. loop as long as you want
3.     set up your parameters, reset your SimState variables as you  
see fit
4.     start()
5.     loop while schedule.step() is true
6.     finish()

If you need to do this with a GUI, then I have to think about how  
best to hack MASON to do this.  Probably the right thing is to hack  
the Console a little, along the lines of how the Console can restart  
with a new seed upon pressing stop.

One gotcha lies in movies and time series -- they won't update unless  
the timestamp is smaller than they've seen before (of course).  Since  
you're restarting, the timestamp is now small again.  You'll need to  
reset them as well, or else do a little hacking there too.

Sean