Print

Print


On Jul 31, 2015, at 5:33 PM, Stewart Aitken <[log in to unmask]> wrote:

> I need a method which allows me to check if the four cells are occupied and if so pause the run a bit like a checkpoint. 
> Then I would like to record in a file the number of cells occupied, [I have done this ] 
> clear the grid of these cells and then continue with a further run with a new start point 
> [ basically the last cell of the previous run ] repeating a few times.

(1) not sure why you need to pause the run.  But if you must absolutely keep the same run, you could insert in the schedule not agents but rather agents wrapped in TentativeSteps.  You also put the TentativeSteps in a bag.  Then in your agent's step method:

if (some important fact about my model is true)
    {
    Write out a bunch of stuff to a file
    Set the four grid cells to null
    Move my agent to a new start point and reset other variables
    call stop() on all the TentativeSteps and erase the Bag
    schedule.clear()
    create a new set of agents, in TentativeSteps, and schedule them in the schedule and put them in the Bag.
    }

(2) if you're trying to just do a reset to a new run, you could instead do this:

if (some important fact about my model is true)
    {
    Write out a bunch of stuff to a file
    call stop() on all the TentativeSteps and erase the Bag
    kill()
    }

Then you run MASON repeating.

(3) if you're just trying to manually pause the simulation, as if you pressed the pause button, you can do this by inserting code along these lines into your GUIState subclass's start() method:

scheduleRepeatingImmediatelyAfter(new Steppable()
  {
  public void step(SimState state)
    {
    if (some important fact about my model is true)
      {
      SwingUtilities.invokeLater(new Runnable() 
        {
        public void run() 
          { ((Console)controller).pressPause(); }});
      }
    }
 });     





> 
> I have a version where I checkpoint each run but you previously suggested that I should be able to run a few times and just checkpoint after say half of the runs.
> 
> I know that If I can identify the four occupied cells and can pause the schedule this will solve my immediate problem.
> 
> Clearing the cells and restarting are my second problem.
> 
> Is there a way I can do the first if not the second.
> 
> Kind regards,
> 
> Stewart Aitken
> 
> 
> 
> On 31 July 2015 at 15:36, Sean Luke <[log in to unmask]> wrote:
> Stewart, I am afraid to say that your description so far has not been specific enough to describe what the intended behavior is, nor what the incorrect behavior is; and the pictures and code you're provided indicate that your model is likely too complex for me to be of much use.  It is entirely possible that there's a bug in (say), MASON's neighborhood lookup functions.  But to help you any further, I'd need a functioning, stripped down and simplified example.
> 
> Other routes you could take:
> (1) print out what MASON is providing in its x and y bags for neighborhoods.  Does anything look amiss?
> (2) instead of using MASON's neighborhood lookup function, why not just compute the four locations yourself?  It'll be much faster.  And then you can compare it against what MASON is providing.
> 
> Sean
> 
> On Jul 31, 2015, at 4:30 PM, Stewart Aitken <[log in to unmask]> wrote:
> 
> > Yes still has the bug.
> > It may be that MASON can't do what I am trying to do with it.
> >
> > Kind regards,
> >
> > Stewart Aitken.
> >
> > On 31 July 2015 at 15:22, Sean Luke <[log in to unmask]> wrote:
> > By this you mean that it still has the error?
> >
> > On Jul 31, 2015, at 3:29 PM, Stewart Aitken <[log in to unmask]> wrote:
> >
> > > Thanks Sean,
> > >
> > > I have changed those two lines by removing the mySpace.tx and it works as before.
> >
> >
> >
> > --
> >
> >
> >
> > EMAIL DISCLAIMER http://www.york.ac.uk/docs/disclaimer/email.htm
> 
> 
> 
> -- 
> 
> 
> 
> EMAIL DISCLAIMER http://www.york.ac.uk/docs/disclaimer/email.htm