Example #1
0
def main(_):
    params = {}
    if FLAGS.symbolic:
        params = {'seed': FLAGS.seed, 'level_name': FLAGS.level_name}
        env_generator = symbolic_alchemy.get_symbolic_alchemy_level
    else:
        env_settings = dm_alchemy.EnvironmentSettings(
            seed=FLAGS.seed, level_name=FLAGS.level_name)
        params = {'name': FLAGS.docker_image_name, 'settings': env_settings}
        env_generator = dm_alchemy.load_from_docker

    with env_generator(**params) as env:

        agent = RandomAgent(env.action_spec())

        timestep = env.reset()
        score = 0
        while not timestep.last():
            action = agent.act(timestep)
            timestep = env.step(action)

            if timestep.reward:
                score += timestep.reward
                print('Total score: {:.2f}, reward: {:.2f}'.format(
                    score, timestep.reward))
 def test_load_level(self, level_name):
     self.assertIsNotNone(
         dm_alchemy.load_from_docker(
             name=FLAGS.docker_image_name,
             settings=dm_alchemy.EnvironmentSettings(
                 seed=123, level_name=level_name)))
 def make_object_under_test(self):
     return dm_alchemy.load_from_docker(
         name=FLAGS.docker_image_name,
         settings=dm_alchemy.EnvironmentSettings(seed=123,
                                                 level_name=_TEST_LEVEL))
Example #4
0
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import sys
sys.path.insert(0, "//")

import nnn

import tensorflow as tf
import tf_agents as tfa
"""from tf_agents.environments import suite_gym

env = suite_gym.load('CartPole-v0')
#env = tfa.environments.tf_py_environment.TFPyEnvironment(env)

print('time step spec', env.time_step_spec())
print('act spec', env.action_spec())"""

import dm_alchemy

LEVEL_NAME = ('alchemy/perceptual_mapping_'
              'randomized_with_rotation_and_random_bottleneck')
settings = dm_alchemy.EnvironmentSettings(seed=123, level_name=LEVEL_NAME)
env = dm_alchemy.load_from_docker(settings)



 def test_load_level(self, level_name):
     self.assertIsNotNone(
         dm_alchemy.load_from_disk(FLAGS.path,
                                   settings=dm_alchemy.EnvironmentSettings(
                                       seed=123, level_name=level_name)))
 def make_object_under_test(self):
     return dm_alchemy.load_from_disk(
         FLAGS.path,
         settings=dm_alchemy.EnvironmentSettings(seed=123,
                                                 level_name=_TEST_LEVEL))
Example #7
0
def main(_):
    pygame.init()
    try:
        pygame.mixer.quit()
    except NotImplementedError:
        pass
    pygame.display.set_caption('Alchemy Human Agent')

    view_width, view_height = [int(pixels) for pixels in FLAGS.resolution]
    env_settings = dm_alchemy.EnvironmentSettings(seed=FLAGS.seed,
                                                  level_name=FLAGS.level_name,
                                                  width=view_width,
                                                  height=view_height)

    # Let rendering use all but one CPU cores, but at least 1 core.
    num_rendering_cores = max(multiprocessing.cpu_count() - 1, 1)
    environment_variables = {'LP_NUM_THREADS': str(num_rendering_cores)}

    with dm_alchemy.load_from_docker(
            name=FLAGS.docker_image_name,
            settings=env_settings,
            environment_variables=environment_variables) as env:
        screen = pygame.display.set_mode(
            (int(FLAGS.screen_size[0]), int(FLAGS.screen_size[1])))

        rgb_spec = env.observation_spec()['RGB_INTERLEAVED']
        surface = pygame.Surface((rgb_spec.shape[1], rgb_spec.shape[0]))

        score = 0
        clock = pygame.time.Clock()
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    return
                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        return
                    if event.key == pygame.K_ESCAPE:
                        _grab_mouse(not pygame.event.get_grab())
                elif event.type == pygame.MOUSEBUTTONDOWN:
                    if event.button == _LEFT_BUTTON:
                        _grab_mouse()

            actions = _NO_ACTION.copy()

            keys = pygame.key.get_pressed()
            for key, key_actions in _KEYS_TO_ACTION.items():
                if not keys[key]:
                    continue
                for name, action in key_actions.items():
                    actions[name] = action

            if pygame.event.get_grab():
                left_button_pressed, _, _ = pygame.mouse.get_pressed()
                if left_button_pressed:
                    actions['HAND_GRIP'] = 1

                x, y = pygame.mouse.get_rel()
                actions['LOOK_LEFT_RIGHT'] = _MOUSE_SENSITIVITY * x
                actions['LOOK_DOWN_UP'] = _MOUSE_SENSITIVITY * y

            timestep = env.step(actions)
            thisframe = np.copy(timestep.observation['RGB_INTERLEAVED'])
            frame = np.swapaxes(thisframe, 0, 1)
            pygame.surfarray.blit_array(surface, frame)
            pygame.transform.smoothscale(surface, screen.get_size(), screen)

            info = pygame.display.Info()
            rect_x = info.current_w // 2
            rect_y = info.current_h // 2
            width_line = 2
            pygame.draw.line(screen, _CURSOR_COLOR,
                             (rect_x - _CURSOR_SIZE, rect_y),
                             (rect_x + _CURSOR_SIZE, rect_y), width_line)
            pygame.draw.line(screen, _CURSOR_COLOR,
                             (rect_x, rect_y - _CURSOR_SIZE),
                             (rect_x, rect_y + _CURSOR_SIZE), width_line)

            pygame.display.update()

            if timestep.reward:
                score += timestep.reward
                logging.info('Total score: %1.1f, reward: %1.1f', score,
                             timestep.reward)
            clock.tick(_FRAMES_PER_SECOND)