Learn R Programming

ABM R Package: Agent Based Model Simulation Framework

The ABM package provides a high-performance, flexible framework for agent-based modeling. It has an easy-to-use state transition mechanism, that makes it especially suitable for modeling agent based models. For example, an SEIR model can be implemented in 18 lines.

In addition, this framework is a general event-based framework. Yet this framework allows the state of an agent to be quite general, described by a R list taking arbitrary R values. The states are modified by events, which can be easily defined. Thus, it is suitable for a wide range of applications, such as implementing the Gillespie algorithm.

Installation

From CRAN

This R package is included in CRAN.

install.packages("ABM")

From GitHub

For the latest development version, use the devtoools::install_github method:

install_github("https://github.com/junlingm/ABM.git")

Concepts and Usage

See more information on the Wiki

Examples

  1. Simulate an SIR model using the Gillespie method
  2. Simulate an agent based SEIR model
  3. Simulate a multi-group SEIR model
  4. Simulate a contact network SIR model
  5. Simulate contact tracing on an SIR model
  6. Simulate a household SEIR model
  7. An SIR model with births and deaths

Acknowledgement

This package is supported by a Natural Sciences and Engineering Research Council of Canada (NSERC) Discovery grant, and two NSERC Emerging Infectious Disease Modeling grants (ONMI with Dr. Huaiping Zhu as PI, and MfPH with Dr. V. Kumar Murty and Dr. Jianhong Wu as PI).

Copy Link

Version

Install

install.packages('ABM')

Monthly Downloads

441

Version

0.4.3

License

GPL (>= 2)

Issues

Pull Requests

Stars

Forks

Maintainer

Junling Ma

Last Published

January 26th, 2025

Functions in ABM (0.4.3)

newAgent

Create an agent with a given state
getState

Get the state of the agent
getTime

returns the event time
schedule

Schedule (attach) an event to an agent
setDeathTime

set the time of death for an agent
getID

Get the ID of the agent.
newRandomMixing

Creates a RandomMixing object
newStateLogger

Create a logger of the StateLogger class
setState

Set the state of the agent
setStates

Set the state for each agent in a population
getSize

Get the size of a population
newCounter

Create a logger of the Counter class
newPopulation

Create a new population
newGammaWaitingTime

Creates an gamma distributed waiting time
newConfigurationModel

Creates a random network using the configuration model
unschedule

Unschedule (detach) an event from an agent
newEvent

Creates a new event in R
newExpWaitingTime

Creates an exponentially distributed waiting time
stateMatch

Check if two states match
getWaitingTime

Generate a waiting time from an WaitingTime object
leave

leave the population that the agent is in
getAgent

Get the agent at an index in the population
addAgent

add an agent to a population
Simulation

R6 class Create and represent a Simulation object
clearEvents

Unschedule all event from an agent
Contact

An R6 class that implements a contact pattern in R
Event

R6 class to create and represent an event
ABM-package

Agent Based Model Simulation Framework
Population

R6 class that represents a population
State

The state of an agent
Agent

R6 class that represent an agent
matchState

Check if the state of an agent matches a given state