Table of Contents
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.
To begin working with basePlatformSOMAS, follow these simple example steps.
This package is entirely build in GoLang (go)
. Your machine therefore needs a golang compiler installed. The relevant download link can be found here.
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>
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
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.
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:
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.
Matthew Scott - [email protected]
This work was produced by the following developers: