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.
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
>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).
>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?