Skip to content

A generic, extensible 'base platform' for instantiating self-organising, multi-agent systems in go.

License

Notifications You must be signed in to change notification settings

MattSScott/basePlatformSOMAS

Repository files navigation

basePlatformSOMAS

Contributors Issues MIT License

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Contributing
  5. License
  6. Contact
  7. Acknowledgments

About The Project

basePlatformSOMAS is a generic 'base platform', in the form of a package, used to simplify the development of a self-organising, multi-agent system (SOMAS). This package provides a set of core 'building block' components:

  • A 'base server' - an extensible server object for managing the environmental gamestate and regulating the internal state of...
  • A 'base agent' - an extensible (multi-)agent object that can be injected into the server for simulation, and abstracts the core functions for agent-to-agent interactions through...
  • A 'base message' - an extensible messaging component that helps to define a common language for multi-agent communication.

These building blocks come with 1. an interface definition for defining the core functions required for an operational multi-agent system and 2. the building block object itself, to provide a base implementation of these core functions, and allow extension.

For example, the IServer interface contains a set of functions that all servers in any multi-agent system must perform (the ability to add or remove agents, say), and the BaseServer object will give a base implementation of these methods.

It is then left to the user of this package to define an ExtendedServer which adds all of the relevant functionality for their multi-agent scenario, while composing the BaseServer to get access to the methods provided by this package.

(back to top)

Getting Started

To begin working with basePlatformSOMAS, follow these simple example steps.

Prerequisites

This package is entirely build in GoLang (go). Your machine therefore needs a golang compiler installed. The relevant download link can be found here.

Golang

Since we have defined this repository as a package, it must be included in an existing go project. As such, you should be initialising a go repository in a folder of your choice with:

go mod init <your-module-name>

Installation

With a working go repository, you can now include our package:

go get github.com/MattSScott/basePlatformSOMAS/v2

and, for peace of mind, tidy the imports:

go mod tidy

(back to top)

Usage

You will now have access to the modules provided by this package:

  • The server module can be imported into a file with: github.com/MattSScott/basePlatformSOMAS/v2/pkg/server
  • The agent module can be imported into a file with: github.com/MattSScott/basePlatformSOMAS/v2/pkg/agent
  • The message module can be imported into a file with: github.com/MattSScott/basePlatformSOMAS/v2/pkg/message

For more examples, and a much, much more detailed write-up of the package, please refer to the User Manual or, if you're using an outdated version of the package, refer to the Past Manuals.

(back to top)

Contributing

basePlatformSOMAS is an open source project made for SOMAS programmers, by SOMAS programmers. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this package better, please fork the repo and create a pull request. If you would rather leave the implementation of this suggestion to us, you can also simply open an issue with the tag "enhancement".

To make a pull request in a helpful way:

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Matthew Scott - [email protected]

(back to top)

Acknowledgments

This work was produced by the following developers:

(back to top)

About

A generic, extensible 'base platform' for instantiating self-organising, multi-agent systems in go.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages