Files
Gymnasium/gym/envs/__init__.py

875 lines
22 KiB
Python
Raw Normal View History

2016-04-27 08:00:58 -07:00
from gym.envs.registration import registry, register, make, spec
# Algorithmic
# ----------------------------------------
register(
2021-07-29 02:26:34 +02:00
id="Copy-v0",
entry_point="gym.envs.algorithmic:CopyEnv",
max_episode_steps=200,
2016-04-27 08:00:58 -07:00
reward_threshold=25.0,
)
register(
2021-07-29 02:26:34 +02:00
id="RepeatCopy-v0",
entry_point="gym.envs.algorithmic:RepeatCopyEnv",
max_episode_steps=200,
2016-04-27 08:00:58 -07:00
reward_threshold=75.0,
)
register(
2021-07-29 02:26:34 +02:00
id="ReversedAddition-v0",
entry_point="gym.envs.algorithmic:ReversedAdditionEnv",
kwargs={"rows": 2},
max_episode_steps=200,
2016-04-27 08:00:58 -07:00
reward_threshold=25.0,
)
register(
2021-07-29 02:26:34 +02:00
id="ReversedAddition3-v0",
entry_point="gym.envs.algorithmic:ReversedAdditionEnv",
kwargs={"rows": 3},
max_episode_steps=200,
2016-04-27 08:00:58 -07:00
reward_threshold=25.0,
)
register(
2021-07-29 02:26:34 +02:00
id="DuplicatedInput-v0",
entry_point="gym.envs.algorithmic:DuplicatedInputEnv",
max_episode_steps=200,
2016-04-27 08:00:58 -07:00
reward_threshold=9.0,
)
register(
2021-07-29 02:26:34 +02:00
id="Reverse-v0",
entry_point="gym.envs.algorithmic:ReverseEnv",
max_episode_steps=200,
2016-04-27 08:00:58 -07:00
reward_threshold=25.0,
)
# Classic
# ----------------------------------------
register(
2021-07-29 02:26:34 +02:00
id="CartPole-v0",
entry_point="gym.envs.classic_control:CartPoleEnv",
max_episode_steps=200,
2016-05-10 09:18:13 -07:00
reward_threshold=195.0,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="CartPole-v1",
entry_point="gym.envs.classic_control:CartPoleEnv",
max_episode_steps=500,
reward_threshold=475.0,
)
2016-04-27 08:00:58 -07:00
register(
2021-07-29 02:26:34 +02:00
id="MountainCar-v0",
entry_point="gym.envs.classic_control:MountainCarEnv",
max_episode_steps=200,
2016-05-10 09:18:13 -07:00
reward_threshold=-110.0,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="MountainCarContinuous-v0",
entry_point="gym.envs.classic_control:Continuous_MountainCarEnv",
max_episode_steps=999,
reward_threshold=90.0,
)
2016-04-27 08:00:58 -07:00
register(
2021-07-29 02:26:34 +02:00
id="Pendulum-v0",
entry_point="gym.envs.classic_control:PendulumEnv",
max_episode_steps=200,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="Acrobot-v1",
entry_point="gym.envs.classic_control:AcrobotEnv",
reward_threshold=-100.0,
max_episode_steps=500,
2016-04-27 08:00:58 -07:00
)
2016-05-03 22:27:42 +03:00
# Box2d
# ----------------------------------------
register(
2021-07-29 02:26:34 +02:00
id="LunarLander-v2",
entry_point="gym.envs.box2d:LunarLander",
max_episode_steps=1000,
reward_threshold=200,
2016-05-03 22:27:42 +03:00
)
register(
2021-07-29 02:26:34 +02:00
id="LunarLanderContinuous-v2",
entry_point="gym.envs.box2d:LunarLanderContinuous",
max_episode_steps=1000,
reward_threshold=200,
)
2016-05-03 22:27:42 +03:00
register(
2021-07-29 02:26:34 +02:00
id="BipedalWalker-v3",
entry_point="gym.envs.box2d:BipedalWalker",
max_episode_steps=1600,
reward_threshold=300,
2016-05-03 22:27:42 +03:00
)
register(
2021-07-29 02:26:34 +02:00
id="BipedalWalkerHardcore-v3",
entry_point="gym.envs.box2d:BipedalWalkerHardcore",
max_episode_steps=2000,
reward_threshold=300,
2016-05-03 22:27:42 +03:00
)
register(
2021-07-29 02:26:34 +02:00
id="CarRacing-v0",
entry_point="gym.envs.box2d:CarRacing",
max_episode_steps=1000,
reward_threshold=900,
)
2016-04-27 08:00:58 -07:00
# Toy Text
# ----------------------------------------
register(
2021-07-29 02:26:34 +02:00
id="Blackjack-v0",
entry_point="gym.envs.toy_text:BlackjackEnv",
)
register(
2021-07-29 02:26:34 +02:00
id="KellyCoinflip-v0",
entry_point="gym.envs.toy_text:KellyCoinflipEnv",
reward_threshold=246.61,
)
register(
2021-07-29 02:26:34 +02:00
id="KellyCoinflipGeneralized-v0",
entry_point="gym.envs.toy_text:KellyCoinflipGeneralizedEnv",
)
2016-04-27 08:00:58 -07:00
register(
2021-07-29 02:26:34 +02:00
id="FrozenLake-v0",
entry_point="gym.envs.toy_text:FrozenLakeEnv",
kwargs={"map_name": "4x4"},
max_episode_steps=100,
2021-07-29 02:26:34 +02:00
reward_threshold=0.70, # optimum = 0.74
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="FrozenLake8x8-v0",
entry_point="gym.envs.toy_text:FrozenLakeEnv",
kwargs={"map_name": "8x8"},
max_episode_steps=200,
2021-07-29 02:26:34 +02:00
reward_threshold=0.85, # optimum = 0.91
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="CliffWalking-v0",
entry_point="gym.envs.toy_text:CliffWalkingEnv",
)
register(
2021-07-29 02:26:34 +02:00
id="NChain-v0",
entry_point="gym.envs.toy_text:NChainEnv",
max_episode_steps=1000,
)
2016-04-27 08:00:58 -07:00
register(
2021-07-29 02:26:34 +02:00
id="Roulette-v0",
entry_point="gym.envs.toy_text:RouletteEnv",
max_episode_steps=100,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="Taxi-v3",
entry_point="gym.envs.toy_text:TaxiEnv",
reward_threshold=8, # optimum = 8.46
max_episode_steps=200,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="GuessingGame-v0",
entry_point="gym.envs.toy_text:GuessingGame",
max_episode_steps=200,
)
register(
2021-07-29 02:26:34 +02:00
id="HotterColder-v0",
entry_point="gym.envs.toy_text:HotterColder",
max_episode_steps=200,
)
2016-04-27 08:00:58 -07:00
# Mujoco
# ----------------------------------------
# 2D
register(
2021-07-29 02:26:34 +02:00
id="Reacher-v2",
entry_point="gym.envs.mujoco:ReacherEnv",
max_episode_steps=50,
2016-05-30 19:20:36 -07:00
reward_threshold=-3.75,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="Pusher-v2",
entry_point="gym.envs.mujoco:PusherEnv",
max_episode_steps=100,
reward_threshold=0.0,
)
register(
2021-07-29 02:26:34 +02:00
id="Thrower-v2",
entry_point="gym.envs.mujoco:ThrowerEnv",
max_episode_steps=100,
reward_threshold=0.0,
)
register(
2021-07-29 02:26:34 +02:00
id="Striker-v2",
entry_point="gym.envs.mujoco:StrikerEnv",
max_episode_steps=100,
reward_threshold=0.0,
)
2016-04-27 08:00:58 -07:00
register(
2021-07-29 02:26:34 +02:00
id="InvertedPendulum-v2",
entry_point="gym.envs.mujoco:InvertedPendulumEnv",
max_episode_steps=1000,
2016-05-30 19:20:36 -07:00
reward_threshold=950.0,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="InvertedDoublePendulum-v2",
entry_point="gym.envs.mujoco:InvertedDoublePendulumEnv",
max_episode_steps=1000,
2016-05-30 19:20:36 -07:00
reward_threshold=9100.0,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="HalfCheetah-v2",
entry_point="gym.envs.mujoco:HalfCheetahEnv",
max_episode_steps=1000,
2016-05-10 09:18:13 -07:00
reward_threshold=4800.0,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="HalfCheetah-v3",
entry_point="gym.envs.mujoco.half_cheetah_v3:HalfCheetahEnv",
max_episode_steps=1000,
reward_threshold=4800.0,
)
2016-04-27 08:00:58 -07:00
register(
2021-07-29 02:26:34 +02:00
id="Hopper-v2",
entry_point="gym.envs.mujoco:HopperEnv",
max_episode_steps=1000,
2016-05-10 09:18:13 -07:00
reward_threshold=3800.0,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="Hopper-v3",
entry_point="gym.envs.mujoco.hopper_v3:HopperEnv",
max_episode_steps=1000,
reward_threshold=3800.0,
)
2016-04-27 08:00:58 -07:00
register(
2021-07-29 02:26:34 +02:00
id="Swimmer-v2",
entry_point="gym.envs.mujoco:SwimmerEnv",
max_episode_steps=1000,
2016-05-10 09:18:13 -07:00
reward_threshold=360.0,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="Swimmer-v3",
entry_point="gym.envs.mujoco.swimmer_v3:SwimmerEnv",
max_episode_steps=1000,
reward_threshold=360.0,
)
2016-04-27 08:00:58 -07:00
register(
2021-07-29 02:26:34 +02:00
id="Walker2d-v2",
max_episode_steps=1000,
2021-07-29 02:26:34 +02:00
entry_point="gym.envs.mujoco:Walker2dEnv",
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="Walker2d-v3",
max_episode_steps=1000,
2021-07-29 02:26:34 +02:00
entry_point="gym.envs.mujoco.walker2d_v3:Walker2dEnv",
)
2016-04-27 08:00:58 -07:00
register(
2021-07-29 02:26:34 +02:00
id="Ant-v2",
entry_point="gym.envs.mujoco:AntEnv",
max_episode_steps=1000,
2016-05-10 09:18:13 -07:00
reward_threshold=6000.0,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="Ant-v3",
entry_point="gym.envs.mujoco.ant_v3:AntEnv",
max_episode_steps=1000,
reward_threshold=6000.0,
)
2016-04-27 08:00:58 -07:00
register(
2021-07-29 02:26:34 +02:00
id="Humanoid-v2",
entry_point="gym.envs.mujoco:HumanoidEnv",
max_episode_steps=1000,
2016-04-27 08:00:58 -07:00
)
2017-01-03 19:37:29 -08:00
register(
2021-07-29 02:26:34 +02:00
id="Humanoid-v3",
entry_point="gym.envs.mujoco.humanoid_v3:HumanoidEnv",
max_episode_steps=1000,
)
2016-05-23 15:01:25 +08:00
register(
2021-07-29 02:26:34 +02:00
id="HumanoidStandup-v2",
entry_point="gym.envs.mujoco:HumanoidStandupEnv",
max_episode_steps=1000,
2016-05-23 15:01:25 +08:00
)
2016-04-27 08:00:58 -07:00
2018-02-26 17:35:07 +01:00
# Robotics
# ----------------------------------------
2021-07-29 02:26:34 +02:00
2018-02-26 17:35:07 +01:00
def _merge(a, b):
a.update(b)
return a
2021-07-29 02:26:34 +02:00
for reward_type in ["sparse", "dense"]:
suffix = "Dense" if reward_type == "dense" else ""
2018-02-26 17:35:07 +01:00
kwargs = {
2021-07-29 02:26:34 +02:00
"reward_type": reward_type,
2018-02-26 17:35:07 +01:00
}
# Fetch
register(
2021-07-29 02:26:34 +02:00
id="FetchSlide{}-v1".format(suffix),
entry_point="gym.envs.robotics:FetchSlideEnv",
2018-02-26 17:35:07 +01:00
kwargs=kwargs,
max_episode_steps=50,
)
register(
2021-07-29 02:26:34 +02:00
id="FetchPickAndPlace{}-v1".format(suffix),
entry_point="gym.envs.robotics:FetchPickAndPlaceEnv",
2018-02-26 17:35:07 +01:00
kwargs=kwargs,
max_episode_steps=50,
)
register(
2021-07-29 02:26:34 +02:00
id="FetchReach{}-v1".format(suffix),
entry_point="gym.envs.robotics:FetchReachEnv",
2018-02-26 17:35:07 +01:00
kwargs=kwargs,
max_episode_steps=50,
)
register(
2021-07-29 02:26:34 +02:00
id="FetchPush{}-v1".format(suffix),
entry_point="gym.envs.robotics:FetchPushEnv",
2018-02-26 17:35:07 +01:00
kwargs=kwargs,
max_episode_steps=50,
)
# Hand
register(
2021-07-29 02:26:34 +02:00
id="HandReach{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandReachEnv",
2018-02-26 17:35:07 +01:00
kwargs=kwargs,
max_episode_steps=50,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlockRotateZ{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandBlockEnv",
kwargs=_merge({"target_position": "ignore", "target_rotation": "z"}, kwargs),
2018-02-26 17:35:07 +01:00
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlockRotateZTouchSensors{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandBlockTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "ignore",
"target_rotation": "z",
"touch_get_obs": "boolean",
},
kwargs,
),
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlockRotateZTouchSensors{}-v1".format(suffix),
entry_point="gym.envs.robotics:HandBlockTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "ignore",
"target_rotation": "z",
"touch_get_obs": "sensordata",
},
kwargs,
),
max_episode_steps=100,
)
2018-02-26 17:35:07 +01:00
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlockRotateParallel{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandBlockEnv",
2021-07-29 15:39:42 -04:00
kwargs=_merge(
{"target_position": "ignore", "target_rotation": "parallel"}, kwargs
),
2018-02-26 17:35:07 +01:00
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlockRotateParallelTouchSensors{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandBlockTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "ignore",
"target_rotation": "parallel",
"touch_get_obs": "boolean",
},
kwargs,
),
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlockRotateParallelTouchSensors{}-v1".format(suffix),
entry_point="gym.envs.robotics:HandBlockTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "ignore",
"target_rotation": "parallel",
"touch_get_obs": "sensordata",
},
kwargs,
),
max_episode_steps=100,
)
2018-02-26 17:35:07 +01:00
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlockRotateXYZ{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandBlockEnv",
kwargs=_merge({"target_position": "ignore", "target_rotation": "xyz"}, kwargs),
2018-02-26 17:35:07 +01:00
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlockRotateXYZTouchSensors{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandBlockTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "ignore",
"target_rotation": "xyz",
"touch_get_obs": "boolean",
},
kwargs,
),
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlockRotateXYZTouchSensors{}-v1".format(suffix),
entry_point="gym.envs.robotics:HandBlockTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "ignore",
"target_rotation": "xyz",
"touch_get_obs": "sensordata",
},
kwargs,
),
max_episode_steps=100,
)
2018-02-26 17:35:07 +01:00
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlockFull{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandBlockEnv",
kwargs=_merge({"target_position": "random", "target_rotation": "xyz"}, kwargs),
2018-02-26 17:35:07 +01:00
max_episode_steps=100,
)
# Alias for "Full"
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlock{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandBlockEnv",
kwargs=_merge({"target_position": "random", "target_rotation": "xyz"}, kwargs),
2018-02-26 17:35:07 +01:00
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlockTouchSensors{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandBlockTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "random",
"target_rotation": "xyz",
"touch_get_obs": "boolean",
},
kwargs,
),
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateBlockTouchSensors{}-v1".format(suffix),
entry_point="gym.envs.robotics:HandBlockTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "random",
"target_rotation": "xyz",
"touch_get_obs": "sensordata",
},
kwargs,
),
max_episode_steps=100,
)
2018-02-26 17:35:07 +01:00
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateEggRotate{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandEggEnv",
kwargs=_merge({"target_position": "ignore", "target_rotation": "xyz"}, kwargs),
2018-02-26 17:35:07 +01:00
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateEggRotateTouchSensors{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandEggTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "ignore",
"target_rotation": "xyz",
"touch_get_obs": "boolean",
},
kwargs,
),
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateEggRotateTouchSensors{}-v1".format(suffix),
entry_point="gym.envs.robotics:HandEggTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "ignore",
"target_rotation": "xyz",
"touch_get_obs": "sensordata",
},
kwargs,
),
max_episode_steps=100,
)
2018-02-26 17:35:07 +01:00
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateEggFull{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandEggEnv",
kwargs=_merge({"target_position": "random", "target_rotation": "xyz"}, kwargs),
2018-02-26 17:35:07 +01:00
max_episode_steps=100,
)
# Alias for "Full"
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateEgg{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandEggEnv",
kwargs=_merge({"target_position": "random", "target_rotation": "xyz"}, kwargs),
2018-02-26 17:35:07 +01:00
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateEggTouchSensors{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandEggTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "random",
"target_rotation": "xyz",
"touch_get_obs": "boolean",
},
kwargs,
),
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulateEggTouchSensors{}-v1".format(suffix),
entry_point="gym.envs.robotics:HandEggTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "random",
"target_rotation": "xyz",
"touch_get_obs": "sensordata",
},
kwargs,
),
max_episode_steps=100,
)
2018-02-26 17:35:07 +01:00
register(
2021-07-29 02:26:34 +02:00
id="HandManipulatePenRotate{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandPenEnv",
kwargs=_merge({"target_position": "ignore", "target_rotation": "xyz"}, kwargs),
2018-02-26 17:35:07 +01:00
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulatePenRotateTouchSensors{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandPenTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "ignore",
"target_rotation": "xyz",
"touch_get_obs": "boolean",
},
kwargs,
),
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulatePenRotateTouchSensors{}-v1".format(suffix),
entry_point="gym.envs.robotics:HandPenTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "ignore",
"target_rotation": "xyz",
"touch_get_obs": "sensordata",
},
kwargs,
),
max_episode_steps=100,
)
2018-02-26 17:35:07 +01:00
register(
2021-07-29 02:26:34 +02:00
id="HandManipulatePenFull{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandPenEnv",
kwargs=_merge({"target_position": "random", "target_rotation": "xyz"}, kwargs),
2018-02-26 17:35:07 +01:00
max_episode_steps=100,
)
# Alias for "Full"
register(
2021-07-29 02:26:34 +02:00
id="HandManipulatePen{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandPenEnv",
kwargs=_merge({"target_position": "random", "target_rotation": "xyz"}, kwargs),
2018-02-26 17:35:07 +01:00
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulatePenTouchSensors{}-v0".format(suffix),
entry_point="gym.envs.robotics:HandPenTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "random",
"target_rotation": "xyz",
"touch_get_obs": "boolean",
},
kwargs,
),
max_episode_steps=100,
)
register(
2021-07-29 02:26:34 +02:00
id="HandManipulatePenTouchSensors{}-v1".format(suffix),
entry_point="gym.envs.robotics:HandPenTouchSensorsEnv",
kwargs=_merge(
{
"target_position": "random",
"target_rotation": "xyz",
"touch_get_obs": "sensordata",
},
kwargs,
),
max_episode_steps=100,
)
2016-04-27 08:00:58 -07:00
# Atari
# ----------------------------------------
# # print ', '.join(["'{}'".format(name.split('.')[0]) for name in atari_py.list_games()])
2021-07-29 02:26:34 +02:00
for game in [
"adventure",
"air_raid",
"alien",
"amidar",
"assault",
"asterix",
"asteroids",
"atlantis",
"bank_heist",
"battle_zone",
"beam_rider",
"berzerk",
"bowling",
"boxing",
"breakout",
"carnival",
"centipede",
"chopper_command",
"crazy_climber",
"defender",
"demon_attack",
"double_dunk",
"elevator_action",
"enduro",
"fishing_derby",
"freeway",
"frostbite",
"gopher",
"gravitar",
"hero",
"ice_hockey",
"jamesbond",
"journey_escape",
"kangaroo",
"krull",
"kung_fu_master",
"montezuma_revenge",
"ms_pacman",
"name_this_game",
"phoenix",
"pitfall",
"pong",
"pooyan",
"private_eye",
"qbert",
"riverraid",
"road_runner",
"robotank",
"seaquest",
"skiing",
"solaris",
"space_invaders",
"star_gunner",
"tennis",
"time_pilot",
"tutankham",
"up_n_down",
"venture",
"video_pinball",
"wizard_of_wor",
"yars_revenge",
"zaxxon",
]:
for obs_type in ["image", "ram"]:
2016-04-27 08:00:58 -07:00
# space_invaders should yield SpaceInvaders-v0 and SpaceInvaders-ram-v0
2021-07-29 02:26:34 +02:00
name = "".join([g.capitalize() for g in game.split("_")])
if obs_type == "ram":
name = "{}-ram".format(name)
[WIP] add support for seeding environments (#135) * Make environments seedable * Fix monitor bugs - Set monitor_id before setting the infix. This was a bug that would yield incorrect results with multiple monitors. - Remove extra pid from stats recorder filename. This should be purely cosmetic. * Start uploading seeds in episode_batch * Fix _bigint_from_bytes for python3 * Set seed explicitly in random_agent * Pass through seed argument * Also pass through random state to spaces * Pass random state into the observation/action spaces * Make all _seed methods return the list of used seeds * Switch over to np.random where possible * Start hashing seeds, and also seed doom engine * Fixup seeding determinism in many cases * Seed before loading the ROM * Make seeding more Python3 friendly * Make the MuJoCo skipping a bit more forgiving * Remove debugging PDB calls * Make setInt argument into raw bytes * Validate and upload seeds * Skip box2d * Make seeds smaller, and change representation of seeds in upload * Handle long seeds * Fix RandomAgent example to be deterministic * Handle integer types correctly in Python2 and Python3 * Try caching pip * Try adding swap * Add df and free calls * Bump swap * Bump swap size * Try setting overcommit * Try other sysctls * Try fixing overcommit * Try just setting overcommit_memory=1 * Add explanatory comment * Add what's new section to readme * BUG: Mark ElevatorAction-ram-v0 as non-deterministic for now * Document seed * Move nondetermistic check into spec
2016-05-29 09:07:09 -07:00
nondeterministic = False
2021-07-29 02:26:34 +02:00
if game == "elevator_action" and obs_type == "ram":
[WIP] add support for seeding environments (#135) * Make environments seedable * Fix monitor bugs - Set monitor_id before setting the infix. This was a bug that would yield incorrect results with multiple monitors. - Remove extra pid from stats recorder filename. This should be purely cosmetic. * Start uploading seeds in episode_batch * Fix _bigint_from_bytes for python3 * Set seed explicitly in random_agent * Pass through seed argument * Also pass through random state to spaces * Pass random state into the observation/action spaces * Make all _seed methods return the list of used seeds * Switch over to np.random where possible * Start hashing seeds, and also seed doom engine * Fixup seeding determinism in many cases * Seed before loading the ROM * Make seeding more Python3 friendly * Make the MuJoCo skipping a bit more forgiving * Remove debugging PDB calls * Make setInt argument into raw bytes * Validate and upload seeds * Skip box2d * Make seeds smaller, and change representation of seeds in upload * Handle long seeds * Fix RandomAgent example to be deterministic * Handle integer types correctly in Python2 and Python3 * Try caching pip * Try adding swap * Add df and free calls * Bump swap * Bump swap size * Try setting overcommit * Try other sysctls * Try fixing overcommit * Try just setting overcommit_memory=1 * Add explanatory comment * Add what's new section to readme * BUG: Mark ElevatorAction-ram-v0 as non-deterministic for now * Document seed * Move nondetermistic check into spec
2016-05-29 09:07:09 -07:00
# ElevatorAction-ram-v0 seems to yield slightly
# non-deterministic observations about 10% of the time. We
# should track this down eventually, but for now we just
2016-05-29 09:11:49 -07:00
# mark it as nondeterministic.
[WIP] add support for seeding environments (#135) * Make environments seedable * Fix monitor bugs - Set monitor_id before setting the infix. This was a bug that would yield incorrect results with multiple monitors. - Remove extra pid from stats recorder filename. This should be purely cosmetic. * Start uploading seeds in episode_batch * Fix _bigint_from_bytes for python3 * Set seed explicitly in random_agent * Pass through seed argument * Also pass through random state to spaces * Pass random state into the observation/action spaces * Make all _seed methods return the list of used seeds * Switch over to np.random where possible * Start hashing seeds, and also seed doom engine * Fixup seeding determinism in many cases * Seed before loading the ROM * Make seeding more Python3 friendly * Make the MuJoCo skipping a bit more forgiving * Remove debugging PDB calls * Make setInt argument into raw bytes * Validate and upload seeds * Skip box2d * Make seeds smaller, and change representation of seeds in upload * Handle long seeds * Fix RandomAgent example to be deterministic * Handle integer types correctly in Python2 and Python3 * Try caching pip * Try adding swap * Add df and free calls * Bump swap * Bump swap size * Try setting overcommit * Try other sysctls * Try fixing overcommit * Try just setting overcommit_memory=1 * Add explanatory comment * Add what's new section to readme * BUG: Mark ElevatorAction-ram-v0 as non-deterministic for now * Document seed * Move nondetermistic check into spec
2016-05-29 09:07:09 -07:00
nondeterministic = True
2016-04-27 08:00:58 -07:00
register(
2021-07-29 02:26:34 +02:00
id="{}-v0".format(name),
entry_point="gym.envs.atari:AtariEnv",
kwargs={
"game": game,
"obs_type": obs_type,
"repeat_action_probability": 0.25,
},
max_episode_steps=10000,
[WIP] add support for seeding environments (#135) * Make environments seedable * Fix monitor bugs - Set monitor_id before setting the infix. This was a bug that would yield incorrect results with multiple monitors. - Remove extra pid from stats recorder filename. This should be purely cosmetic. * Start uploading seeds in episode_batch * Fix _bigint_from_bytes for python3 * Set seed explicitly in random_agent * Pass through seed argument * Also pass through random state to spaces * Pass random state into the observation/action spaces * Make all _seed methods return the list of used seeds * Switch over to np.random where possible * Start hashing seeds, and also seed doom engine * Fixup seeding determinism in many cases * Seed before loading the ROM * Make seeding more Python3 friendly * Make the MuJoCo skipping a bit more forgiving * Remove debugging PDB calls * Make setInt argument into raw bytes * Validate and upload seeds * Skip box2d * Make seeds smaller, and change representation of seeds in upload * Handle long seeds * Fix RandomAgent example to be deterministic * Handle integer types correctly in Python2 and Python3 * Try caching pip * Try adding swap * Add df and free calls * Bump swap * Bump swap size * Try setting overcommit * Try other sysctls * Try fixing overcommit * Try just setting overcommit_memory=1 * Add explanatory comment * Add what's new section to readme * BUG: Mark ElevatorAction-ram-v0 as non-deterministic for now * Document seed * Move nondetermistic check into spec
2016-05-29 09:07:09 -07:00
nondeterministic=nondeterministic,
2016-04-27 08:00:58 -07:00
)
register(
2021-07-29 02:26:34 +02:00
id="{}-v4".format(name),
entry_point="gym.envs.atari:AtariEnv",
kwargs={"game": game, "obs_type": obs_type},
max_episode_steps=100000,
nondeterministic=nondeterministic,
)
# Standard Deterministic (as in the original DeepMind paper)
2021-07-29 02:26:34 +02:00
if game == "space_invaders":
frameskip = 3
else:
frameskip = 4
2016-09-24 15:55:56 -07:00
# Use a deterministic frame skip.
register(
2021-07-29 02:26:34 +02:00
id="{}Deterministic-v0".format(name),
entry_point="gym.envs.atari:AtariEnv",
kwargs={
"game": game,
"obs_type": obs_type,
"frameskip": frameskip,
"repeat_action_probability": 0.25,
},
max_episode_steps=100000,
2016-09-24 15:55:56 -07:00
nondeterministic=nondeterministic,
)
register(
2021-07-29 02:26:34 +02:00
id="{}Deterministic-v4".format(name),
entry_point="gym.envs.atari:AtariEnv",
kwargs={"game": game, "obs_type": obs_type, "frameskip": frameskip},
max_episode_steps=100000,
nondeterministic=nondeterministic,
)
2016-09-24 15:55:56 -07:00
register(
2021-07-29 02:26:34 +02:00
id="{}NoFrameskip-v0".format(name),
entry_point="gym.envs.atari:AtariEnv",
kwargs={
"game": game,
"obs_type": obs_type,
"frameskip": 1,
"repeat_action_probability": 0.25,
}, # A frameskip of 1 means we get every frame
max_episode_steps=frameskip * 100000,
2016-09-24 15:55:56 -07:00
nondeterministic=nondeterministic,
)
# No frameskip. (Atari has no entropy source, so these are
# deterministic environments.)
register(
2021-07-29 02:26:34 +02:00
id="{}NoFrameskip-v4".format(name),
entry_point="gym.envs.atari:AtariEnv",
kwargs={
"game": game,
"obs_type": obs_type,
"frameskip": 1,
}, # A frameskip of 1 means we get every frame
max_episode_steps=frameskip * 100000,
nondeterministic=nondeterministic,
)
# Unit test
# ---------
register(
2021-07-29 02:26:34 +02:00
id="CubeCrash-v0",
entry_point="gym.envs.unittest:CubeCrash",
reward_threshold=0.9,
2021-07-29 02:26:34 +02:00
)
register(
2021-07-29 02:26:34 +02:00
id="CubeCrashSparse-v0",
entry_point="gym.envs.unittest:CubeCrashSparse",
reward_threshold=0.9,
2021-07-29 02:26:34 +02:00
)
register(
2021-07-29 02:26:34 +02:00
id="CubeCrashScreenBecomesBlack-v0",
entry_point="gym.envs.unittest:CubeCrashScreenBecomesBlack",
reward_threshold=0.9,
2021-07-29 02:26:34 +02:00
)
register(
2021-07-29 02:26:34 +02:00
id="MemorizeDigits-v0",
entry_point="gym.envs.unittest:MemorizeDigits",
reward_threshold=20,
2021-07-29 02:26:34 +02:00
)