Wie kann ich mich registrieren einer benutzerdefinierten Umgebung in OpenAI Fitness-Studio?

Habe ich eine benutzerdefinierte Umgebung, wie pro die OpenAI Fitness-Studio-Rahmen; mit step, reset, action, und reward Funktionen. Mein Ziel ist es zu laufen OpenAI baselines auf diese benutzerdefinierten Umgebung. Aber vor dieser, der Umwelt registriert werden, die auf OpenAI Fitness-Studio. Ich würde gerne wissen, wie Sie die benutzerdefinierte Umgebung eingetragen werden konnte, auf OpenAI Fitness-Studio? Auch, Sollte ich ändern die OpenAI baseline-codes zu übernehmen?

InformationsquelleAutor Mad_Scientist | 2018-10-09



2 Replies
  1. 3

    Brauchen Sie nicht zu ändern Grundlinien repo.

    Ist hier ein minimal-Beispiel. Sagen Sie myenv.py mit allen benötigten Funktionen (step, reset, …). Der name der Klasse, die Umgebung ist MyEnv wird, und Sie möchten fügen Sie es an die classic_control Ordner. Sie müssen

    • Ort myenv.py Datei in gym/gym/envs/classic_control
    • Hinzufügen __init__.py (befindet sich im selben Ordner)

      from gym.envs.classic_control.myenv import MyEnv

    • Registrieren der Umwelt in gym/gym/envs/__init__.py durch hinzufügen

      gym.envs.register(
           id='MyEnv-v0',
           entry_point='gym.envs.classic_control:MyEnv',
           max_episode_steps=1000,
      )
      

    Bei der Registrierung, Sie können auch hinzufügen reward_threshold und kwargs (wenn Ihre Klasse nimmt einige Argumente).

    Sie können auch direkt registrieren der Umwelt in der das Skript ausgeführt werden soll (TRPO, PPO, oder was auch immer) zu tun, anstatt es in gym/gym/envs/__init__.py.

    BEARBEITEN

    Dies ist ein minimal-Beispiel erstellen, die LQR Umgebung.

    Speichern Sie den folgenden code in lqr_env.py und legen Sie es in die classic_control Ordner der Turnhalle.

    import gym
    from gym import spaces
    from gym.utils import seeding
    import numpy as np
    
    class LqrEnv(gym.Env):
    
        def __init__(self, size, init_state, state_bound):
            self.init_state = init_state
            self.size = size 
            self.action_space = spaces.Box(low=-state_bound, high=state_bound, shape=(size,))
            self.observation_space = spaces.Box(low=-state_bound, high=state_bound, shape=(size,))
            self._seed()
    
        def _seed(self, seed=None):
            self.np_random, seed = seeding.np_random(seed)
            return [seed]
    
        def _step(self,u):
            costs = np.sum(u**2) + np.sum(self.state**2)
            self.state = np.clip(self.state + u, self.observation_space.low, self.observation_space.high)
            return self._get_obs(), -costs, False, {}
    
        def _reset(self):
            high = self.init_state*np.ones((self.size,))
            self.state = self.np_random.uniform(low=-high, high=high)
            self.last_u = None
            return self._get_obs()
    
        def _get_obs(self):
            return self.state
    

    Hinzufügen from gym.envs.classic_control.lqr_env import LqrEnv zu __init__.py (auch in classic_control).

    In Ihrem script, wenn Sie schaffen eine Umgebung, tun

    gym.envs.register(
         id='Lqr-v0',
         entry_point='gym.envs.classic_control:LqrEnv',
         max_episode_steps=150,
         kwargs={'size' : 1, 'init_state' : 10., 'state_bound' : np.inf},
    )
    env = gym.make('Lqr-v0')
    
    • haben Sie einen Tipp oder ein Beispiel auf, wie Sie zum registrieren der Umwelt in das Skript ((TRPO, PPO, oder was auch immer) zu tun, anstatt es in )…
    • Im Versuch, führen Sie alle Schritte oben, aber ich erhalte eine Fehlermeldung, dass gym.error.Error: Attempted to look up malformed environment ID: b'hvac_Env'. (Currently all IDs must be of the form ^(?:[\w:-]+\/)?([\w:.-]+)-v(\d+)$.)
    • Ich hatte nie Ihre Fehler. Ich habe ein minimal-Beispiel, hoffe, das hilft.
    • Vielen Dank für das Teilen dieses @Simon… Es funktioniert. Der LQR scheint ganz interessant zu werden, würde Sie jemals in der Lage sein, zu teilen, Kontakt-info zusammenarbeiten? Sonst kann ich geben Sie mir.. ich bin versucht, diese custom Fitness-Studio env für die Steuerung von Ventil in ein Rohrsystem bis zu einer Temperatur sensor. Ich habe Kontakt info am Ende dieses blog-post über meine Seite Projekt:medium.com/getting-reinforcement-learning-into-the-bas
  2. 0

    Umgebung Registrierung finden hier.

    Bitte gehen Sie durch diese Beispiel für eine benutzerdefinierte Umgebung, wenn Sie weitere Fragen habe.

    Finden diese stackoverflow-Frage für weitere Informationen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.