APGG - A Modular C++ Framework for Asymmetric Public Goods Games

APGG - A Modular C++ Framework for Asymmetric Public Goods Games - Published in JOSS (2023)

https://github.com/apgg-lab/apgg

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 9 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    1 of 8 committers (12.5%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

genetic-algorithm genetic-programming public-goods-game
Last synced: 4 months ago · JSON representation ·

Repository

A Modular Toolkit for Public Goods Game Computation

Basic Info
  • Host: GitHub
  • Owner: APGG-Lab
  • License: gpl-3.0
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 1.23 MB
Statistics
  • Stars: 0
  • Watchers: 3
  • Forks: 0
  • Open Issues: 0
  • Releases: 2
Topics
genetic-algorithm genetic-programming public-goods-game
Created almost 4 years ago · Last pushed over 2 years ago
Metadata Files
Readme License Citation

README.md

APGG (Asymetric Public Goods Games) DOI

Logo

APGG is a Framework that allows users to run, simulate and analyze Public Goods Games Experiments. APPG is written in a way that should allow users of all levels of experience to use, utalize and modify the Framework as desired.

Installation

Installation from Source

  • C++17 or higher required!
  • Clone the repository git clone https://ips.hs-kempten.de/asymmetric-public-goods/apgg.git
  • Open the .sln project
  • Compile the "Release" Version

For more information, please refer to our Wiki page.

Getting started

  1. Adjust the values in the main function of buildConfig.py to whatever values are suitable for your experiment (see Config Setup or Wiki entry). By adding addIteration calls you can specify entire ranges of values for a config value that the script writes for you automatically. With multiple calls to this function every possible permutation of all values ranges is written. All these experiment setups will be run in sequence.
  2. Run the buildConfig.py to generate the config.csv.
  3. Run the executable.
  4. After the conclusion of the experiments in order to visualize the data first run combineExperiments.py on the generated folder.
  5. Run plot.py to get a chart of your data. Adjust as needed.

Config Setup

For more information on this topic, please refer to our Wiki pages on Config Values and CSV Batch Experiements.

| Config Key | Type (Limits) | Definition | | -------- | -------- | -------- | | numGenerations | int | Number of generations | | eliminationCount | int | Number of Organisms which will be eliminated every generation | |groupSize | int | Size of the group to play the Public Goods game | |width | int | Theoretical grid width. Spatial isn't implemented atm, so just assume size = width * height | |height | int | Theoretical grid height. Spatial isn't implemented atm, so just assume size = width * height | |cooperateCost| int | Cost for Cooperation | |synergyFactor| int | Synergy Multiplication factor for cooperation | |punishmentCost| int | BaseCost for moralists/immoralists s.o | |punishmentFine | int | BaseFine for defectors / immporalists | |matchupType | int | unused | |selectorType| int (0-1) | 0 = EliteSelector / 1 = RandomSelector (recommended by Dr. Hintze) | |repopulatorType | int (0-1) | 0 = RandomPopulator / 1 = ProportionateRepopulator (recommended by Dr. Hintze) | |gridType | int (0-1) | 0 = DefaultGrid | |payoffType | int (0-1) | 0 = DefaultPayoffGenerator | |mutatorType | int (0-1) | 0 = RandomMutator / 1 = ThresholdMutator (recommended by Dr. Hintze) | |mutationRate | int (0-100) | Mutationrate. 0 = no Mutation, 100 = every Organism will mutate every round | |showAllGenerations | int (0-1) | Log all generations to std. out | |archiveData | int (0-1) | Archive data to csv | |visualize | int (0-1) | Open python3 script after experiment (unused) | |folderName| string | name of the experiment |logSuffix | string | Suffix for the experiment .csv file | |timeToFile | int (0-1) | Add timestamp to file | |timeToFolder | int (0-1) | Add timestamp to folder | |consoleOutExponent | int | Multiplicator for interval output |

Help

Visit our Wiki for a more in depth documentation

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Citation

Plaintext Rosenthal et al., (2023). APGG - A Modular C++ Framework for Asymmetric Public Goods Games. Journal of Open Source Software, 8(89), 4944, https://doi.org/10.21105/joss.04944

Bibtex Bibtex @article{Rosenthal2023, doi = {10.21105/joss.04944}, url = {https://doi.org/10.21105/joss.04944}, year = {2023}, publisher = {The Open Journal}, volume = {8}, number = {89}, pages = {4944}, author = {Mirko Rosenthal and David J. Richter and Falk Hübner and Jochen Staudacher and Arend Hintze}, title = {APGG - A Modular C++ Framework for Asymmetric Public Goods Games}, journal = {Journal of Open Source Software} }

Owner

  • Name: APGG Lab
  • Login: APGG-Lab
  • Kind: organization
  • Location: Hochschule Kempten

Asymmetric Public Goods Games

JOSS Publication

APGG - A Modular C++ Framework for Asymmetric Public Goods Games
Published
September 13, 2023
Volume 8, Issue 89, Page 4944
Authors
Mirko Rosenthal
Kempten University of Applied Sciences, Germany
David J. Richter ORCID
Kempten University of Applied Sciences, Germany, Purdue University Northwest, USA, Chonnam National University, South Korea
Falk Hübner
Kempten University of Applied Sciences, Germany
Jochen Staudacher ORCID
Kempten University of Applied Sciences, Germany
Arend Hintze ORCID
MicroData Analytics, Dalarna University, Sweden, BEACON Center for the Study of Evolution in Action, Michigan State University, USA
Editor
Nikoleta Glynatsi ORCID
Tags
Public Goods Games Framework Open Source Asymmetric Public Goods Games Evolutionary Algorithms

Citation (CITATION.cff)

cff-version: "1.2.0"
authors:
- family-names: Rosenthal
  given-names: Mirko
- family-names: Richter
  given-names: David J.
  orcid: "https://orcid.org/0000-0001-5413-6710"
- family-names: Hübner
  given-names: Falk
- family-names: Staudacher
  given-names: Jochen
  orcid: "https://orcid.org/0000-0002-0619-4606"
- family-names: Hintze
  given-names: Arend
  orcid: "https://orcid.org/0000-0002-4872-1961"
doi: 10.5281/zenodo.8334926
message: If you use this software, please cite our article in the
  Journal of Open Source Software.
preferred-citation:
  authors:
  - family-names: Rosenthal
    given-names: Mirko
  - family-names: Richter
    given-names: David J.
    orcid: "https://orcid.org/0000-0001-5413-6710"
  - family-names: Hübner
    given-names: Falk
  - family-names: Staudacher
    given-names: Jochen
    orcid: "https://orcid.org/0000-0002-0619-4606"
  - family-names: Hintze
    given-names: Arend
    orcid: "https://orcid.org/0000-0002-4872-1961"
  date-published: 2023-09-13
  doi: 10.21105/joss.04944
  issn: 2475-9066
  issue: 89
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 4944
  title: APGG - A Modular C++ Framework for Asymmetric Public Goods
    Games
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.04944"
  volume: 8
title: APGG - A Modular C++ Framework for Asymmetric Public Goods Games

GitHub Events

Total
Last Year

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 247
  • Total Committers: 8
  • Avg Commits per committer: 30.875
  • Development Distribution Score (DDS): 0.49
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Mirko Rosenthal m****4@g****m 126
David d****r@f****e 46
Venku628 h****5@g****m 35
Jochen Staudacher J****r@h****e 33
ahnt a****e@m****m 2
Daniel S. Katz d****z@i****g 2
Hübner, Falk f****r@s****e 2
Rosenthal, Mirko m****l@s****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 5
  • Total pull requests: 4
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 16 minutes
  • Total issue authors: 1
  • Total pull request authors: 3
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • mstimberg (5)
Pull Request Authors
  • danielskatz (2)
  • jhstaudacher (1)
  • JDatPNW (1)
Top Labels
Issue Labels
Pull Request Labels