Coder Social home page Coder Social logo

abmsim.jl's Introduction

ABMSim.jl

Code Style: Blue DOI

Title

ABMSim.jl: An agent-based model simulator

Descritpion

This simulation tool provides some ABM model and simulation types for seperate specification of ABM models and their simulation, currently tuned for large-scale demographic ABMs, cf.\ UKDemographicABM.jl package. It strives to exploit the state-of-the-art Agents.jl package. A lighter example can be consulted via the model MiniDemographicABM.jl

Author(s)

Atiyah Elsheikh

Contributor(s)

Atiyah Elsheikh (V0-V0.7)

Releases

  • V0.1 (28-06-2022) : Basic abstract functionalities of Multiagents models (Agents, ABMs, MultiABMs, ABM Simulation, MABM Simulations)

  • V0.2 (25-08-2022) : ABM-type has parameter fields + Unit Testing (Agents & ABMs)

    • V0.2.1 (29-08-2022) : Minor simplifcation when using MABMSimulation
    • V0.2.2 (09-09-2022) : ABM.propoerties look like structure if declared as dictionaries, initializing MA for reseting ID coutner, version number const
    • V0.2.3 (22-09-2022) : ABM.data does not need to of dictionary type.
    • V0.2.4 (1-10-2022) : Remove the usage of SomeUtil.jl and replace it with internal utilities module
  • V0.3 (21-10-2022) : removing all static dictionaries declaration, removing major causes of type instabilities, simulation parameters type for fixed step simulation (subject to improvement), allowing several type of simulations (agents.jl-like, simple fixed step, simple ABM) with DRY-based style, no MABM or MABM simulation concrete types (not needed by current case study), comprehensive set of unit tests across the whole package (90 unit tests), time is not associated with the model but implicitly embedded in a simulation type, stepping and running a model can use example as a trait (with DefaultExample() if not specified)

    • V0.3.1 (7-11-2022) : User-arbitrary types for simulation parameters
  • V0.4 (14-12-2022) : optimized implementation of kill_agent!, simple and parameterized ABM type, blueStyle coding guidelines, constistent naming conventions of source files, unit tests increased to 101

  • V0.5 (5-3-2023) : Importing common functions from Agents.jl + bluestyle coding recommended editor settings

    • V0.5.1 (19-5-23) : Minor issues , missing export statmenet
  • V0.6 (25-8-23) : Renaming to ABMSim.jl

  • V0.7 (27-9-23) : Integration of space concept into existing ABMType, minor Agents.jl-based enhancements

    • V0.7.1 (5-10-23) : removing unnecessary import statements
    • V0.7.2 (11-10-23) : removing cause for performance drop of Agents.jl when using ABMSim
    • V0.7.3 (14-12-23) : Fix DOI and citation

License

MIT License

Copyright (c) 2023 Atiyah Elsheikh, MRC/CSO Social & Public Health Sciences Unit, School of Health and Wellbeing, University of Glasgow, Cf. License for further information

Platform

This code was developed and experimented on

  • Ubuntu 22.04.2 LTS
  • VSCode V1.71.2
  • Julia language V1.9.1
  • Agents.jl V5.14.0

Exeution

This is a simulation tool with no internal examples. However, cf. MiniDemographicABM.jl & UKDemographicABM.jl package as examples.

Execution of unit tests within REPL:

> push!(LOAD_PATH,"/path/to/ABMSim.jl/") > include("tests/runtests")

References

[1] George Datseris, Ali R. Vahdati, Timothy C. DuBois: Agents.jl: a performant and feature-full agent-based modeling software of minimal code complexity. SIMULATION. 2022. doi:10.1177/00375497211068820

Cite as

Atiyah Elsheikh. (2023). ABMSim.jl: An agent-based model simulator. Zenodo.https://doi.org/10.5281/zenodo.8284008

bibtex

@software{atiyah_elsheikh_2023_8284009, author = {Atiyah Elsheikh}, title = {ABMSim.jl: An agent-based model simulator}, month = aug, year = 2023, publisher = {Zenodo}, doi = {10.5281/zenodo.8284008}, url = {https://doi.org/10.5281/zenodo.8284008} }

Acknowledgments

For the purpose of open access, the author(s) has applied a Creative Commons Attribution (CC BY) licence to any Author Accepted Manuscript version arising from this submission.

Fundings

Dr. Atyiah Elsheikh, by the time of publishing Version 0.6 of this software, is a Research Software Engineer at MRC/CSO Social & Public Health Sciences Unit, School of Health and Wellbeing, University of Glasgow. He is in the Complexity in Health programme. He is supported by the Medical Research Council (MC_UU_00022/1) and the Scottish Government Chief Scientist Office (SPHSU16).

abmsim.jl's People

Contributors

atiyahelsheikh avatar

Stargazers

Dale S. Rothman avatar  avatar

Watchers

 avatar Vladimir avatar

Forkers

atiyahelsheikh

abmsim.jl's Issues

Allow client to employ own Simulation parameter types

ABMSimulation uses own simulation parameter type. Client could employ own parameters , e.g. logfile name, or others not used across MultiAgents.jl. Thus it makes sense to parameterise simulation parameters as a type parameter, while making sure that some basic flags exist.

Major re-structuring

Current structure is causing performance problems for the client due to the presence of

  • fields with abstract types
  • usage of Dict{Symbol,Any}

Initial modifications in this direction has shown improved performance.

Also further simplification enhancements are under construction. Basically, the goal is to separate model parameters from simulation parameters.

Integration of Agents.jl

In order to maximise usage of Agents.jl code and capabiltiies, the following tasks need to be accomplished:

  • Importing common functions (rather than using identical function names)
  • Explore further existing functionalities in Agents.jl
  • Unification with the space concept in Agents.jl
    - [ ] modify add_agent! semantics
  • Unification with the ABM concept in Agents.jl

ABMSimulator seed

ABM Simulator with fixed seed number does not produce the same results

Renaming the package to XAgents.jl

Related to #23

The name MultiAgents.jl corresponds to providing capabilities for realising multi-agent systems. Since this is not obviously offered by the actual capabilities, it makes sense to rename this package.

The name XAgents.jl are thought, from one side it implies that Agents.jl is largely utilised. From the other side, it extends Agents.jl with further capabilities specifically tuned for the associated case studies.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.