peak-mas


Namepeak-mas JSON
Version 1.0.13 PyPI version JSON
download
home_page
SummaryPython-based framework for heterogeneous agent communities
upload_time2023-06-29 10:52:10
maintainer
docs_urlNone
author
requires_python==3.9.6
license
keywords framework multiagent agent-based ecosystem spade xmpp
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PEAK: Python-based framework for heterogenous agent communities

[![DOI](https://img.shields.io/badge/DOI-10.1007%2F978--3--031--18050--7__7-blue)](https://link.springer.com/chapter/10.1007/978-3-031-18050-7_7)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/peak-mas)](https://pypi.org/project/peak-mas/)
[![PyPI](https://img.shields.io/pypi/v/peak-mas)](https://pypi.org/project/peak-mas/)
[![GitHub](https://img.shields.io/github/license/gecad-group/peak-mas)](https://github.com/gecad-group/peak-mas)
[![powered by](https://img.shields.io/static/v1?label=powered%20by&message=GECAD&color=177985&labelColor=de5d4a)](https://www.gecad.isep.ipp.pt/GECAD/Pages/Presentation/Home.aspx)
[![code style](https://img.shields.io/badge/code%20style-black-black)](https://github.com/psf/black)
[![imports isort](https://img.shields.io/static/v1?label=imports&message=isort&color=blue&labelColor=orange)](https://pycqa.github.io/isort/)

PEAK is a multi-agent system framework which helps the users develop, monitor, analyze and maintain ecosystem of heterogeneous agent communities. This ecosystem is  where various multi-agent systems can coexist, interact and share resources between them. 
This framework is based on <a href="https://spade-mas.readthedocs.io/en/latest/" target="_blank">SPADE</a>.


## Prerequisites

- Python == 3.9.6
- XMPP Server ([see docs](https://www.gecad.isep.ipp.pt/peak))


## Installing PEAK

### Conda

To install using conda, download the environment.yml file from the repository and then use the following command:
```bash
$ conda env create --file environment.yml	
```
This will create a conda environment called _peak_.

### Pip

To install using pip, just type the following command:
```bash
$ pip install peak-mas
```


## Using PEAK

### Notes on SPADE

As already said PEAK is based on SPADE. This means that every functionality of SPADE is available to the user. We highly recommend you to see <a href="https://spade-mas.readthedocs.io/en/latest/" target="_blank">SPADE</a> examples and documentation before starting using PEAK. Once you are familiarized with SPADE's mechanics you can start using PEAK.

### Notes on XMPP

To run any PEAK's agent you will need a XMPP server. You can either configure one on your machine, remotely or use a public server. The only issue with the public servers is that they don't usually have all the configurations required to run some PEAK's functionalities. To configure the server you can read the "Configure XMPP server" section in the <a href="http://www.gecad.isep.ipp.pt/peak" target="_blank">documentation</a>.

### Hello World Agent Example

One thing that was added in PEAK was the way the user executes the agents. PEAK added a CLI, inspired in JADE, to help the user execute end configure each agent in a easy and intuitive manner.
In this example we will show you how to execute a single agent. Save the following code in a file called `agent.py`.

```python 
from peak import Agent, OneShotBehaviour

class agent(Agent):
    class HelloWorld(OneShotBehaviour):
        async def run(self):
            print("Hello World")
            await self.agent.stop()

    async def setup(self):
        self.add_behaviour(self.HelloWorld())
```
It is necessary that the name of the file is the same as the name of the agent's class so PEAK can do the proper parsing. This agent only has a behavior that prints to the terminal the "Hello World" message. To execute the agent just type the following command:
```bash 
$ peak run path/to/agent.py -j agent@localhost
```
Change the `localhost` to the domain of the XMPP server you want to connect.

<details><summary>Note</summary>
<p>

If you want to know more about each command we recommend reading the [documentation](http://www.gecad.isep.ipp.pt/peak) or using the `-h` option to see the help message.

</p>
</details>

For more advanced functionalities and examples we recommend you to head forward to the <a href="http://www.gecad.isep.ipp.pt/peak" target="_blank">documentation website</a>.


## Support

Use the <a href="https://github.com/gecad-group/peak-mas/discussions" target="_blank">Discussion</a> page if you have any questions or ideas you would like so see implemented.
To alert an issue or a bug please post in the <a href="https://github.com/gecad-group/peak-mas/issues" target="_blank">Issues</a> page.

## Roadmap

This are some functionalities that are being developed and will be released in a near future:
- [ ] Integrate FIPA ACL messages in PEAK.
- [ ] Add dynamic speed option to PEAK's internal clock.
- [ ] Add multi-threading option to the Command Line Interface.
- [ ] Implement Yellow Page Service in the Directory Facilitator agent.
- [ ] Implement physical mobility in the agents.

## Scientific Publications

- Ribeiro, B., Pereira, H., Gomes, L., Vale, Z. (2023). Python-Based Ecosystem for Agent Communities Simulation. In: , _et al._ 17th International Conference on Soft Computing Models in Industrial and Environmental Applications (SOCO 2022). SOCO 2022. Lecture Notes in Networks and Systems, vol 531. Springer, Cham. https://doi.org/10.1007/978-3-031-18050-7_7

## Contributing to PEAK

Pull requests are welcome. For major changes, please open a discussion first to discuss what you would like to change.

The examples are used as a form of testing the framework. So please make sure to update the examples as appropriate or make new ones. 

To format the code please use the <a href="https://pypi.org/project/black/" target="_blank">black</a> and <a href="https://pypi.org/project/isort/" target="_blank">isort</a> packages. 

For the commits please follow the <a href="www.conventionalcommits.org" target="_blank">Conventional Commits Guideline</a>.

## License

`PEAK` is free and open-source software licensed under the <a href="https://github.com/gecad-group/peak-mas/blob/develop/LICENSE" target="_blank">GNU General Public License v3.0</a>.

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "peak-mas",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "==3.9.6",
    "maintainer_email": "",
    "keywords": "framework,multiagent,agent-based,ecosystem,spade,xmpp",
    "author": "",
    "author_email": "Bruno Ribeiro <brgri@isep.ipp.pt>",
    "download_url": "",
    "platform": null,
    "description": "# PEAK: Python-based framework for heterogenous agent communities\r\n\r\n[![DOI](https://img.shields.io/badge/DOI-10.1007%2F978--3--031--18050--7__7-blue)](https://link.springer.com/chapter/10.1007/978-3-031-18050-7_7)\r\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/peak-mas)](https://pypi.org/project/peak-mas/)\r\n[![PyPI](https://img.shields.io/pypi/v/peak-mas)](https://pypi.org/project/peak-mas/)\r\n[![GitHub](https://img.shields.io/github/license/gecad-group/peak-mas)](https://github.com/gecad-group/peak-mas)\r\n[![powered by](https://img.shields.io/static/v1?label=powered%20by&message=GECAD&color=177985&labelColor=de5d4a)](https://www.gecad.isep.ipp.pt/GECAD/Pages/Presentation/Home.aspx)\r\n[![code style](https://img.shields.io/badge/code%20style-black-black)](https://github.com/psf/black)\r\n[![imports isort](https://img.shields.io/static/v1?label=imports&message=isort&color=blue&labelColor=orange)](https://pycqa.github.io/isort/)\r\n\r\nPEAK is a multi-agent system framework which helps the users develop, monitor, analyze and maintain ecosystem of heterogeneous agent communities. This ecosystem is  where various multi-agent systems can coexist, interact and share resources between them. \r\nThis framework is based on <a href=\"https://spade-mas.readthedocs.io/en/latest/\" target=\"_blank\">SPADE</a>.\r\n\r\n\r\n## Prerequisites\r\n\r\n- Python == 3.9.6\r\n- XMPP Server ([see docs](https://www.gecad.isep.ipp.pt/peak))\r\n\r\n\r\n## Installing PEAK\r\n\r\n### Conda\r\n\r\nTo install using conda, download the environment.yml file from the repository and then use the following command:\r\n```bash\r\n$ conda env create --file environment.yml\t\r\n```\r\nThis will create a conda environment called _peak_.\r\n\r\n### Pip\r\n\r\nTo install using pip, just type the following command:\r\n```bash\r\n$ pip install peak-mas\r\n```\r\n\r\n\r\n## Using PEAK\r\n\r\n### Notes on SPADE\r\n\r\nAs already said PEAK is based on SPADE. This means that every functionality of SPADE is available to the user. We highly recommend you to see <a href=\"https://spade-mas.readthedocs.io/en/latest/\" target=\"_blank\">SPADE</a> examples and documentation before starting using PEAK. Once you are familiarized with SPADE's mechanics you can start using PEAK.\r\n\r\n### Notes on XMPP\r\n\r\nTo run any PEAK's agent you will need a XMPP server. You can either configure one on your machine, remotely or use a public server. The only issue with the public servers is that they don't usually have all the configurations required to run some PEAK's functionalities. To configure the server you can read the \"Configure XMPP server\" section in the <a href=\"http://www.gecad.isep.ipp.pt/peak\" target=\"_blank\">documentation</a>.\r\n\r\n### Hello World Agent Example\r\n\r\nOne thing that was added in PEAK was the way the user executes the agents. PEAK added a CLI, inspired in JADE, to help the user execute end configure each agent in a easy and intuitive manner.\r\nIn this example we will show you how to execute a single agent. Save the following code in a file called `agent.py`.\r\n\r\n```python \r\nfrom peak import Agent, OneShotBehaviour\r\n\r\nclass agent(Agent):\r\n\u00a0 \u00a0 class HelloWorld(OneShotBehaviour):\r\n\u00a0 \u00a0 \u00a0 \u00a0 async def run(self):\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(\"Hello World\")\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 await self.agent.stop()\r\n\r\n\u00a0 \u00a0 async def setup(self):\r\n\u00a0 \u00a0 \u00a0 \u00a0 self.add_behaviour(self.HelloWorld())\r\n```\r\nIt is necessary that the name of the file is the same as the name of the agent's class so PEAK can do the proper parsing. This agent only has a behavior that prints to the terminal the \"Hello World\" message. To execute the agent just type the following command:\r\n```bash \r\n$ peak run path/to/agent.py -j agent@localhost\r\n```\r\nChange the `localhost` to the domain of the XMPP server you want to connect.\r\n\r\n<details><summary>Note</summary>\r\n<p>\r\n\r\nIf you want to know more about each command we recommend reading the [documentation](http://www.gecad.isep.ipp.pt/peak) or using the `-h` option to see the help message.\r\n\r\n</p>\r\n</details>\r\n\r\nFor more advanced functionalities and examples we recommend you to head forward to the <a href=\"http://www.gecad.isep.ipp.pt/peak\" target=\"_blank\">documentation website</a>.\r\n\r\n\r\n## Support\r\n\r\nUse the <a href=\"https://github.com/gecad-group/peak-mas/discussions\" target=\"_blank\">Discussion</a> page if you have any questions or ideas you would like so see implemented.\r\nTo alert an issue or a bug please post in the <a href=\"https://github.com/gecad-group/peak-mas/issues\" target=\"_blank\">Issues</a> page.\r\n\r\n## Roadmap\r\n\r\nThis are some functionalities that are being developed and will be released in a near future:\r\n- [ ] Integrate FIPA ACL messages in PEAK.\r\n- [ ] Add dynamic speed option to PEAK's internal clock.\r\n- [ ] Add multi-threading option to the Command Line Interface.\r\n- [ ] Implement Yellow Page Service in the Directory Facilitator agent.\r\n- [ ] Implement physical mobility in the agents.\r\n\r\n## Scientific Publications\r\n\r\n- Ribeiro, B., Pereira, H., Gomes, L., Vale, Z. (2023). Python-Based Ecosystem for Agent Communities Simulation. In: ,\u00a0_et al._\u00a017th International Conference on Soft Computing Models in Industrial and Environmental Applications (SOCO 2022). SOCO 2022. Lecture Notes in Networks and Systems, vol 531. Springer, Cham. https://doi.org/10.1007/978-3-031-18050-7_7\r\n\r\n## Contributing to PEAK\r\n\r\nPull requests are welcome. For major changes, please open a discussion first to discuss what you would like to change.\r\n\r\nThe examples are used as a form of testing the framework. So please make sure to update the examples as appropriate or make new ones. \r\n\r\nTo format the code please use the <a href=\"https://pypi.org/project/black/\" target=\"_blank\">black</a> and <a href=\"https://pypi.org/project/isort/\" target=\"_blank\">isort</a> packages. \r\n\r\nFor the commits please follow the <a href=\"www.conventionalcommits.org\" target=\"_blank\">Conventional Commits Guideline</a>.\r\n\r\n## License\r\n\r\n`PEAK`\u00a0is free and open-source software licensed under the <a href=\"https://github.com/gecad-group/peak-mas/blob/develop/LICENSE\" target=\"_blank\">GNU General Public License v3.0</a>.\r\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Python-based framework for heterogeneous agent communities",
    "version": "1.0.13",
    "project_urls": {
        "Github": "https://github.com/gecad-group/peak-mas",
        "Homepage": "https://www.gecad.isep.ipp.pt/peak"
    },
    "split_keywords": [
        "framework",
        "multiagent",
        "agent-based",
        "ecosystem",
        "spade",
        "xmpp"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "61f1b91ad0d5ede70978ff355e9b0ccb46c118196e8dc2906989cde866e3e43f",
                "md5": "85b449328b5af833ec722ed0e226c832",
                "sha256": "388e0d4d190df426d8968d94a6c5df3630ce578a8549432efdd7fe5d0e6e47f1"
            },
            "downloads": -1,
            "filename": "peak_mas-1.0.13-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "85b449328b5af833ec722ed0e226c832",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "==3.9.6",
            "size": 29592,
            "upload_time": "2023-06-29T10:52:10",
            "upload_time_iso_8601": "2023-06-29T10:52:10.263543Z",
            "url": "https://files.pythonhosted.org/packages/61/f1/b91ad0d5ede70978ff355e9b0ccb46c118196e8dc2906989cde866e3e43f/peak_mas-1.0.13-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-29 10:52:10",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "gecad-group",
    "github_project": "peak-mas",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "peak-mas"
}
        
Elapsed time: 0.65940s