예제 #1
0
파일: test_utils.py 프로젝트: yukw777/gata
def test_load_textworld_games():
    request_infos = EnvInfos()
    request_infos.admissible_commands = True
    request_infos.description = False
    request_infos.location = False
    request_infos.facts = False
    request_infos.last_action = False
    request_infos.game = True

    max_episode_steps = 100
    batch_size = 5
    name = "test"

    base_dir = "test-data/rl_games/"
    env = load_textworld_games(
        [
            f"{base_dir}tw-cooking-recipe1+take1+cook+open-BNVaijeLTn3jcvneFBY2.z8",
            f"{base_dir}tw-cooking-recipe1+take1+open-BNVaijeLTn3jcvneFBY2.z8",
            f"{base_dir}tw-cooking-recipe1+take1+cook+open-BNVaijeLTn3jcvneFBY2.z8",
            f"{base_dir}tw-cooking-recipe1+take1+open-BNVaijeLTn3jcvneFBY2.z8",
        ],
        name,
        request_infos,
        max_episode_steps,
        batch_size,
    )
    assert len(env.gamefiles) == 4
    assert env.request_infos == request_infos
    assert env.batch_size == batch_size
    # for some reason env.spec.max_episode_steps is None
    # assert env.spec.max_episode_steps == max_episode_steps
    assert env.spec.id.split("-")[1] == name
예제 #2
0
def request_infos_for_eval() -> EnvInfos:
    request_infos = EnvInfos()
    request_infos.admissible_commands = True
    request_infos.description = True
    request_infos.location = True
    request_infos.facts = True
    request_infos.last_action = True
    request_infos.game = True
    return request_infos
예제 #3
0
    def select_additional_infos(self) -> EnvInfos:
        """
        Returns what additional information should be made available at each game step.

        Requested information will be included within the `infos` dictionary
        passed to `CustomAgent.act()`. To request specific information, create a
        :py:class:`textworld.EnvInfos <textworld.envs.wrappers.filter.EnvInfos>`
        and set the appropriate attributes to `True`. The possible choices are:

        * `description`: text description of the current room, i.e. output of the `look` command;
        * `inventory`: text listing of the player's inventory, i.e. output of the `inventory` command;
        * `max_score`: maximum reachable score of the game;
        * `objective`: objective of the game described in text;
        * `entities`: names of all entities in the game;
        * `verbs`: verbs understood by the the game;
        * `command_templates`: templates for commands understood by the the game;
        * `admissible_commands`: all commands relevant to the current state;

        In addition to the standard information, game specific information
        can be requested by appending corresponding strings to the `extras`
        attribute. For this competition, the possible extras are:

        * `'recipe'`: description of the cookbook;
        * `'walkthrough'`: one possible solution to the game (not guaranteed to be optimal);

        Example:
            Here is an example of how to request information and retrieve it.

            >>> from textworld import EnvInfos
            >>> request_infos = EnvInfos(description=True, inventory=True, extras=["recipe"])
            ...
            >>> env = gym.make(env_id)
            >>> ob, infos = env.reset()
            >>> print(infos["description"])
            >>> print(infos["inventory"])
            >>> print(infos["extra.recipe"])

        Notes:
            The following information *won't* be available at test time:

            * 'walkthrough', 'facts'
        """
        request_infos = EnvInfos()
        request_infos.description = True
        request_infos.inventory = True
        request_infos.entities = True
        request_infos.verbs = True
        request_infos.extras = ["recipe"]
        request_infos.facts = True
        request_infos.location = True
        return request_infos