Gym for the Snake Game
Project description
1. pysnakegym
The pysnakegym
project provides a gym environment for developing reinforcement
learning algorithms for the game of snake.
2. Installation
To get started, you need to have Python 3.6+ installed. The pysnakegym
package
can simply be installed with pip
.
pip install pysnakegym
3. How to use
Below is an example of how to use the gym. To interface with the game of snake, the SnakeMDP
object representing
a Markov Decision Process (MDP) is used.
from pysnakegym.mdp import SnakeMDP
mdp = SnakeMDP()
state, reward, done = mdp.reset()
while not done:
state_, reward, done = mdp.step(action=choose_action(state))
state = state_
The reset
method of the mdp
returns a triplet consisting of the following:
state
(numpy array): the start state of the MDP. Depending on the state representation
the shape and size will vary.
-
reward
(float): the initial reward of the MDP. -
done
(bool): whether the game is finished or not. Always returnsfalse
for thereset
method.
The step
method of the mdp
takes an action and returns a triplet consisting of the following:
-
state
(numpy array): the state of the MDP that was observed after the stepwas taken. Depending on the state representation the shape and size will vary.
-
reward
(float): the reward observed after the step has been taken. -
done
(bool): whether the game is finished or not. Returnstrue
ifstate
is a
final state, false
if it is not.
The step
method is a representation of the agent-environment
interaction that
constitutes an MDP. The agent chooses an action to be taken in the environment and in return observes
a new state and a reward.
4. State Representation
The state that the snake receives as input can be represented in many different ways. When choosing
a state representation, one must make a tradeoff between keeping the state lightweight so that
the neural network is not too complex and encoding enough information so that the snake is able
to make the right decisions for the right state. Abstracting away information means that
the set of possible states the snake can find itself in becomes smaller, however it also means
that some granularity is lost. Likewise, encoding unnecessary information blows up the set of
possible states that the snake will have to learn the correct output for.
4.1 Choosing Necessary Information
When selecting the information that should be included in the state representation it is helpful to think
how you as a human would play the game. Things you would want to know are the direction the snake
is currently moving in, where the obstacles are relative to the head of the snake, and where the
food is relative to the snake's head.
4.2 Available States
There are a number of state representations available to choose from:
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file pysnakegym-0.0.13.tar.gz
.
File metadata
- Download URL: pysnakegym-0.0.13.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.6.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f29f42afffeaf15d5fdb4dc3ea8196818f9f4e8173be41322cd55cbc5217045b |
|
MD5 | a9b07c02ea5f7f71d6939084ef5ab7b8 |
|
BLAKE2b-256 | e33a5e12651b3b1acb26942d3a492b530a6c8cf97dedb4f701c38f2fbe5a3efc |
File details
Details for the file pysnakegym-0.0.13-py3-none-any.whl
.
File metadata
- Download URL: pysnakegym-0.0.13-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.6.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac430c36efc304041f56c604fec68bafecd9b8fbed239c710f8a3fdc0952186e |
|
MD5 | 4f4fc4080143d579283d7629ece9134e |
|
BLAKE2b-256 | 65f7ee27ba7b70160307c51072bd08ff7b19edf20bba95d1331e6a4a86f4a0f4 |