March 2011


Options: Use Proportional Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Sean Luke <[log in to unmask]>
Reply To:
MASON Multiagent Simulation Toolkit <[log in to unmask]>
Tue, 22 Mar 2011 08:15:41 -0400
text/plain (59 lines)
Hi Joerg, I've been making a lot of cleanups out on SVN as I go  
through all the code as I write each chapter of the manual and  
discover things in the code which are less than optimal.  I then  
deprecate or slightly tweak it.  It's a good exercise but it'll drive  
you nuts, sorry about that.  :-)  Wait till people complain about the  
revised charting code API.

So you've got the right idea.  SimState's constructor is really  
*really* simple:

	public SimState(long seed)
         	this.random = new MersenneTwisterFast(seed);
         	this.schedule = new Schedule();
         	this.seed = seed;  // for GUIs later on if they want to  

This means that all you have to do is call super(seed), then just set  
the schedule as you like, exactly like your example below.  I expect  
your code to be safe for the foreseeable future.

So I'm interested: what kind of code are you executing before and  
after each step?  Is there a reason why MASON's "ordering" facility  
wouldn't be sufficient?  Should we be thinking about adding a gizmo to  
the existing Schedule?


On Mar 22, 2011, at 2:32 AM, Joerg Hoehne wrote:

> Hi developers,
> in the current svn repository the SimState class was modified at  
> least the
> constructors. This class does now only provide one constructor  
> accepting a
> long a seed value for the random number generator.
> In older releases it was allowed to specify a scheduler what I did  
> in the past.
> I'm using a subclassed scheduler to execute some additional code  
> before and
> after each simulation step.
> Now I set the scheduler immediately after invoking super(seed) as  
> the code
> example shows below.
> 	private AbstractSimulation(IUserSimulation userSimulation) {
> 		super(1);
> 		this.schedule = new ScheduleExtended();
>                <and some more code>
> My question is: Is this a safe way to set up an own Schedule object  
> and will it
> be safe in the future?
> Jörg