Skip to main content

A Gymnasium environment for maze-based reinforcement learning

Project description

MazeGym

codecov PyPI version

A Gymnasium env for training reinforcement learning agents to navigate mazes.

Library used: GitHub.

9x9 maze

Random moves are used for this demo.

Maze9x9

21x21 maze

Random moves are used for this demo.

Maze21x21

35x15 maze

Random moves are used for this demo.

Maze35x15

Usage

Initiating the env via gym

import gymnasium as gym
import mazegym

env_9x9_random = gym.make('Maze9x9Random-v0')
env_35x15_random = gym.make('Maze35x15Random-v0')

env_5x5_fixed = gym.make('Maze5x5Fixed-v0')
env_3x7_fixed = gym.make('Maze3x7Fixed-v0')

Initiating the env directly

from mazegym import MazeEnvironment

#Random env
env_random = MazeEnvironment(width=10, height=5)

# Fixed env
fixed_grid = np.ones((3, 7), dtype=np.int8)
fixed_grid[1, :] = 0
fixed_grid[1, 0] = 2
fixed_grid[1, 6] = 3
env_fixed = MazeEnvironment(grid=grid)

Making moves

import gymnasium as gym

env_35x15_random = gym.make('Maze35x15Random-v0')

# Reset the environment
observation, info = env_35x15_random.reset()

# Make a random valid move

valid_moves = info.get("valid_moves")
move = random.choice(valid_moves)
observation, reward, done, truncated, info = env_35x15_random.step(move)

# Render the environment. The only render mode is 'human' which renders visual output.
env_35x15_random.render()

# Close the environment
env_35x15_random.close()

Configurable parameters:

  • width: width of maze.
  • height: height of maze.
  • grid: User for custom mazes.
  • vision_range: Range of tiles your agent can see forward. Agent only sees forward and remembers previously visited tiles. If vision_range is not specified all map is visible.
  • wall_path_swap: Tuple accepting two elements. Allows environment randomness making a wall become a path and a path become a wall. First value is the transformation chance. The second value is the frequency of transformations. No effects if tuple value is None.
  • max_steps: Maximum steps until episode terminates. Defaults to: (3 × width × height).

Either width and height or grid is required. Width ang height are used for random mazes while grid is used for custom mazes.

Environment Details

  • Action Space: Discrete(4) - Four possible actions: 0 (up), 1 (right), 2 (down), 3 (left). Invalid moves (moving into walls) results in an error.
  • Observation Space: Box(0, 3, (height, width), int8). Contains values: 0 for empty paths, 1 for walls, 2 for the agent, 3 for the goal.
  • Reward: 100 if the goal is reached, -1 for each step taken. -2 for an illegal move.
  • Done: True if the agent reaches the goal, False otherwise.
  • Truncated: True if maximum steps are exceeded, False otherwise.

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

mazegym-1.2.2.tar.gz (20.8 kB view details)

Uploaded Source

Built Distribution

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

mazegym-1.2.2-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file mazegym-1.2.2.tar.gz.

File metadata

  • Download URL: mazegym-1.2.2.tar.gz
  • Upload date:
  • Size: 20.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mazegym-1.2.2.tar.gz
Algorithm Hash digest
SHA256 f4c10da85e75a4b19ff8f13fb8cf335bb485edd0ca66ff5071c706f2eb5e80f6
MD5 abfd3821d0887aed719ae2cffb0a1fa5
BLAKE2b-256 956c1feb61c63ee1c918eab37ce0f779fce29e6496ae6868bb092574baef8e93

See more details on using hashes here.

File details

Details for the file mazegym-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: mazegym-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mazegym-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ffd36ca3d6c8fc5ab03d4b732c8ef2990125b444804001c4ceb0c00483f51206
MD5 f8fc87721f86771b380d0f9a24cd45ce
BLAKE2b-256 57176b20008d410bed445d1de5997606cc4d352c5e6440b8882264ca2a65f7eb

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