Groups

AFECS supports two types of agent groupings: physical and logical. Physical groupings of agents is called container, that provides complete run-time environment for agents life cycles and operations. Effectively single java virtual machine (JVM) is the AFECS agent container, where agents (java threads) concurrently execute their services. 

Above is the cartoon of the AFECS container running normative (N), supervisor (S) and representative agent (A).

Logical grouping of the AFECS agents is called domain. Logical group implementation brings number of advantages. First of all it reduces complexity a large control system. It also encourages modularity and encapsulation, by simple allowing limited number of agents and their behaviors be visible outside of the domain limits. Domain implementation also promotes control system hierarchical structure. Sub-control systems of the control hierarchy can be redesigned and tested, without affecting the rest of the control system, as long as the behaviors of the visible agents of the domain remains the same.

Below is an example of a domain.

Agents can be distributed among the containers or domains at the control system configuration time, as well as at run-time. Diagram below illustrates double domain control system, distributed over the three containers.