Source code for alf.environments.suite_simple

# Copyright (c) 2019 Horizon Robotics. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Suite for simple environments defined by ALF"""

import gym
import numpy as np

import alf
from alf.environments import suite_gym
from alf.environments.simple.noisy_array import NoisyArray
from alf.environments.simple.stochastic_with_risky_branch import StochasticWithRiskyBranch
from alf.environments.object_centric.bouncing_squares import BouncingSquares
from alf.environments.gym_wrappers import FrameSkip, FrameStack


[docs]@alf.configurable def load(game, env_id=None, env_args=dict(), discount=1.0, frame_skip=None, frame_stack=None, gym_env_wrappers=(), alf_env_wrappers=(), max_episode_steps=0): """Loads the specified simple game and wraps it. Args: game (str): name for the environment to load. The game should have been defined in the sub-directory ``./simple/``. env_args (dict): extra args for creating the game. discount (float): discount to use for the environment. frame_skip (int): the time interval at which the agent experiences the game. frame_stack (int): stack so many latest frames as the observation input. gym_env_wrappers (list): list of gym env wrappers. alf_env_wrappers (list): list of ALF env wrappers. max_episode_steps (int): max number of steps for an episode. Returns: An AlfEnvironment instance. """ if game == "NoisyArray": env = NoisyArray(**env_args) elif game == "StochasticWithRiskyBranch": env = StochasticWithRiskyBranch(**env_args) elif game == "BouncingSquares": env = BouncingSquares(**env_args) else: assert False, "No such simple environment!" if frame_skip: env = FrameSkip(env, frame_skip) if frame_stack: env = FrameStack(env, stack_size=frame_stack) return suite_gym.wrap_env( env, env_id=env_id, discount=discount, max_episode_steps=max_episode_steps, gym_env_wrappers=gym_env_wrappers, alf_env_wrappers=alf_env_wrappers, auto_reset=True)