Although you can find a number of various definitions of Agent Based Modeling (ABM) in the literature, from the viewpoint of practical applications agent based modeling can be defined as essentially decentralized, individual-centric (as opposed to system level) approach to model design. When designing an agent based model the modeler identifies the active entities, the agents (which can be people, companies, projects, assets, vehicles, cities, animals, ships, products, etc.), defines their behavior (main drivers, reactions, memory, states, ...), puts them in a certain environment, maybe establishes connections, and runs the simulation. The global (system-level) behavior then emerges as a result of interactions of many individual behaviors. AnyLogic supports Agent Based modeling (as well as Discrete Event and System Dynamics Modeling) and allows you to efficiently combine it with other approaches.
Before deciding to use the agent based approach you should investigate the problem and verify whether traditional approaches can be used. For example, if the system you are modeling fits well with the process-centric (discrete event) paradigm (i.e. can be described as a sequence of operations on essentially passive entities) it may be beneficial to use AnyLogic Enterprise Library objects instead of specifying individual behaviors of those entities. Similarly, if the entities in your system have no individuality (no individual history, timing, etc.) it may be worth applying System Dynamics approach.
Applications of Agent Based Modeling
A good example application for ABM is consumer market. In the highly dynamic, competitive and complex market environments (telecom, insurance, leasing, health, etc) the consumer’s choice essentially depends on a number of individual characteristics, inherent dynamics of the consumer, network of contacts, external influences that may be best captured within the agent based modeling paradigm, especially taken the high availability of individual-centric data from the CRM (Customer Relationships Management) systems that can be directly used to parameterize the agents.
Another traditional example would be epidemiology. Here agents are people that can be susceptible, infectious, recovered, immune to the disease, etc. ABM allows to explicitly capture social networks, contacts between people, their heterogeneity, and therefore to obtain better forecasts of the disease spread.
You however should not think of ABM as of analysis method applicable only to large people communities. There are problems in manufacturing, logistics, supply chains, or business processes where ABM works better than anything else. For example, the behavior of a complex machine that has internal states, inherent timing, different reactions in different modes, etc. may be efficiently modeled by a separate object (agent) with a statechart inside that may be linked to the manufacturing process workflow. The supply chain participants (companies – producers, wholesalers, retailers) have their own goals and rules and can naturally be represented as agents. Agents can even be projects or products within one company have internal states and dynamics, compete for company resources.
AnyLogic support for Agent Based Modeling
Agent based models used in practice are very diverse, and it would be virtually impossible to develop a universal "Agent Based Library" and reduce the modeler's work to a number of drag-and-drop operations. There are however some reusable "design patterns" that simplify development of agent based models and are directly supported by AnyLogic. These patterns are in:
- Model architecture
- Agent synchronization ("steps")
- Space (continuous or discrete), mobility and spatial animation
- Agent connections (networks, e.g. social networks) and communication
- Dynamic creation and destruction of agents
From architectural viewpoint, a typical AnyLogic agent based model would have at least two active object classes: Main class for a top-level object where agents would be contained and a class for an agent, e.g. Person. The Person class in most cases would be declared as Agent - this is a special subclass of ActiveObject class that extends the latter with services useful for agent based modeling. A number of agents would be embedded into the Main object, e.g. as a replicated object people of type Person. One or more Environment constructs may be defined at the level of Main to specify properties shared by the agents. You are free however to define other hierarchies in your agent based model, for example you may have companies-agents that contain employees-agents and communicate with consumers-agents.
AnyLogic AB model applets online
Cardiovascular Disease
Spread of Influenza
Alcohol Use Dynamics
Dynamics of Contagion
HIV Diffusion and Syringe Usage
Ward Medication Management (combined SD + AB model)
Sales Funnel
Restaurant Business Dynamics
Candy Promotion
Patient Flow (AB version)
Competition in Paper Pulp Market
Bass Diffusion (AB version)
Population with Clustering Analysis
Social Response
Schelling Segregation
Urban Dynamics (AB version)
Supply Chain and Product Diffusion (combined SD + AB model)
Adaptive Supply Chain
Supply Chain Management
Simple Supply Chain
Air Defence System
Aircraft Fleet Planning
Harvest Simulator
Canal and Lock
Wandering Elephants
Predator Prey (AB version)
Cellular Phones
Leader Election
Rail Yard
Flocks of Boids
MMs System (compare AB and DE versions)
Billard Balls
Moore Shooters
Dining Philosophers