It seems like using elements() to bag agents and then step them in a for loop is a recipe for artifacts: agents in the top left corner always act before agents in the bottom right. I usually do what Russell does, keeping a reference to agents in a separate collection and stepping that, but I prefer an ArrayList to aBag; partially because of generics but mostly because I can call Collections.shuffle(agentList,random) and randomize their order before stepping them. The only caveat is that MersenneTwisterFast is not a kosher Random object so you can’t pass it directly, but you can just pass a seed from the MASON randomizer to a standard Java one (or extend the MASON one so that it fulfills Randominterface). As far as I could tell, shuffling and stepping is a bit faster than schedule all your agents separately and letting the scheduler randomize for you. But that might have been a fluke and I never tested this carefully enough. On Sun, Oct 25, 2015 at 4:13 AM Russell Thomas < [log in to unmask]> wrote: > I have accomplished this by having an łagents" Bag variable in the main > class (SimState), and then every time I create a new object, I add it to > the łagents" bag. Then I iterate over all agents simply by looping using > get() method. If your agents ever die, then you also need to remove them > from the łagents˛ bag. This, of course, requires passing the SimState > object to what ever object is iterating over all agents. But, in my case, > these objects involved UI, data collection, debug, and other > administrative functions, and not objects within the model Iąm simulating. > > With this method, you never need to be concerned with where they might > reside in any other data structure, including ObjectGrid or SparseGrid. > > Russ > > On 10/24/15, 9:56 PM, "MASON Multiagent Simulation Toolkit on behalf of > Sean Luke" <[log in to unmask] on behalf of > [log in to unmask]> wrote: > > >Iterating over all the objects in an ObjectGrid2D means iterating over > >every single > >cell in the array. If you don't have a lot of objects relative to the > >cells, this can > >be very slow, and it would make more sense to use a SparseGrid2D instead. > > > >You could use a double for-loop to go through all the objects. But > >elements() isn't too slow, and it's O(1). > > > >Sean > > > >On Oct 24, 2015, at 10:37 AM, Axel Kowald <[log in to unmask]> wrote: > > > >> Hello Together, > >> > >> I just wonder what the best way is to iterate over all the agent on my > >> ObjectGrid2D ? > >> Currently I'm extracting a Bag with all agents by using the elements() > >> method. It works, but I'm not sure how fast/slow it is. Would it be > >> worth to maintain my own Bag and do the bookkeeping by > >> inserting/removing agents when needed? > >> > >> thanx, > >> Axel >