{"id":15654510,"url":"https://github.com/xuehaipan/mate","last_synced_at":"2025-07-20T00:34:04.211Z","repository":{"id":45827732,"uuid":"398482086","full_name":"XuehaiPan/mate","owner":"XuehaiPan","description":"MATE: the Multi-Agent Tracking Environment.","archived":false,"fork":false,"pushed_at":"2023-03-31T07:39:07.000Z","size":504,"stargazers_count":37,"open_issues_count":3,"forks_count":22,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-01T09:46:04.664Z","etag":null,"topics":["multi-agent-reinforcement-learning","openai-gym","openai-gym-environment","reinforcement-learning","reinforcement-learning-algorithms","reinforcement-learning-environment"],"latest_commit_sha":null,"homepage":"https://mate-gym.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XuehaiPan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-21T06:13:49.000Z","updated_at":"2025-04-29T03:22:22.000Z","dependencies_parsed_at":"2024-10-03T12:52:22.587Z","dependency_job_id":"58d1becf-4ee7-48e5-a0c3-ba1d4ce60460","html_url":"https://github.com/XuehaiPan/mate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/XuehaiPan/mate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XuehaiPan%2Fmate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XuehaiPan%2Fmate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XuehaiPan%2Fmate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XuehaiPan%2Fmate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XuehaiPan","download_url":"https://codeload.github.com/XuehaiPan/mate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XuehaiPan%2Fmate/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266048704,"owners_count":23868744,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["multi-agent-reinforcement-learning","openai-gym","openai-gym-environment","reinforcement-learning","reinforcement-learning-algorithms","reinforcement-learning-environment"],"created_at":"2024-10-03T12:52:09.624Z","updated_at":"2025-07-20T00:34:04.184Z","avatar_url":"https://github.com/XuehaiPan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MATE: the Multi-Agent Tracking Environment\n\n\u003c!-- markdownlint-disable html --\u003e\n\nThis repo contains the source code of `MATE`, the _**M**ulti-**A**gent **T**racking **E**nvironment_. The full documentation can be found at \u003chttps://mate-gym.readthedocs.io\u003e. The full list of implemented agents can be found in section [Implemented Algorithms](#implemented-algorithms). For detailed description, please checkout our paper ([PDF](https://openreview.net/pdf?id=SyoUVEyzJbE), [bibtex](#citation)).\n\nThis is an **asymmetric two-team zero-sum stochastic game** with _partial observations_, and each team has multiple agents (multiplayer). Intra-team communications are allowed, but inter-team communications are prohibited. It is **cooperative** among teammates, but it is **competitive** among teams (opponents).\n\n## Installation\n\n```bash\ngit config --global core.symlinks true  # required on Windows\npip3 install git+https://github.com/XuehaiPan/mate.git#egg=mate\n```\n\n**NOTE:** Python 3.7+ is required, and Python versions lower than 3.7 is not supported.\n\nIt is highly recommended to create a new isolated virtual environment for `MATE` using [`conda`](https://docs.conda.io/en/latest/miniconda.html):\n\n```bash\ngit clone https://github.com/XuehaiPan/mate.git \u0026\u0026 cd mate\nconda env create --no-default-packages --file conda-recipes/basic.yaml  # or full-cpu.yaml to install RLlib\nconda activate mate\n```\n\n## Getting Started\n\nMake the ``MultiAgentTracking`` environment and play!\n\n```python\nimport mate\n\n# Base environment for MultiAgentTracking\nenv = mate.make('MultiAgentTracking-v0')\nenv.seed(0)\ndone = False\ncamera_joint_observation, target_joint_observation = env.reset()\nwhile not done:\n    camera_joint_action, target_joint_action = env.action_space.sample()  # your agent here (this takes random actions)\n    (\n        (camera_joint_observation, target_joint_observation),\n        (camera_team_reward, target_team_reward),\n        done,\n        (camera_infos, target_infos)\n    ) = env.step((camera_joint_action, target_joint_action))\n```\n\nAnother example with a built-in single-team wrapper (see also [Built-in Wrappers](#built-in-wrappers)):\n\n```python\nimport mate\n\nenv = mate.make('MultiAgentTracking-v0')\nenv = mate.MultiTarget(env, camera_agent=mate.GreedyCameraAgent(seed=0))\nenv.seed(0)\ndone = False\ntarget_joint_observation = env.reset()\nwhile not done:\n    target_joint_action = env.action_space.sample()  # your agent here (this takes random actions)\n    target_joint_observation, target_team_reward, done, target_infos = env.step(target_joint_action)\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/16078332/130274196-9d18563d-6d42-493d-8dac-326b1924d2e3.gif\" alt=\"Screencast\"\u003e\n  \u003c/br\u003e\n  4 Cameras vs. 8 Targets (9 Obstacles)\n\u003c/p\u003e\n\n### Examples and Demos\n\n[`mate/evaluate.py`](mate/evaluate.py) contains the example evaluation code for the `MultiAgentTracking` environment. Try out the following demos:\n\n```bash\n# \u003cMultiAgentTracking\u003cMultiAgentTracking-v0\u003e\u003e(4 cameras, 2 targets, 9 obstacles)\npython3 -m mate.evaluate --episodes 1 --config MATE-4v2-9.yaml\n\n# \u003cMultiAgentTracking\u003cMultiAgentTracking-v0\u003e\u003e(4 cameras, 8 targets, 9 obstacles)\npython3 -m mate.evaluate --episodes 1 --config MATE-4v8-9.yaml\n\n# \u003cMultiAgentTracking\u003cMultiAgentTracking-v0\u003e\u003e(8 cameras, 8 targets, 9 obstacles)\npython3 -m mate.evaluate --episodes 1 --config MATE-8v8-9.yaml\n\n# \u003cMultiAgentTracking\u003cMultiAgentTracking-v0\u003e\u003e(4 cameras, 8 targets, 0 obstacle)\npython3 -m mate.evaluate --episodes 1 --config MATE-4v8-0.yaml\n\n# \u003cMultiAgentTracking\u003cMultiAgentTracking-v0\u003e\u003e(0 camera, 8 targets, 32 obstacles)\npython3 -m mate.evaluate --episodes 1 --config MATE-Navigation.yaml\n```\n\n\u003ctable style=\"margin-top: 15px; margin-bottom: 15px; table-layout: fixed; width: 100%;\"\u003e\n  \u003ctr align=\"center\" valign=\"middle\"\u003e\n    \u003ctd style=\"width:20%;\"\u003e4 Cameras \u003c/br\u003e vs. 2 Targets \u003c/br\u003e (9 obstacles)\u003c/td\u003e\n    \u003ctd style=\"width:20%;\"\u003e4 Cameras \u003c/br\u003e vs. 8 Targets \u003c/br\u003e (9 obstacles)\u003c/td\u003e\n    \u003ctd style=\"width:20%;\"\u003e8 Cameras \u003c/br\u003e vs. 8 Targets \u003c/br\u003e (9 obstacles)\u003c/td\u003e\n    \u003ctd style=\"width:20%;\"\u003e4 Cameras \u003c/br\u003e vs. 8 Targets \u003c/br\u003e (no obstacles)\u003c/td\u003e\n    \u003ctd style=\"width:20%;\"\u003e8 Targets Navigation \u003c/br\u003e (no cameras)\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr align=\"center\" valign=\"middle\"\u003e\n    \u003ctd\u003e\u003cimg src=\"https://user-images.githubusercontent.com/16078332/130273683-cd0b8a30-ef8f-4d56-bb8a-ae508d51e0e7.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"https://user-images.githubusercontent.com/16078332/130274196-9d18563d-6d42-493d-8dac-326b1924d2e3.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"https://user-images.githubusercontent.com/16078332/130274314-c04d0be9-3af1-4cb9-a33d-0d99c0eec66b.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"https://user-images.githubusercontent.com/16078332/130274049-7fc02965-f2bd-4d37-9d9f-0c6a8279056a.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"https://user-images.githubusercontent.com/16078332/130274359-52b13fdd-189f-47e9-bc9b-feb924215b3a.gif\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\nYou can specify the agent classes and arguments by:\n\n```bash\npython3 -m mate.evaluate --camera-agent module:class --camera-kwargs \u003cJSON-STRING\u003e --target-agent module:class --target-kwargs \u003cJSON-STRING\u003e\n```\n\nYou can find the example code for agents in [`examples`](examples). The full list of implemented agents can be found in section [Implemented Algorithms](#implemented-algorithms). For example:\n\n```bash\n# Example demos in examples\npython3 -m examples.naive\n\n# Use the evaluation script\npython3 -m mate.evaluate --episodes 1 --render-communication \\\n    --camera-agent examples.greedy:GreedyCameraAgent --camera-kwargs '{\"memory_period\": 20}' \\\n    --target-agent examples.greedy:GreedyTargetAgent \\\n    --config MATE-4v8-9.yaml \\\n    --seed 0\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/16078332/131496988-0044c075-67a9-46cb-99a5-c8d290d0b3e4.gif\" alt=\"Communication\"\u003e\n\u003c/p\u003e\n\nYou can implement your own custom agents classes to play around. See [Make Your Own Agents](docs/source/getting-started.rst#make-your-own-agents) for more details.\n\n## Environment Configurations\n\nThe `MultiAgentTracking` environment accepts a Python dictionary mapping or a configuration file in JSON or YAML format.\nIf you want to use customized environment configurations, you can copy the default configuration file:\n\n```bash\ncp \"$(python3 -m mate.assets)\"/MATE-4v8-9.yaml MyEnvCfg.yaml\n```\n\nThen make some modifications for your own. Use the modified environment by:\n\n```python\nenv = mate.make('MultiAgentTracking-v0', config='/path/to/your/cfg/file')\n```\n\nThere are several preset configuration files in [`mate/assets`](mate/assets) directory.\n\n```python\n# \u003cMultiAgentTracking\u003cMultiAgentTracking-v0\u003e\u003e(4 camera, 2 targets, 9 obstacles)\nenv = mate.make('MATE-4v2-9-v0')\n\n# \u003cMultiAgentTracking\u003cMultiAgentTracking-v0\u003e\u003e(4 camera, 8 targets, 9 obstacles)\nenv = mate.make('MATE-4v8-9-v0')\n\n# \u003cMultiAgentTracking\u003cMultiAgentTracking-v0\u003e\u003e(8 camera, 8 targets, 9 obstacles)\nenv = mate.make('MATE-8v8-9-v0')\n\n# \u003cMultiAgentTracking\u003cMultiAgentTracking-v0\u003e\u003e(4 camera, 8 targets, 0 obstacles)\nenv = mate.make('MATE-4v8-0-v0')\n\n# \u003cMultiAgentTracking\u003cMultiAgentTracking-v0\u003e\u003e(0 camera, 8 targets, 32 obstacles)\nenv = mate.make('MATE-Navigation-v0')\n```\n\nYou can reinitialize the environment with a new configuration without creating a new instance:\n\n```python\n\u003e\u003e\u003e env = mate.make('MultiAgentTracking-v0', wrappers=[mate.MoreTrainingInformation])  # we support wrappers\n\u003e\u003e\u003e print(env)\n\u003cMoreTrainingInformation\u003cMultiAgentTracking\u003cMultiAgentTracking-v0\u003e\u003e(4 cameras, 8 targets, 9 obstacles)\u003e\n\n\u003e\u003e\u003e env.load_config('MATE-8v8-9.yaml')\n\u003e\u003e\u003e print(env)\n\u003cMoreTrainingInformation\u003cMultiAgentTracking\u003cMultiAgentTracking-v0\u003e\u003e(8 cameras, 8 targets, 9 obstacles)\u003e\n```\n\nBesides, we provide a script [`mate/assets/generator.py`](mate/assets/generator.py) to generate a configuration file with responsible camera placement:\n\n```bash\npython3 -m mate.assets.generator --path 24v48.yaml --num-cameras 24 --num-targets 48 --num-obstacles 20\n```\n\nSee [Environment Customization](docs/source/getting-started.rst#environment-customization) for more details.\n\n## Built-in Wrappers\n\nMATE provides multiple wrappers for different settings. Such as _fully observability_, _discrete action spaces_, _single team multi-agent_, etc. See [Built-in Wrappers](docs/source/wrappers.rst#wrappers) for more details.\n\n\u003ctable class=\"docutils align-default\"\u003e\n  \u003cthead\u003e\n    \u003ctr class=\"row-odd\"\u003e\n      \u003cth class=\"head\" colspan=\"2\"\u003eWrapper\u003c/th\u003e\n      \u003cth class=\"head\"\u003eDescription\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr class=\"row-even\"\u003e\n      \u003ctd rowspan=\"5\"\u003eobservation\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003eEnhancedObservation\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Enhance the agent’s observation, which sets all observation mask to \u003ccode\u003eTrue\u003c/code\u003e.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-odd\"\u003e\n      \u003ctd\u003e\u003ccode\u003eSharedFieldOfView\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Share field of view among agents in the same team, which applies the \u003ccode\u003eor\u003c/code\u003e operator over the observation masks. The target agents share the empty status of warehouses.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-even\"\u003e\n      \u003ctd\u003e\u003ccode\u003eMoreTrainingInformation\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Add more environment and agent information to the \u003ccode\u003einfo\u003c/code\u003e field of \u003ccode\u003estep()\u003c/code\u003e, enabling full observability of the environment.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-odd\"\u003e\n      \u003ctd\u003e\u003ccode\u003eRescaledObservation\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Rescale all entity states in the observation to \u003cspan class=\"math\"\u003e[-1, +1]\u003c/span\u003e.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-even\"\u003e\n      \u003ctd\u003e\u003ccode\u003eRelativeCoordinates\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Convert all locations of other entities in the observation to relative coordinates.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-odd\"\u003e\n      \u003ctd rowspan=\"2\"\u003eaction\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003eDiscreteCamera\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Allow cameras to use discrete actions.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-even\"\u003e\n      \u003ctd\u003e\u003ccode\u003eDiscreteTarget\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Allow targets to use discrete actions.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-odd\"\u003e\n      \u003ctd rowspan=\"2\"\u003ereward\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003eAuxiliaryCameraRewards\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Add additional auxiliary rewards for each individual camera.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-even\"\u003e\n      \u003ctd\u003e\u003ccode\u003eAuxiliaryTargetRewards\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Add additional auxiliary rewards for each individual target.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-odd\"\u003e\n      \u003ctd rowspan=\"4\"\u003esingle-team\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003eMultiCamera\u003c/code\u003e\n      \u003ctd rowspan=\"2\"\u003e\n        Wrap into a single-team multi-agent environment.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-even\"\u003e\n      \u003ctd\u003e\u003ccode\u003eMultiTarget\u003c/code\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-odd\"\u003e\n      \u003ctd\u003e\u003ccode\u003eSingleCamera\u003c/code\u003e\u003c/td\u003e\n      \u003ctd rowspan=\"2\"\u003e\n        Wrap into a single-team single-agent environment.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-even\"\u003e\n      \u003ctd\u003e\u003ccode\u003eSingleTarget\u003c/code\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-odd\"\u003e\n      \u003ctd rowspan=\"5\"\u003ecommunication\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003eMessageFilter\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Filter messages from agents of intra-team communications.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-even\"\u003e\n      \u003ctd\u003e\u003ccode\u003eRandomMessageDropout\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Randomly drop messages in communication channels.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-odd\"\u003e\n      \u003ctd\u003e\u003ccode\u003eRestrictedCommunicationRange\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Add a restricted communication range to channels.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-even\"\u003e\n      \u003ctd\u003e\u003ccode\u003eNoCommunication\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Disable intra-team communications, i.e., filter out all messages.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-odd\"\u003e\n      \u003ctd\u003e\u003ccode\u003eExtraCommunicationDelays\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Add extra message delays to communication channels.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"row-even\"\u003e\n      \u003ctd\u003emiscellaneous\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003eRepeatedRewardIndividualDone\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Repeat the \u003ccode\u003ereward\u003c/code\u003e field and assign individual \u003ccode\u003edone\u003c/code\u003e field of \u003ccode\u003estep()\u003c/code\u003e, which is similar to \u003ca href=\"https://github.com/openai/multiagent-particle-envs\"\u003eMPE\u003c/a\u003e.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\nYou can create an environment with multiple wrappers at once. For example:\n\n```python\nenv = mate.make('MultiAgentTracking-v0',\n                wrappers=[\n                    mate.EnhancedObservation,\n                    mate.MoreTrainingInformation,\n                    mate.WrapperSpec(mate.DiscreteCamera, levels=5),\n                    mate.WrapperSpec(mate.MultiCamera, target_agent=mate.GreedyTargetAgent(seed=0)),\n                    mate.RepeatedRewardIndividualDone,\n                    mate.WrapperSpec(mate.AuxiliaryCameraRewards,\n                                     coefficients={'raw_reward': 1.0,\n                                                   'coverage_rate': 1.0,\n                                                   'soft_coverage_score': 1.0,\n                                                   'baseline': -2.0}),\n                ])\n```\n\n## Implemented Algorithms\n\nThe following algorithms are implemented in [`examples`](examples):\n\n- **Rule-based:**\n\n  1. **Random** (source: [`mate/agents/random.py`](mate/agents/random.py))\n  1. **Naive** (source: [`mate/agents/naive.py`](mate/agents/naive.py))\n  1. **Greedy** (source: [`mate/agents/greedy.py`](mate/agents/greedy.py))\n  1. **Heuristic** (source: [`mate/agents/heuristic.py`](mate/agents/heuristic.py))\n\n- **Multi-Agent Reinforcement Learning Algorithms:**\n\n  1. **IQL** (\u003chttps://arxiv.org/abs/1511.08779\u003e)\n  1. **QMIX** (\u003chttps://arxiv.org/abs/1803.11485\u003e)\n  1. **MADDPG** (MA-TD3) (\u003chttps://arxiv.org/abs/1706.02275\u003e)\n  1. **IPPO** (\u003chttps://arxiv.org/abs/2011.09533\u003e)\n  1. **MAPPO** (\u003chttps://arxiv.org/abs/2103.01955\u003e)\n\n- _Multi-Agent Reinforcement Learning Algorithms_ with **Multi-Agent Communication:**\n\n  1. **TarMAC** (base algorithm: IPPO) (\u003chttps://arxiv.org/abs/1810.11187\u003e)\n  1. **TarMAC** (base algorithm: MAPPO)\n  1. **I2C** (base algorithm: MAPPO) (\u003chttps://arxiv.org/abs/2006.06455\u003e)\n\n- **Population Based Adversarial Policy Learning**, available meta-solvers:\n\n  1. Self-Play (SP)\n  1. Fictitious Self-Play (FSP) (\u003chttps://proceedings.mlr.press/v37/heinrich15.html\u003e)\n  1. PSRO-Nash (NE) (\u003chttps://arxiv.org/abs/1711.00832\u003e)\n\n**NOTE:** all learning-based algorithms are tested with [Ray 1.12.0](https://github.com/ray-project/ray) on Ubuntu 20.04 LTS.\n\n## Citation\n\nIf you find MATE useful, please consider citing:\n\n```bibtex\n@inproceedings{pan2022mate,\n  title     = {{MATE}: Benchmarking Multi-Agent Reinforcement Learning in Distributed Target Coverage Control},\n  author    = {Xuehai Pan and Mickel Liu and Fangwei Zhong and Yaodong Yang and Song-Chun Zhu and Yizhou Wang},\n  booktitle = {Thirty-sixth Conference on Neural Information Processing Systems Datasets and Benchmarks Track},\n  year      = {2022},\n  url       = {https://openreview.net/forum?id=SyoUVEyzJbE}\n}\n```\n\n## License\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxuehaipan%2Fmate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxuehaipan%2Fmate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxuehaipan%2Fmate/lists"}