Skip to content
fmichelPublic

Repository files navigation

MaDKit: Multi-agent systems Development Kit

 

Maven Central JavaDoc Java Version Gradle License

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.

Features

  • 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

Approach

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.

Simulation authoring

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.

Programming with MaDKit

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"

Getting Started

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.

Run and discover the samples

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=plain

The 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=plain

The repository also contains larger application examples:

  • MDK-simu-template: A simple simulation using default classes and settings
  • MDK-marketorg-app: A classic bid/offer multi-agent application
  • MDK-bees-app: A complete organization-based simulation

More information

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Releases

Packages

Used by

Contributors

Languages