mirror of
https://github.com/JHUAPL/kami.git
synced 2026-01-11 07:47:57 -05:00
Compare commits
8 Commits
develop
...
feature/jo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
016841ab88 | ||
|
|
1c5ee2ae87 | ||
|
|
f8c0324672 | ||
|
|
0c321c5918 | ||
|
|
67715a00b4 | ||
|
|
dc167559e2 | ||
|
|
846eeb0146 | ||
|
|
ede2d067c8 |
25
.github/workflows/draft-pdf.yml
vendored
Normal file
25
.github/workflows/draft-pdf.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: Build Paper PDF
|
||||
|
||||
on: [ push ]
|
||||
|
||||
jobs:
|
||||
paper:
|
||||
runs-on: ubuntu-latest
|
||||
name: Paper Draft
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Build draft PDF
|
||||
uses: openjournals/openjournals-draft-action@master
|
||||
with:
|
||||
journal: joss
|
||||
# This should be the path to the paper within your repo.
|
||||
paper-path: paper/paper.md
|
||||
- name: Upload
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: paper
|
||||
# This is the output path where Pandoc will write the compiled
|
||||
# PDF. Note, this should be the same directory as the input
|
||||
# paper.md
|
||||
path: paper/paper.pdf
|
||||
12
paper/paper.bib
Normal file
12
paper/paper.bib
Normal file
@@ -0,0 +1,12 @@
|
||||
@InProceedings{python-mesa-2020,
|
||||
author = "Kazil, Jackie and Masad, David and Crooks, Andrew",
|
||||
editor = "Thomson, Robert and Bisgin, Halil and Dancy, Christopher and Hyder, Ayaz and Hussain, Muhammad",
|
||||
title = "Utilizing Python for Agent-Based Modeling: The Mesa Framework",
|
||||
booktitle = "Social, Cultural, and Behavioral Modeling",
|
||||
year = "2020",
|
||||
publisher = "Springer International Publishing",
|
||||
address = "Cham",
|
||||
pages = "308--317",
|
||||
abstract = "Mesa is an agent-based modeling framework written in Python. Originally started in 2013, it was created to be the go-to tool in for researchers wishing to build agent-based models with Python. Within this paper we present Mesa's design goals, along with its underlying architecture. This includes its core components: 1) the model (Model, Agent, Schedule, and Space), 2) analysis (Data Collector and Batch Runner) and the visualization (Visualization Server and Visualization Browser Page). We then discuss how agent-based models can be created in Mesa. This is followed by a discussion of applications and extensions by other researchers to demonstrate how Mesa design is decoupled and extensible and thus creating the opportunity for a larger decentralized ecosystem of packages that people can share and reuse for their own needs. Finally, the paper concludes with a summary and discussion of future development areas for Mesa.",
|
||||
isbn = "978-3-030-61255-9"
|
||||
}
|
||||
77
paper/paper.md
Normal file
77
paper/paper.md
Normal file
@@ -0,0 +1,77 @@
|
||||
---
|
||||
title: 'Kami is Agent-Based Modeling in Modern C++'
|
||||
tags:
|
||||
- C++
|
||||
- agent-based model
|
||||
- individual-based model
|
||||
- social science
|
||||
- simulation
|
||||
- complex systems theory
|
||||
- artificial life
|
||||
authors:
|
||||
- name: "James P. Howard II"
|
||||
orcid: 0000-0003-4530-1547
|
||||
affiliation: 1
|
||||
affiliations:
|
||||
- name: Johns Hopkins Applied Physics Laboratory, USA
|
||||
index: 1
|
||||
date: 23 January 2023
|
||||
bibliography: paper.bib
|
||||
---
|
||||
|
||||
# Summary
|
||||
|
||||
Agent-based models (ABMs) are a type of computational model used
|
||||
to simulate the behavior of autonomous agents within a system. These
|
||||
agents can be individuals, groups, organizations, or other entities
|
||||
that interact with one another and with their environment. One of
|
||||
the key features of ABMs is that they focus on the micro-level
|
||||
interactions between individual agents, rather than aggregating
|
||||
data to study macro-level phenomena. This allows for the examination
|
||||
of complex behaviors that emerge from the interactions between
|
||||
agents, such as the spread of a disease or the formation of social
|
||||
networks. ABMs are often used in fields such as economics, sociology,
|
||||
and biology to study the behavior of individuals and groups. They
|
||||
can also be used to simulate the effects of different policies or
|
||||
interventions on a system.
|
||||
|
||||
# Statement of need
|
||||
|
||||
There are many different agent-based modeling (ABM) platforms
|
||||
available for use in Java, Javascript, Python, and other programming
|
||||
languages. Many others are implemented in domain-specific languages
|
||||
that allow for the rapid development of complex models. However,
|
||||
running interpreted, these models are slower than that offered by
|
||||
compiled systems. There are several application-specific ABMs
|
||||
available for specific problems, including public health, ecology,
|
||||
economics, and other fields. Kami aims to fill a niche
|
||||
for implementing a field-neutral, extensible ABM platform in modern
|
||||
C++, using C++17 as a baseline for requirements.
|
||||
|
||||
Kami provides support for multiple agent classes, population
|
||||
management, scheduling management, and environmental management
|
||||
classes. The package provides examples of three relatively simple
|
||||
ABMs: a bank reserves model, a one-dimensional Boltzmann wealth
|
||||
model, and a two-dimensional Boltzmann wealth model. The package
|
||||
provides examples of both a minimal ABM implemented with Kami, as
|
||||
well as a starter ABM, either of which is suitable for beginning a
|
||||
new investigation using Kami. Finally, the library provides extensive
|
||||
unit-testing for all of the internal classes.
|
||||
|
||||
Kami's interface is heavily influenced by Mesa's interface
|
||||
[@python-mesa-2020]. However, being written in C++, Kami runs
|
||||
substantially faster. This allows for faster runs and more runs
|
||||
within a fixed amount of time. The advantage here is that an ABM
|
||||
built on the Kami platform is better suited for statistical and
|
||||
Monte Carlo approaches to modeling.
|
||||
|
||||
An interest design note is that Kami does not use any form of
|
||||
parallel processing due to the complexities of managing random
|
||||
number generators and providing reproducibility in results for a
|
||||
given random number seed. However, it is suitable to run as many
|
||||
instances of Kami-based models simultaneously as hardware threading
|
||||
can permit. A final design note is that Kami is opinionated in
|
||||
that it prefers inheritance to composition in model design and
|
||||
further, templates are not used for metaprogramming.
|
||||
|
||||
# References
|
||||
Reference in New Issue
Block a user