RubiksCubeGym
An OpenAI Gym environment for various twisty puzzles.
Currently available environments:
- 2x2x2 Pocket Rubik's Cube
- Pyraminx
- Skewb
Citation
@article{hukmani2021solving,
title={Solving Twisty Puzzles Using Parallel Q-learning.},
author={Hukmani, Kavish and Kolekar, Sucheta and Vobugari, Sreekumar},
journal={Engineering Letters},
volume={29},
number={4},
year={2021}
}
Details:
2x2x2 Pocket Rubik's Cube
| Action Space | Discrete(3) |
| Observation Space | Discrete(3674160) |
| Actions | F, R, U |
| Rewards | (-inf, 100] |
| Max steps | 250 |
| Reward Types | Base, Layer By Layer Method, Ortega Method |
| Render Modes | 'human', 'rgb_array', 'ansi' |
Pyraminx without tips
| Action Space | Discrete(4) |
| Observation Space | Discrete(933120) |
| Actions | L, R, U, B |
| Rewards | (-inf, 100] |
| Max steps | 250 |
| Reward Types | Base, Layer by Layer Method |
| Render Modes | 'human', 'rgb_array', 'ansi' |
Skewb
| Action Space | Discrete(4) |
| Observation Space | Discrete(3149280) |
| Actions | L, R, U, B |
| Rewards | (-inf, 100] |
| Max steps | 250 |
| Reward Types | Base, Sarah's Method(Advanced) |
| Render Modes | 'human', 'rgb_array', 'ansi' |
Installation
Via PyPI
pip install rubiks-cube-gym
Or build from source
git clone https://github.com/DoubleGremlin181/RubiksCubeGym.git
cd RubiksCubeGym
pip install -e .
Requirements
- gym
- numpy
- opencv-python
- wget
Scrambling
You can pass the scramble as a parameter for the reset function
self.reset(scramble="R U R' U'")
The scramble should follow the WCA Notation
Example
import gym
import rubiks_cube_gym
env = gym.make('rubiks-cube-222-lbl-v0')
env.reset(scramble="R U R' U' R' F R2 U' R' U' R U R' F'")
for _ in range(4):
env.render()
print(env.step(1))
env.render(render_time=0)
env.close()
(3178426, -26, False, {'cube': array([ 0, 9, 2, 15, 4, 5, 6, 21, 16, 10, 1, 11, 12, 13, 14, 23, 17, 7, 3, 19, 20, 18, 22, 8], dtype=uint8), 'cube_reduced': 'WRWGOOGYRBWBOOGYRGWBYBYR'})
(1542962, -1, False, {'cube': array([ 0, 21, 2, 23, 4, 5, 6, 18, 17, 16, 15, 11, 12, 13, 14, 8, 7, 10, 9, 19, 20, 3, 22, 1], dtype=uint8), 'cube_reduced': 'WYWYOOGBRRGBOOGRGBRBYWYW'})
(1682970, -1, False, {'cube': array([ 0, 18, 2, 8, 4, 5, 6, 3, 7, 17, 23, 11, 12, 13, 14, 1, 10, 16, 21, 19, 20, 9, 22, 15], dtype=uint8), 'cube_reduced': 'WBWROOGWGRYBOOGWBRYBYRYG'})
(2220193, 25, False, {'cube': array([ 0, 3, 2, 1, 4, 5, 6, 9, 10, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], dtype=uint8), 'cube_reduced': 'WWWWOOGRBGRBOOGGRRBBYYYY'})
You can find my implementation and results using Parallel Q-learning here.
Metadata
Release files for rubiks-cube-gym 0.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rubiks_cube_gym-0.5.2.tar.gz | 9.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rubiks_cube_gym-0.5.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.8 kB
Release files / rubiks_cube_gym-0.5.2.tar.gz
| Download URL | rubiks_cube_gym-0.5.2.tar.gz |
|---|---|
| Size | 9.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fedfde7dcd24c4c333342415648a4b87f3b94c6ac9096c2f3621930c526c08da
|
|
BLAKE2b-256 checksum How to use checksums |
6d3e5bccf8682617630b432574c9e087b6096e1a0f17fca8ce6ceebb48a496d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.13
|
Release files / rubiks_cube_gym-0.5.2-py3-none-any.whl
| Download URL | rubiks_cube_gym-0.5.2-py3-none-any.whl |
|---|---|
| Size | 13.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bf04565afa3b6522141dd70f1be611a7767b994c4a51f27d3e44bd5f2d0961cc
|
|
BLAKE2b-256 checksum How to use checksums |
5c864c838482fe0d17237f327571d61c4cf78be19bf6e2fca92652d715c4babb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.13
|