MiniCraft - Empty

Reproduces the minigrid Empty gridworld environment as a HierarchyCraft environment.

Minigrid representation:

HierarchyCraft requirements graph:

 1from typing import List
 2
 3from hcraft.elements import Item, Zone
 4from hcraft.task import GetItemTask
 5from hcraft.transformation import Transformation, Use, Yield, PLAYER, CURRENT_ZONE
 6
 7from hcraft.examples.minicraft.minicraft import MiniCraftEnv
 8
 9
10MINICRAFT_NAME = "Empty"
11__doc__ = MiniCraftEnv.description(MINICRAFT_NAME, for_module_header=True)
12
13
14class MiniHCraftEmpty(MiniCraftEnv):
15    MINICRAFT_NAME = MINICRAFT_NAME
16    __doc__ = MiniCraftEnv.description(MINICRAFT_NAME)
17
18    ROOM = Zone("room")
19    """The one and only room."""
20
21    GOAL = Item("goal")
22    """Goal to reach."""
23
24    def __init__(self, **kwargs) -> None:
25        self.task = GetItemTask(self.GOAL)
26        super().__init__(
27            self.MINICRAFT_NAME,
28            purpose=self.task,
29            start_zone=self.ROOM,
30            **kwargs,
31        )
32
33    def build_transformations(self) -> List[Transformation]:
34        find_goal = Transformation(
35            "find_goal",
36            inventory_changes=[Yield(CURRENT_ZONE, self.GOAL, max=0)],
37            zone=self.ROOM,
38        )
39
40        reach_goal = Transformation(
41            "reach_goal",
42            inventory_changes=[
43                Use(CURRENT_ZONE, self.GOAL, consume=1),
44                Yield(PLAYER, self.GOAL),
45            ],
46        )
47        return [find_goal, reach_goal]

API Documentation

MINICRAFT_NAME = 'Empty'
class MiniHCraftEmpty(typing.Generic[~ObsType, ~ActType]):
15class MiniHCraftEmpty(MiniCraftEnv):
16    MINICRAFT_NAME = MINICRAFT_NAME
17    __doc__ = MiniCraftEnv.description(MINICRAFT_NAME)
18
19    ROOM = Zone("room")
20    """The one and only room."""
21
22    GOAL = Item("goal")
23    """Goal to reach."""
24
25    def __init__(self, **kwargs) -> None:
26        self.task = GetItemTask(self.GOAL)
27        super().__init__(
28            self.MINICRAFT_NAME,
29            purpose=self.task,
30            start_zone=self.ROOM,
31            **kwargs,
32        )
33
34    def build_transformations(self) -> List[Transformation]:
35        find_goal = Transformation(
36            "find_goal",
37            inventory_changes=[Yield(CURRENT_ZONE, self.GOAL, max=0)],
38            zone=self.ROOM,
39        )
40
41        reach_goal = Transformation(
42            "reach_goal",
43            inventory_changes=[
44                Use(CURRENT_ZONE, self.GOAL, consume=1),
45                Yield(PLAYER, self.GOAL),
46            ],
47        )
48        return [find_goal, reach_goal]

Reproduces the minigrid Empty gridworld environment as a HierarchyCraft environment.

MiniHCraftEmpty(**kwargs)
25    def __init__(self, **kwargs) -> None:
26        self.task = GetItemTask(self.GOAL)
27        super().__init__(
28            self.MINICRAFT_NAME,
29            purpose=self.task,
30            start_zone=self.ROOM,
31            **kwargs,
32        )
Arguments:
  • invalid_reward: Reward given to the agent for invalid actions. Defaults to -1.0.
  • max_step: Maximum number of steps before episode truncation. If None, never truncates the episode. Defaults to None.
  • render_window: Window using to render the environment with pygame.
MINICRAFT_NAME = 'Empty'
ROOM = Zone(name='room')

The one and only room.

GOAL = Item(name='goal')

Goal to reach.

task
def build_transformations(self) -> List[hcraft.Transformation]:
34    def build_transformations(self) -> List[Transformation]:
35        find_goal = Transformation(
36            "find_goal",
37            inventory_changes=[Yield(CURRENT_ZONE, self.GOAL, max=0)],
38            zone=self.ROOM,
39        )
40
41        reach_goal = Transformation(
42            "reach_goal",
43            inventory_changes=[
44                Use(CURRENT_ZONE, self.GOAL, consume=1),
45                Yield(PLAYER, self.GOAL),
46            ],
47        )
48        return [find_goal, reach_goal]

Build transformations for this MiniCraft environment

Inherited Members
hcraft.examples.minicraft.minicraft.MiniCraftEnv
description
hcraft.env.HcraftEnv
world
invalid_reward
max_step
name
render_window
render_mode
state
current_step
current_score
cumulated_score
episodes
task_successes
terminal_successes
purpose
metadata
truncated
observation_space
action_space
action_masks
step
render
reset
close
all_behaviors
solving_behavior
planning_problem
infos
gymnasium.core.Env
spec
unwrapped
np_random_seed
np_random
has_wrapper_attr
get_wrapper_attr
set_wrapper_attr