Skip to content
Back to skills

Vmas Simulator Guide

ASecurity

Vectorized multi-agent reinforcement learning simulator

  • 3,639 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 6, 2026
researchpythongobashtestinggitapi

Works with

  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned June 6, 2026

npx -y skills add brycewang-stanford/Auto-Empirical-Research-Skills --skill vmas-simulator-guide --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Vmas Simulator Guide?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Vmas Simulator Guide
[![Security: A โ€” Skills Directory](https://www.skillsdirectory.com/api/skills/brycewang-stanford-vmas-simulator-guide/badge)](https://www.skillsdirectory.com/skills/brycewang-stanford-vmas-simulator-guide)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: vmas-simulator-guide
description: "Vectorized multi-agent reinforcement learning simulator"
metadata:
  openclaw:
    emoji: "๐ŸŽฎ"
    category: "domains"
    subcategory: "ai-ml"
    keywords: ["multi-agent RL", "VMAS", "simulator", "reinforcement learning", "vectorized", "cooperative"]
    source: "https://github.com/proroklab/VectorizedMultiAgentSimulator"
---

# VMAS: Vectorized Multi-Agent Simulator Guide

## Overview

VMAS is a vectorized simulator for multi-agent reinforcement learning (MARL) that runs thousands of parallel environments on GPU via PyTorch. It provides a diverse set of 2D cooperative, competitive, and mixed scenarios for benchmarking multi-agent algorithms. Orders of magnitude faster than CPU-based simulators, enabling rapid research iteration on multi-agent coordination problems.

## Installation

```bash
pip install vmas
```

## Quick Start

```python
import vmas

# Create vectorized environment
env = vmas.make_env(
    scenario="simple_spread",
    num_envs=1024,         # Parallel environments
    num_agents=3,
    device="cuda",         # GPU acceleration
    continuous_actions=True,
)

# Environment loop
obs = env.reset()
for step in range(100):
    # Random actions for demonstration
    actions = [env.action_space[i].sample()
               for i in range(env.n_agents)]

    obs, rewards, dones, infos = env.step(actions)
    # obs: list of [num_envs, obs_dim] tensors
    # rewards: list of [num_envs] tensors
```

## Scenarios

| Scenario | Type | Agents | Description |
|----------|------|--------|-------------|
| **simple_spread** | Cooperative | 3 | Cover N landmarks |
| **simple_tag** | Competitive | 4 | Predator-prey |
| **transport** | Cooperative | 4 | Move package to goal |
| **wheel** | Cooperative | 4 | Coordination on wheel |
| **flocking** | Cooperative | 5+ | Reynolds flocking |
| **discovery** | Cooperative | 3 | Explore and discover |
| **navigation** | Mixed | N | Multi-agent navigation |

## Integration with MARL Libraries

```python
# With TorchRL
from torchrl.envs import VmasEnv

env = VmasEnv(
    scenario="simple_spread",
    num_envs=512,
    device="cuda",
)

# With RLlib
from ray.rllib.env import MultiAgentEnv
# VMAS provides RLlib-compatible wrapper

# With CleanRL / custom training
import torch

env = vmas.make_env("transport", num_envs=2048, device="cuda")
obs = env.reset()

# All tensors on GPU โ€” train directly without CPU transfer
policy_output = policy_network(obs[0])  # Agent 0 observations
```

## Custom Scenarios

```python
from vmas import Scenario, Agent, World, Landmark

class MyScenario(Scenario):
    def make_world(self, batch_dim, device):
        world = World(batch_dim=batch_dim, device=device)
        world.add_agent(Agent(name="agent_0"))
        world.add_agent(Agent(name="agent_1"))
        world.add_landmark(Landmark(name="goal"))
        return world

    def reset_world(self, env, world):
        # Randomize positions
        for agent in world.agents:
            agent.set_pos(torch.rand(env.batch_dim, 2) * 2 - 1)

    def reward(self, agent, world):
        # Distance to goal
        goal = world.landmarks[0]
        return -torch.linalg.norm(agent.state.pos - goal.state.pos,
                                   dim=-1)

# Register and use
env = vmas.make_env(MyScenario(), num_envs=512)
```

## Use Cases

1. **MARL research**: Benchmark multi-agent algorithms
2. **Cooperative learning**: Study emergent coordination
3. **Scalability testing**: GPU-accelerated parallel training
4. **Custom scenarios**: Design domain-specific multi-agent tasks
5. **Education**: Teach multi-agent RL concepts

## References

- [VMAS GitHub](https://github.com/proroklab/VectorizedMultiAgentSimulator)
- [VMAS Paper](https://arxiv.org/abs/2207.03530)
- [BenchMARL](https://github.com/facebookresearch/BenchMARL)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading commentsโ€ฆ