2017-07-12 34 views
7

Mam zadanie, aby stworzyć agenta AI, który nauczy się grać w grę wideo za pomocą ML. Chcę stworzyć nowe środowisko w OpenAI, ponieważ nie chcę pracować w istniejącym środowisku. Jak mogę stworzyć nowe środowisko. Czy istnieje również inny sposób, w jaki mogę zacząć tworzyć agenta AI, który będzie grał w konkretną grę wideo bez pomocy użytkownika OpenAI? Jestem początkującym w tej dziedzinie, więc każdy rodzaj pomocy/początkowy kierunek zostanie doceniony.Czy jest możliwe stworzenie nowego środowiska siłowni w OpenAI?

Odpowiedz

4

Jest to zdecydowanie możliwe. Mówią to na stronie Dokumentacja, blisko końca.

https://gym.openai.com/docs

, jak to zrobić, należy spojrzeć na kod źródłowy istniejących środowiskach inspiracji. Jego dostępny w github:

https://github.com/openai/gym#installation

Większość ich środowiskach oni nie realizować od podstaw, lecz stworzył owijkę wokół istniejącego środowiska i dał mu cały interfejs, który jest wygodny dla nauki zbrojenia.

Jeśli chcesz stworzyć własną, powinieneś pójść w tym kierunku i spróbować zaadaptować coś, co już istnieje do interfejsu siłowni. Chociaż istnieje duża szansa, że ​​jest to bardzo czasochłonne.

Istnieje inna opcja, która może być interesująca dla Twojego celu. To OpenAI wszechświecie

https://universe.openai.com/

to można zintegrować ze stron internetowych tak, aby ćwiczyć swoje modele na Kongregate gry, na przykład. Ale Universe nie jest tak łatwy w użyciu jak Gym.

Jeśli jesteś początkujący, zalecam, abyś zaczął od wdrożenia wanilii w standardowym środowisku. Po przejściu problemów z podstawami, przejdź do zwiększenia ...

+0

Co zrobić, jeśli chcemy stworzyć warunki dla działalności non-cyfrowych, takich jak Kółko i krzyżyk lub kostki Rubika gdzie możliwe stany są skończone i można je dobrze zdefiniować? Czy mam sporządzić listę ze wszystkimi możliwymi stanami? W jaki sposób symulacja może określić, jakie są statusy docelowe z danego statusu? – Hendrik

12

Zobacz mój banana-gym dla wyjątkowo małego środowiska.

Tworzenie nowych środowisk

Zobacz stronę główną repozytorium:

https://github.com/openai/gym/tree/master/gym/envs#how-to-create-new-environments-for-gym

Kroki są:

  1. utworzyć nowe repozytorium o strukturze PIP-pakietu

Powinno to wyglądać tak: Aby uzyskać pełną zawartość, należy kliknąć powyższy link. Szczegóły, o których nie wspomniano, to w szczególności, jak powinny wyglądać niektóre funkcje w foo_env.py. Patrząc na przykłady i na gym.openai.com/docs/ pomaga.Oto przykład:

class FooEnv(gym.Env): 
    metadata = {'render.modes': ['human']} 

    def __init__(self): 
     pass 

    def _step(self, action): 
     """ 

     Parameters 
     ---------- 
     action : 

     Returns 
     ------- 
     ob, reward, episode_over, info : tuple 
      ob (object) : 
       an environment-specific object representing your observation of 
       the environment. 
      reward (float) : 
       amount of reward achieved by the previous action. The scale 
       varies between environments, but the goal is always to increase 
       your total reward. 
      episode_over (bool) : 
       whether it's time to reset the environment again. Most (but not 
       all) tasks are divided up into well-defined episodes, and done 
       being True indicates the episode has terminated. (For example, 
       perhaps the pole tipped too far, or you lost your last life.) 
      info (dict) : 
       diagnostic information useful for debugging. It can sometimes 
       be useful for learning (for example, it might contain the raw 
       probabilities behind the environment's last state change). 
       However, official evaluations of your agent are not allowed to 
       use this for learning. 
     """ 
     self._take_action(action) 
     self.status = self.env.step() 
     reward = self._get_reward() 
     ob = self.env.getState() 
     episode_over = self.status != hfo_py.IN_GAME 
     return ob, reward, episode_over, {} 

    def _reset(self): 
     pass 

    def _render(self, mode='human', close=False): 
     pass 

    def _take_action(self, action): 
     pass 

    def _get_reward(self): 
     """ Reward is given for XY. """ 
     if self.status == FOOBAR: 
      return 1 
     elif self.status == ABC: 
      return self.somestate ** 2 
     else: 
      return 0 

Użyj środowisko

import gym 
import gym_foo 
env = gym.make('MyEnv-v0') 

Przykłady

  1. https://github.com/openai/gym-soccer
  2. https://github.com/openai/gym-wikinav
  3. https://github.com/alibaba/gym-starcraft
  4. https://github.com/endgameinc/gym-malware
  5. https://github.com/hackthemarket/gym-trading
  6. https://github.com/tambetm/gym-minecraft
  7. https://github.com/ppaquette/gym-doom
  8. https://github.com/ppaquette/gym-super-mario
  9. https://github.com/tuzzer/gym-maze
+0

Dostaję brzydki "' gym_foo' importowany, ale nieużywany ". Jak mogę się go pozbyć? – hipoglucido

Powiązane problemy