Skip to content

fmichel/MaDKit

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 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"

Getting Started

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

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