{"id":37023552,"url":"https://github.com/justinnk/mason-ssa","last_synced_at":"2026-01-14T02:50:06.455Z","repository":{"id":57733761,"uuid":"415850224","full_name":"justinnk/mason-ssa","owner":"justinnk","description":"An extension to the MASON simulation framework introducing agent-based modelling via dependency-aware stochastic simulation algorithms, powered by aspect-oriented programming.","archived":false,"fork":false,"pushed_at":"2025-12-27T14:37:39.000Z","size":471,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-29T10:34:16.091Z","etag":null,"topics":["agent-based-modeling","agent-based-simulation","mason","stochastic-simulation-algorithm"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/justinnk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-10-11T08:58:24.000Z","updated_at":"2025-12-27T14:37:43.000Z","dependencies_parsed_at":"2022-08-24T11:20:22.140Z","dependency_job_id":null,"html_url":"https://github.com/justinnk/mason-ssa","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/justinnk/mason-ssa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinnk%2Fmason-ssa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinnk%2Fmason-ssa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinnk%2Fmason-ssa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinnk%2Fmason-ssa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/justinnk","download_url":"https://codeload.github.com/justinnk/mason-ssa/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinnk%2Fmason-ssa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408773,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-based-modeling","agent-based-simulation","mason","stochastic-simulation-algorithm"],"created_at":"2026-01-14T02:50:05.735Z","updated_at":"2026-01-14T02:50:06.431Z","avatar_url":"https://github.com/justinnk.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":":construction: This prototype is in the process of being refined and may exhibit bugs :construction:\n\n# mason-ssa: An SSA extension for MASON\n\nThis extension to the [MASON framework](https://cs.gmu.edu/~eclab/projects/mason/) provides facilities to implement agent-based models (ABM) and simulating them via stochastic simulation algorithms (SSAs).\nIts key feature is the support of automatic dependency-tracking using an aspect-oriented approach. This way it combines the benefits from both worlds:\n**model definition in a general purpose language** (Java) and **increased performance** when inter-agent dependencies can be exploited during a simulation step.\nSupported SSAs:\n\n\u003cimg align=\"right\" height=\"150\" src=\"resources/demo-preview.png\" alt=\"A SIRS Model Display with grid-like contact structure\"\u003e\n\n- First Reaction Method\n- Direct Method\n- Next Reaction Method (with dependency tracking)\n- Direct Method (with dependency tracking)\n\n## Getting Started\n\n### :white_check_mark: Prerequisites\n\n- Maven (tested with 3.8.2)\n- Java 8 (or compatible)\n- MASON\n  - the version found on the Maven Central Repository is out of date (14.0)\n  - Version 20 can be installed from its [GitHub repository](https://github.com/eclab/mason)\n\n### :cd: Installation\n\n- manual\n  - clone this repository: `git clone https://github.com/justinnk/mason-ssa.git`\n  - install the extension in your local repository: `mvn clean install`\n- from mvn central\n  - current version on maven central: `0.1.1`\n  - include the extension as a dependency via maven using the atrifactId `io.github.justinnk.masonssa.\u003cmodule\u003e`\n  - have a look at the [demo models](https://github.com/justinnk/mason-ssa-demo.git) for an example pom\n\n### :rocket: Run Demo Model\n\n- clone the demo repository: `git clone https://github.com/justinnk/mason-ssa-demo.git`\n- navigate into the created folder: `cd mason-ssa-demp`\n- run `sh build.sh \u0026\u0026 sh run_showcase.sh`\n- The script currently only works / is only tested on Linux\n- with some adaptions, it should also run on windows\n- todo: add batch script\n\n## :arrow_forward: Usage\n\nFor an example project, have a look at the [demo repository](https://github.com/justinnk/mason-ssa-demo.git).\n\n1. In your maven `pox.xml` add the following dependencies\n  ```xml\n  \u003cdependecies\u003e\n    \u003cdependency\u003e\n      \u003cgroupId\u003eio.github.justinnk.masonssa\u003c/groupId\u003e\n      \u003cartifactId\u003eextension\u003c/artifactId\u003e\n      \u003cversion\u003e0.1.1\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003cdependency\u003e\n      \u003cgroupId\u003eio.github.justinnk.masonssa\u003c/groupId\u003e\n      \u003cartifactId\u003easpects-base\u003c/artifactId\u003e\n      \u003cversion\u003e0.1.1\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003cdependency\u003e\n      \u003cgroupId\u003eio.github.justinnk.masonssa\u003c/groupId\u003e\n      \u003cartifactId\u003easpects-nrm\u003c/artifactId\u003e\n      \u003cversion\u003e0.1.1\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003cdependency\u003e\n      \u003cgroupId\u003eio.github.justinnk.masonssa\u003c/groupId\u003e\n      \u003cartifactId\u003easpects-odm\u003c/artifactId\u003e\n      \u003cversion\u003e0.1.1\u003c/version\u003e\n    \u003c/dependency\u003e\n  \u003c/dependencies\u003e\n  ```\n\n2. In order to weave the aspects, the following plugin has to be added in the `build\u003eplugins` section of your `pom.xml`\n  ```xml\n   \u003c!-- we use a plugin to invoke the aspectj compiler (ajc) in the build process, after the classes have been\n              compiled using javac. We define weave dependencies to weave aspects into existing jar files of the\n               extension and MASON. We also define the aspect libraries to use, which are provided by the extension. --\u003e\n  \u003cplugin\u003e\n    \u003cgroupId\u003ecom.nickwongdev\u003c/groupId\u003e\n    \u003cartifactId\u003easpectj-maven-plugin\u003c/artifactId\u003e\n    \u003cversion\u003e1.12.6\u003c/version\u003e\n    \u003cconfiguration\u003e\n      \u003c!-- disable annotation processors, since the extension uses .aj files --\u003e\n      \u003cproc\u003enone\u003c/proc\u003e\n      \u003ccomplianceLevel\u003e1.8\u003c/complianceLevel\u003e\n      \u003csource\u003e1.8\u003c/source\u003e\n      \u003ctarget\u003e1.8\u003c/target\u003e\n      \u003c!-- be verbose for educational and debugging purposes --\u003e\n      \u003cshowWeaveInfo\u003etrue\u003c/showWeaveInfo\u003e\n      \u003cverbose\u003etrue\u003c/verbose\u003e\n      \u003c!-- throw warning instead of error if some aspect has not been applied --\u003e\n      \u003cXlint\u003ewarning\u003c/Xlint\u003e\n      \u003cencoding\u003eUTF-8\u003c/encoding\u003e\n      \u003cforceAjcCompile\u003efalse\u003c/forceAjcCompile\u003e\n      \u003c!-- enable weaving for mason-internal classes and extension classes --\u003e\n      \u003cweaveDependencies\u003e\n        \u003cweaveDependency\u003e\n          \u003cgroupId\u003ecs.gmu.edu.eclab\u003c/groupId\u003e\n          \u003cartifactId\u003emason\u003c/artifactId\u003e\n        \u003c/weaveDependency\u003e\n        \u003cweaveDependency\u003e\n          \u003cgroupId\u003eio.github.justinnk.masonssa\u003c/groupId\u003e\n          \u003cartifactId\u003eextension\u003c/artifactId\u003e\n        \u003c/weaveDependency\u003e\n      \u003c/weaveDependencies\u003e\n      \u003c!-- include aspects from the ssa extension --\u003e\n      \u003caspectLibraries\u003e\n        \u003caspectLibrary\u003e\n          \u003cgroupId\u003eio.github.justinnk.masonssa\u003c/groupId\u003e\n          \u003cartifactId\u003easpects-base\u003c/artifactId\u003e\n        \u003c/aspectLibrary\u003e\n        \u003c!-- if you want to use the ODM instead, include aspects-odm here --\u003e\n        \u003caspectLibrary\u003e\n          \u003cgroupId\u003eio.github.justinnk.masonssa\u003c/groupId\u003e\n          \u003cartifactId\u003easpects-nrm\u003c/artifactId\u003e\n        \u003c/aspectLibrary\u003e\n      \u003c/aspectLibraries\u003e\n    \u003c/configuration\u003e\n    \u003cexecutions\u003e\n      \u003cexecution\u003e\n        \u003c!-- only weave after classes are compiled by javac --\u003e\n        \u003cgoals\u003e\n          \u003cgoal\u003ecompile\u003c/goal\u003e\n        \u003c/goals\u003e\n      \u003c/execution\u003e\n    \u003c/executions\u003e\n    \u003cdependencies\u003e\n      \u003cdependency\u003e\n        \u003cgroupId\u003eorg.aspectj\u003c/groupId\u003e\n        \u003cartifactId\u003easpectjtools\u003c/artifactId\u003e\n        \u003cversion\u003e${aspectj.version}\u003c/version\u003e\n      \u003c/dependency\u003e\n    \u003c/dependencies\u003e\n  \u003c/plugin\u003e \n  ```\n\n3. Now you can use the extension like described in the documentation section\n\n## :book: Documentation\n\nTODO\n\n## Roadmap\n\n- ~~Add the plugin to maven central~~\n  - set up GitHub CI/CD\n- (Re-)implement automatic performance checking for easy testing of improvements\n- Improve dependency graph efficiency\n- implement capabilities left as future work\n\n## :woman_technologist: :man_technologist: Contributing\n\nFeel free to open issues.\nThe project is still in the process of being prepared for contributions (i.e. documentation, source-code comments, etc. have to be refined/added).\nOnce this is done, see [Contributing](CONTRIBUTING.md) for more information.\n\n## :balance_scale: License\n\nThis project is distributed under the terms of the Apache-2.0 license, see [LICENSE](LICENSE).\nThis project makes use of external libraries. Their copyright information can be found in [NOTICES](NOTICES).\n\n## Literature\n\n- Tutorial: [preliminary version](literature/tutorial.pdf)\n- Thesis: [abstract](literature/thesis.pdf)\n- Paper: [can be found here](https://ssl.linklings.net/conferences/wsc/wsc2021_program/views/includes/files/inv165s3-file1.pdf)\n\n## Cite\n\nThis tool was developed as part of a bachelor thesis.\nThe results were also published in a conference paper:\n\n```\nJ. N. Kreikemeyer, T. Köster, A. M. Uhrmacher and T. Warnke,\n\"Inferring Dependency Graphs for Agent-Based Models Using Aspect-Oriented Programming,\"\n2021 Winter Simulation Conference (WSC), Phoenix, AZ, USA, 2021, pp. 1-12,\ndoi: 10.1109/WSC52266.2021.9715293.\n```\nBibtex:\n\n\n```\n@inproceedings{kreikemeyer2021inferring,\n  author={Kreikemeyer, Justin Noah and Köster, Till and Uhrmacher, Adelinde M. and Warnke, Tom},\n  booktitle={2021 Winter Simulation Conference (WSC)},\n  title={Inferring Dependency Graphs for Agent-Based Models Using Aspect-Oriented Programming}, \n  year={2021},\n  publisher={IEEE},\n  volume={},\n  number={},\n  pages={1-12},\n  doi={10.1109/WSC52266.2021.9715293}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustinnk%2Fmason-ssa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjustinnk%2Fmason-ssa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustinnk%2Fmason-ssa/lists"}