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 23+ 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.1"
This repo contains 3 sub projects that give an hint about what can be done with MaDKit:
- MDK-simu-template: A simple example of a simulation using default classes and settings
- MDK-marketorg-app: A classic bid/offer multi-agent application
- MDK-bees-app: A complete simulation example
- 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