Skip to main content

A custom RL environment with C++ backend and Gymnasium wrapper.

Project description

Hybrid Shoot Environment

This environment is designed as a sanity check for reinforcement learning with hybrid action spaces (discrete + continuous). It supports both Gymnasium (single agent with hybrid actions) and PettingZoo (multi-agent decomposition).

There are num_enemies enemies in a 2D space. The goal is to Jam and Shoot them.

Installation

pip install .

Gymnasium Usage

The Gymnasium environment presents a single agent with a Tuple action space.

from hybrid_shoot import HybridShootEnv

env = HybridShootEnv()
obs, info = env.reset()
# Action: (Jam_Target_Index, [Shoot_X, Shoot_Y])
action = (0, [0.5, 0.5]) 
obs, reward, done, truncated, info = env.step(action)

Action Space (Gymnasium)

A spaces.Tuple containing:

  1. Jam: Discrete(num_enemies) - Selects which enemy to jam.
  2. Shoot: Box(low=0, high=map_size, shape=(2,)) - [x, y] coordinates to shoot at.

PettingZoo Usage

The PettingZoo environment decomposes the task into two cooperating agents.

from hybrid_shoot import HybridShootPettingZooEnv

env = HybridShootPettingZooEnv()
observations, infos = env.reset()

Agents & Action Spaces (PettingZoo)

  1. jammer: Discrete(num_enemies) - Selects which enemy to jam.
  2. shooter: Box(low=0, high=map_size, shape=(2,)) - Selects the [x, y] coordinates.

Game Mechanics

Jamming: Stops the targeted enemy from dealing damage this turn. Shooting: Fires at location (x, y).

  • Standard Mode (independent_mode=False): An enemy must be jammed to be vulnerable to shooting. Shooting an unjammed enemy does nothing (or incurs a penalty).
  • Independent Mode (independent_mode=True): Jamming prevents damage, and Shooting kills enemies regardless of whether they are jammed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hybrid_shoot-0.1.3.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hybrid_shoot-0.1.3-cp312-cp312-win_amd64.whl (85.8 kB view details)

Uploaded CPython 3.12Windows x86-64

File details

Details for the file hybrid_shoot-0.1.3.tar.gz.

File metadata

  • Download URL: hybrid_shoot-0.1.3.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for hybrid_shoot-0.1.3.tar.gz
Algorithm Hash digest
SHA256 c4cc3dfc38da980c4290cd4b75c4338fcca367d7a9855b5314b67b1cd38fa5eb
MD5 8bffe6306f26563c615f8657033381d1
BLAKE2b-256 6d13ab8ddc6698b7e27bb894b714b24587a61afee12f4a9ad77521c570533f6d

See more details on using hashes here.

File details

Details for the file hybrid_shoot-0.1.3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for hybrid_shoot-0.1.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cb1a848b49c7fb835a71bfcf58e49828c508fa5034c1f910d9bdf365cdad0f1e
MD5 2471c1fd0538b65649482d7ea2253bff
BLAKE2b-256 1e52333f5c34a507897796488b6918ae626205c9910801ec8d5c9895494472ac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page