Lightweight environments to study hierarchical reasoning
Project description
Crafting - An environement builder for hierarchical ML research
But what is Crafting ?
Crafting is NOT an environment, it's an environment builder.
Crafting allows to generate arbitrarely hierarchical environments for machine learning research purposes.
It uses the classic reinforcement learning framework, player is in a state and can take actions to update the state.
A Crafting environment is a sandbox environment composed of items, zones, and transformations.
The main example of Crafting environment is the MineCrafting environment that mimics the (complex) hierarchies of the popular game Minecraft.
You can use Crafting to create your own customized environments. For more examples, see examples.
Installation
Using pip.
Without optional dependencies:
pip install irll-crafting
With all optional dependencies:
pip install irll-crafting[all]
All crafting environments can use a common graphical user interface. With gui requirements:
pip install irll-crafting[gui]
Environment can also be obtained throught the gym interface: With gym requirements:
pip install irll-crafting[gym]
Build from source (for contributions)
git clone https://github.com/IRLL/Crafting.git
Install crafting as an editable package
pip install -e .[all]
Install dev requirements
pip install -r requirements-dev.txt
Check installation by running tests
pytest
Quickstart
Play MineCrafting yourself! (need gui dependencies)
Using the command line interface:
crafting minecraft
See more options with:
crafting --help
Using the programmatic interface:
from crafting import MineCraftingEnv, get_human_action
env = MineCraftingEnv()
# or env: MineCraftingEnv = gym.make("MineCrafting-NoReward-v1")
n_episodes = 2
for _ in range(n_episodes):
env.reset()
done = False
total_reward = 0
while not done:
env.render()
action = get_human_action(env)
print(f"Human pressed: {env.world.transformations[action]}")
_observation, reward, done, _info = env.step(action)
total_reward += reward
print(f"SCORE: {total_reward}")
Run MineCrafting with autonomous agents
Using the programmatic interface, any Crafting environment can easily be interfaced with any agent.
import numpy as np
from crafting import MineCraftingEnv
def random_legal_agent(observation, action_is_legal):
action = np.random.choice(np.nonzero(action_is_legal)[0])
return action
env = MineCraftingEnv(max_step=10)
done = False
observation = env.reset()
while not done:
action_is_legal = env.actions_mask
action = random_legal_agent(observation, action_is_legal)
_observation, _reward, done, _info = env.step(action)
Other crafting environments
See crafting.examples
.
from crafting import TowerCrafting, RecursiveCrafting, RandomCrafting
tower_env = TowerCrafting(height=3, width=2)
# or tower_env = gym.make("TowerCrafting-v1", height=3, width=2)
recursive_env = RecursiveCrafting(n_items=6)
# or recursive_env = gym.make("RecursiveCrafting-v1", n_items=6)
random_env = RandomCrafting(n_items_per_n_inputs={0:2, 1:5, 2:10}, seed=42)
# or random_env = gym.make("RandomCrafting-v1", n_items_per_n_inputs={0:2, 1:5, 2:10}, seed=42)
More about Crafting
Add a Purpose to the player
See crafting.purpose
.
Get a solving behavior for any given task
See crafting.solving_behaviors
.
Details of the environment state
See crafting.state
.
Plot the underlying requirements graph
Create your own customized Crafting environment
See crafting.env
.
Find everything in the documentation:
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
File details
Details for the file irll-crafting-1.0.2.tar.gz
.
File metadata
- Download URL: irll-crafting-1.0.2.tar.gz
- Upload date:
- Size: 7.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 417dc63765e56d4d36ffac74dec325f62a4a95fe72bc7242df9c6c92a37d1681 |
|
MD5 | 975cc0310f16edaca4e294f8c6b4ee5f |
|
BLAKE2b-256 | 7fb5202e503f07479f356aa38e90bb93a02626823784402454a9b42a8fad2c73 |
File details
Details for the file irll_crafting-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: irll_crafting-1.0.2-py3-none-any.whl
- Upload date:
- Size: 3.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 797bda5cf92b10c0a5c1c413da69e4cbc62f893a5f80f6dc2015776a69411a57 |
|
MD5 | 15c2a77ae749d75d59d5408f34ac7b90 |
|
BLAKE2b-256 | 554c5db97b78877b77b12e6a552f9c0ea2207f85f0b7eb855a10071ff7727b55 |