Software Agent Cardinality: Individual, Ensemble, Armada, Swarm, Storm
Although software agents can sometimes be quite effective all by themselves, the real promise of agents is when they work together to achieve a larger goal than any of them can achieve by itself. This essay enumerates various categories for classifying the cardinality of groups of interacting software agents. The forms and cardinality of agent groupings have significant ramifications for the forms of logistical support that the agent infrastructure must provide.
- Individual — A single agent capable of initiating and completing a single task or achieving a single goal.
- Ensemble — A relatively small group of agents that closely interact and work in concert to achieve a larger goal, each agent performing a subset of the discrete tasks or sub-goals needed to accomplish that larger goal. An ensemble could be as small as two agents, but is unlikely to be more than a handful or a couple of handfuls. There is no technical reason the group can not be in the dozens other than the difficulty of managing tasks and goals for a closely-knit team of agents at that level. There needs to be clear assignment of responsibilities among the agents of the ensemble. There may or may not be a leader, with the preference for cooperative, collaborative work rather than a strict hierarchy, but a strict, military-style hierarchy is not out of the question, depending on the application. The actual size of the group may vary, growing and shrinking as progress is made on tasks and stages of the final goal.
- Armada — A relative large group of agents that interact relatively loosely, generally made up of any number of smaller ensembles of agents, such that the armada of agents collectively accomplishes some grand goal such as a large campaign (military metaphor), with individual ensembles pursuing designated subsets of the campaign. An armada likely needs some sort of leadership, not so much a single admiral agent, but likely with a more distributed leadership ensemble that closely coordinates and sets sub-goals and communicates them to worker ensembles. Some relatively strict but still somewhat loose military-style chain of command between and within the ensembles is likely needed to orchestrate a full campaign. The overall size of the armada may vary over time, with some ensembles being created and eliminated as progress is achieved and as fresh challenges arise.
- Swarm — A large number of uncoordinated agents, each pursuing similar but otherwise independent goals. They may collaborate or communicate on an ad hoc basis, but not with any great long-term consistency since they each pursue their own goals, even at the expense of the others.
- Storm — A very large number of uncoordinated agents, each pursuing their own goals which may or may not overlap. Communication and collaboration is unlikely except to engage in deception in furtherance of their individual goals at the expense of each other.
- Other — custom combinations of these categories are possible, such as a swarm or storm of ensembles, or even a swarm or storm of armadas. Very large trees or graphs of combinations are possible.
- Program — Any number of agents and agent groupings could be organized such they act much the same way as a traditional computer program, with each agent or agent grouping being equivalent to an operation, function call, statement, code block, class, object, module, or process. An agent program may run on a single machine, but could just as easily be distributed to run on any number of machines since agents do not care about or depend upon hardware boundaries.
- Process — An extension of the agent program metaphor, primarily to provide a boundary for the grouping and to enable communications between independent agent processes.
- Distributed System — Extending the agent program and agent process metaphors to construct small or large networks of interacting agent programs or processes. An agent process or ensemble of agent processes could act as if they were a node on a network, and an ensemble of such ensembles could act as a cluster of nodes on a network. A swarm or storm of agents or agent ensembles or agent armadas or agent programs or agent processes could act as if it were a cloud on a network. This is independent of hardware boundaries — an agent distributed system might in fact run on a single machine or be spread over dozens, hundreds, or even many thousands of machines.
- Universe — the total set of agents and their groupings that are active in a particular environment. Granted, there could be any number of discrete network environments. Even if agents are running on the public Internet, there could be virtual networks such that agents running in separate virtual networks will be completely unaware of each other, each in a separate universe. Of course there could be specialized agents which are capable of communicating across and collaborating between universes.
Multi-agent systems? That’s a rather outdated traditional model of organizing interacting agents. A more modern model is being envisioned here. The MAS metaphor is simply recognizing that agents can communicate, coordinate, and collaborate with each other.