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:
- Jam:
Discrete(num_enemies)- Selects which enemy to jam. - 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)
jammer:Discrete(num_enemies)- Selects which enemy to jam.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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hybrid_shoot-0.1.2.tar.gz.
File metadata
- Download URL: hybrid_shoot-0.1.2.tar.gz
- Upload date:
- Size: 13.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c4afdf8c64a839eb778114ec99be346a1f522ecbc1f4b17c27d3697703b752d
|
|
| MD5 |
e3e67cb7355c02b2b4cf8f364589799d
|
|
| BLAKE2b-256 |
546c7aaedb0a90f14fea5380b849ef3d7f8655049ba0cb016e6c51f3e2751ff9
|
File details
Details for the file hybrid_shoot-0.1.2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: hybrid_shoot-0.1.2-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 85.7 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e3042c7a61e13ba1ea95376edba7487e1f4738508e15ac6515767c0706813acf
|
|
| MD5 |
c2575c68aa641512ddc3a43b1c34ff1a
|
|
| BLAKE2b-256 |
b353ae68a6bc94e21dcf5bf9780cdcb51556d1d728146645a2e5d8f3991864bf
|