Skip to main content

Lightweight environments to study hierarchical reasoning

Project description

Crafting - An environement builder for hierarchical ML research

Fury - PyPi stable version PePy - Downloads PePy - Downloads per week Licence - GPLv3

Codacy - grade Codacy - coverage CodeStyle - Black CodeStyle - Ruff

But what is Crafting ?

Crafting is NOT an environment, it's an environment builder.

Crafting allows to generate arbitrarily hierarchical environments for machine learning research purposes.

It uses the classic reinforcement learning framework, the 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.

A player knowing Minecraft will find MineCrafting easy.

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.action_masks()
    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

See crafting.requirements.

Create your own customized Crafting environment

See crafting.env.

Find everything in the documentation:

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

irll-crafting-1.0.7.tar.gz (7.4 MB view details)

Uploaded Source

Built Distribution

irll_crafting-1.0.7-py3-none-any.whl (3.8 MB view details)

Uploaded Python 3

File details

Details for the file irll-crafting-1.0.7.tar.gz.

File metadata

  • Download URL: irll-crafting-1.0.7.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

Hashes for irll-crafting-1.0.7.tar.gz
Algorithm Hash digest
SHA256 e597f306bf00f158be07c3371426f64c82c4e2d29640723d46bd4ca545c94fa4
MD5 a9b73d8a7eed1860b213703217cddd96
BLAKE2b-256 b3c556d42d116d4e7ae521dae40a0379cac3d9c5b53a83ec52742568fa88fad9

See more details on using hashes here.

File details

Details for the file irll_crafting-1.0.7-py3-none-any.whl.

File metadata

File hashes

Hashes for irll_crafting-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 07b80c61855e0c866b09b7385df92db12b256b70af019c44428c373eda71b7de
MD5 41d605eb73af64298cf2388c20f5cfd8
BLAKE2b-256 cf053938d6bf78b0737094d379da943c790baba1aca68ba27d514cd202760e70

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page