def test_rendered_env(self): env = gym_utils.RenderedEnv(SimpleEnv(), resize_to=(64, 12)) obs, _, _, _ = env.step(1) self.assertTrue(np.allclose(np.zeros([64, 12, 3], np.uint8), obs)) env = gym_utils.RenderedEnv(SimpleEnv(), resize_to=(64, 12), output_dtype=np.float32) obs, _, _, _ = env.step(1) self.assertTrue(np.allclose(np.zeros([64, 12, 3], np.float32), obs))
def test_rendered_env_continuous_2d(self): env = gym_utils.RenderedEnv(SimpleContinuousActionsEnv(dimensions=2), resize_to=(64, 12)) obs, _, _, _ = env.step(0.5) self.assertTrue(np.allclose(np.zeros([64, 12, 3], np.uint8), obs)) env = gym_utils.RenderedEnv(SimpleContinuousActionsEnv(dimensions=2), resize_to=(64, 12), output_dtype=np.float32) obs, _, _, _ = env.step(1) self.assertTrue(np.allclose(np.zeros([64, 12, 3], np.float32), obs))
def test_action_mapping_2d(self): num_actions = 8 def expected_continuous_actions(discrete_action): if discrete_action == [0, 0]: return np.array([-1, -1]) elif discrete_action == [0, 3]: return np.array([-1, -0.14285714]) elif discrete_action == [4, 4]: return np.array([0.14285714, 0.14285714]) elif discrete_action == [7, 7]: return np.array([1, 1]) discrete_actions = [[0, 0], [0, 3], [4, 4], [7, 7]] with unittest.mock.patch.object(gym_utils.RenderedEnv, "step", autospec=True) as mock_step_method: env = gym_utils.RenderedEnv( SimpleContinuousActionsEnv(dimensions=2)) env_discrete = gym_utils.ActionDiscretizeWrapper(env, num_actions) for discrete_action in discrete_actions: env_discrete.step(discrete_action) mock_args, _ = mock_step_method.call_args np.testing.assert_array_almost_equal( mock_args[1], expected_continuous_actions(discrete_action))
def test_action_mapping_1d(self): """Testing discretization with a mock environment. In the mock call we get access to the argument of the SimpleContinuousActionsEnv.step method which we check against precomputed values of continuous actions. """ num_actions = 4 with unittest.mock.patch.object(gym_utils.RenderedEnv, "step", autospec=True) as mock_step_method: env = gym_utils.RenderedEnv( SimpleContinuousActionsEnv(dimensions=1)) expected_continuous_actions = np.linspace( np.min(env.action_space.low), np.min(env.action_space.high), num=num_actions).flatten() env_discrete = gym_utils.ActionDiscretizeWrapper(env, num_actions) for discrete_action in range(num_actions): env_discrete.step([discrete_action]) mock_step_method.assert_called_with( unittest.mock.ANY, expected_continuous_actions[discrete_action])
def test_correct_number_of_discrete_actions_2d(self): env_discrete = gym_utils.ActionDiscretizeWrapper(gym_utils.RenderedEnv( SimpleContinuousActionsEnv(dimensions=2)), num_actions=4) expected_action_space = gym.spaces.MultiDiscrete([4, 4]) self.assertEqual(env_discrete.action_space, expected_action_space)
def test_correct_number_of_discrete_actions_1d(self): """The env should become discrete whenever we pass num_action.""" env_discrete = gym_utils.ActionDiscretizeWrapper(gym_utils.RenderedEnv( SimpleContinuousActionsEnv(dimensions=1)), num_actions=4) expected_action_space = gym.spaces.MultiDiscrete([ 4, ]) self.assertEqual(env_discrete.action_space, expected_action_space)
def test_rendered_env(self): env = gym_utils.RenderedEnv(SimpleEnv(), resize_to=(64, 64)) obs, _, _, _ = env.step(1) self.assertTrue(np.allclose(np.zeros([64, 64, 3], np.uint8), obs))