Coordinating a group of agents by employing
honeybees’ foraging behaviour has been one of the
earliest attempts in SI (Gordon and Wagner, 2003).
Also Bayazit uses a multiple-query roadmap as a
means of indirect communication between agents
(Bayazit, 2004).
Moreover, the swarming behaviour probably
observed in flocks of birds, schools of fish and sheep
herds motivated Reynolds to introduce a bio-
inspired technique to steer a group of rule-based
autonomous agents, called Boids (Reynolds, 1999).
Researchers have also used grid-based
approaches to deal with the area coverage problem.
Hazon and Kaminka, for example, proposed a
mechanism by decomposing the environment into
same size cells. Considering the initial positions of
the robots, they found a spanning tree of the free
cells which could be decomposed to some balanced
sub-trees. Finally each sub-tree was assigned to a
robot (Hazon and Kaminka, 2008).
3.1 Area Coverage
The area coverage problem deals with the use of one
or more agents to sweep or visually sense the free
space of an area.
The agents rely on the WMA-RRT roadmap to
move through the free space of the environment, and
also use it as a means of indirect communication as
shown later. WMA-RRT is considered a weighted
tree and the weight of the edges of the roadmap is
initialized to 0 at the starting point of the algorithm.
As described before, the tree has branches equal to
the number of agents. During the covering operation,
at least one agent is assigned to each branch. The
weight of the edges is updated while traversing the
roadmap.
All the information that the agents need in order
to do their job well in the environment is available
through the roadmap’s nodes. Our agents here are
simple autonomous entities capable of following
some explicit condition-action rules. They are utility
based agents, that is, each of them will try to
maximize its own utility function, which is defined
as the average over the weight of all traversed edges.
At the beginning of the mission, each agent is
assigned to independently find a branch, and keep
operating until the branch is thoroughly traversed.
Our main data structure, used by the agents
during the covering process, is an array of n trees,
where n represents the number of branches (agents)
in the environment.
Graph Brach[i]; 0 ≤ i ≤ n-1
The Graph itself is a class using two other
classes: Node and Arc. The agents use these classes
to gather information such as the outgoing edges of a
node and their corresponding weight.
Two arrays, Sync and Weight are the other data
structures that are used in our algorithm. Sync is
used to keep the number of active agents in each
branch:
Sync[i]; 0 ≤ i ≤ n-1
In other words, Sync[k] shows the number of
agents that are currently using branch[k] as their
exploration roadmap. As we will see, there may be
situations that more than one agent use the same
branch. At the beginning, all members of Sync array
have value of zero. Entering a specific branch such
as Branch[j], each agent increases the related value
of sync which is sync[j] by one (and decreases the
same value by one when it exits that branch).
The last array is Weight which is used to hold the
weight of the first edge of each branch (the edge that
connects the Main Root to the Secondary Root). As
we will see, the agents use this as a way to rapidly
exchange some information.
Weight[i] ; 0 ≤ i ≤ n-1
Figure 2 depicts a scenario with four agents a
few seconds after their mission has just started. As
can be seen, the first-coming edges of each branch
(four edges here) connect the Main Root to the
Secondary Roots. As soon as choosing an edge to
traverse, each agent increases the weight of it. The
first edge each agent begins to traverse is the starting
(first-coming) edge of its corresponding branch. As
a result, by increasing the weight of that edge, the
value of the corresponding item in array Weight
will
increase too. Also as can be seen in this figure, the
value of all members of sync array is equal to one,
because each agent starts exploring its dedicated
branch and by increasing the default value of the
corresponding array member from 0 to 1, shows that
it is active on that branch. It also has been mentioned
that our agents are utility based and they will try to
minimize the average weight of visited edges.
Therefore, the outgoing edge with the minimum
weight is nominated at each node for exploration,
since the heavier edges have been already visited
more, the lighter ones are reasonably preferred to be
selected here.
One of our aims is to return our agents to the
location where they have started their mission by the
time they have finished traversing their
corresponding branches. By choosing the outgoing
edge with minimum weight at each step, the agents
actually use a Depth-first search (DFS) to traverse
ICAART2014-InternationalConferenceonAgentsandArtificialIntelligence
282