APGG - A Modular C++ Framework for Asymmetric Public Goods Games
APGG - A Modular C++ Framework for Asymmetric Public Goods Games - Published in JOSS (2023)
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
Repository
A Modular Toolkit for Public Goods Game Computation
Basic Info
Statistics
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
- Releases: 2
Topics
Metadata Files
README.md
APGG (Asymetric Public Goods Games) 

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
- Download the release from the Release section
- Extract the .zip archive
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
- 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.
- Run the buildConfig.py to generate the config.csv.
- Run the executable.
- After the conclusion of the experiments in order to visualize the data first run combineExperiments.py on the generated folder.
- 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
- Website: https://internationalprojectskempten.de/2019/05/13/asymmetric-public-good-games/
- Repositories: 1
- Profile: https://github.com/APGG-Lab
Asymmetric Public Goods Games
JOSS Publication
APGG - A Modular C++ Framework for Asymmetric Public Goods Games
Authors
Kempten University of Applied Sciences, Germany
Kempten University of Applied Sciences, Germany, Purdue University Northwest, USA, Chonnam National University, South Korea
Kempten University of Applied Sciences, Germany
Tags
Public Goods Games Framework Open Source Asymmetric Public Goods Games Evolutionary AlgorithmsCitation (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
Top Committers
| Name | 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)