Open source Java API for developing and simulating Multi-Agent Systems (MAS)
MaDKit is designed as a lightweight Java library for developing distributed applications and simulations using the multiagent paradigm.
- Artificial agents creation and life cycle management
- An organizational infrastructure for communication between agents, structuring the application
- High heterogeneity in agent architectures: No predefined agent model
- Multi-Agent based simulation and simulator authoring tools
In contrast to agent-centered approaches, MaDKit follows an organization-centered approach (OCMAS): There is no predefnied agent model in MaDKit.
Especially, MaDKit does not enforce any consideration about the internal structure of agents, thus allowing a developer to freely implements its own agent architectures.
So, MaDKit is built upon the AGR (Agent/Group/Role) organizational model: Agents play roles in groups, and thus create artificial societies.
MaDKit is designed to provide tools for easily create agent-based simulation engines from scratch, so that one can achieve particular requirements.
It also provides default simulation settings that can be used and extended to quickly build an agent-based simulation, only focusing on the agent modeling part.
Its conceptual approach to multi-agent based simulation mainly relies on this research paper.
JDK 25+ is required.
Using MaDKit can be done by declaring it as a dependency using your favorite build tool.
For instance, with Gradle:
implementation "io.github.fmichel:madkit:6.0.5"JDK 23 or newer and a graphical desktop are required to run the JavaFX-based sample browser and GUI examples. The repository includes the Gradle wrapper, so no separate Gradle installation is needed.
The easiest way to explore MaDKit is the MDK-samples browser. From this repository's
root directory, run:
./gradlew :MDK-samples:run --no-daemon --console=plainThe browser lists sample families such as Launching, Agents, Organization, Messaging, GUI, Logging and randomization, and ChartFX. Select a family to read its packaged Markdown documentation, then use the Launch buttons to start the registered examples. The catalog is explicit: only examples listed by the launcher are runnable from the browser, so helper classes are not started accidentally.
For the complete package/class catalog, manual smoke-test notes, and chart examples, see
MDK-samples/README.md. Each sample family also has a package-level
README.md under MDK-samples/src/main/java, which is the documentation displayed by
the browser.
The browser and GUI/ChartFX samples need an active graphical display. Samples launched from the browser run in background threads; stop a running example using its own UI or close the application when finished.
Useful commands, run from the repository root:
# Compile the samples
./gradlew :MDK-samples:compileJava
# Run the headless TestNG/AssertJ sample tests
./gradlew :MDK-samples:test --no-daemon --console=plainThe repository also contains larger application examples:
MDK-simu-template: A simple simulation using default classes and settingsMDK-marketorg-app: A classic bid/offer multi-agent applicationMDK-bees-app: A complete organization-based simulation
- JavaDoc API Reference
- Official Homepage V.5
- Tutorials V.5
- Documentation V.5
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Added some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
