August 2006


Options: Use Monospaced Font
Show HTML Part by Default
Show All Mail Headers

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

Print Reply
Michael Lees <[log in to unmask]>
Reply To:
MASON Multiagent Simulation Toolkit <[log in to unmask]>
Thu, 31 Aug 2006 15:38:07 +0100
text/plain (62 lines)
Hi Sean, and all.

Thanks for your responses.

I understand the value of randomising the schedule.
The reason I mention this is because SIM_AGENT which is another agent 
toolkit I've used did have this option and it was useful.

In some classes of schedule, particularly where the agents (steppables) 
don't interact(directly or through an environment), hence no artefacts, 
it might be preferable to execute deterministically.

eg., (it's a silly one but...)
If for example you implement your agent with a schedule and then 
schedule three event sense, think and act. You wouldn't want to 
randomize the schedule.

I'm not suggesting turning off randomize in all cases, it was just a 
suggestion that it might be good to have this as an option in the 
schedule class.

I think fixing the random seed is different. You will still get the 
randomization, but from run to run it will be the same. This is not what 
I was getting at really.
I think debugging was perhaps the wrong terminology, it's more that with 
non random schedules it's much easier to follow the program flow and 
understand behaviour.

Sean Luke wrote:

> We always randomize because that's all we've ever needed; and it's not 
> uncommon for other systems' schedules to do that too of course.  If you 
> want a straight ordering, just put everybody in a Sequence and schedule 
> the Sequence once on the Schedule.  Or assign everyone a different 
> ordering.
> However if you'd like to remove shuffling, just comment out this line in 
>                 // shuffle
>                 if (substeps.numObjs > 1) substeps.shuffle(state.random);

Yep, that's what I've done.
In fact what I've done is

if (substeps.numObjs > 1 && RANDOMIZE)  substeps.shuffle(state.random);

RANDOMIZE is a static boolean I've added to schedule.

ps. I have another question/suggestion about steps but I'll put that in 
another email.


This message has been checked for viruses but the contents of an attachment
may still contain software viruses, which could damage your computer system:
you are advised to perform your own checks. Email communications with the
University of Nottingham may be monitored as permitted by UK legislation.