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
Jest to zdecydowanie możliwe. Mówią to na stronie Dokumentacja, blisko końca.
, 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
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 ...
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ą:
- 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
- https://github.com/openai/gym-soccer
- https://github.com/openai/gym-wikinav
- https://github.com/alibaba/gym-starcraft
- https://github.com/endgameinc/gym-malware
- https://github.com/hackthemarket/gym-trading
- https://github.com/tambetm/gym-minecraft
- https://github.com/ppaquette/gym-doom
- https://github.com/ppaquette/gym-super-mario
- https://github.com/tuzzer/gym-maze
Dostaję brzydki "' gym_foo' importowany, ale nieużywany ". Jak mogę się go pozbyć? – hipoglucido
- 1. Czy jest możliwe stworzenie syntezatora opartego na HW dla RTL?
- 2. Jaki jest najlepszy sposób na stworzenie prywatnego, autonomicznego środowiska python?
- 3. Czy jest możliwe utworzenie nowego operatora w języku C#?
- 4. Czy możliwe jest utworzenie nowego projektu firebase przez API?
- 5. Czy anaconda tworzy osobną zmienną PYTHONPATH dla każdego nowego środowiska?
- 6. nodeenv zawiesza się podczas konfigurowania nowego środowiska
- 7. Czy możliwe jest przeciążenie operatorów w C?
- 8. Czy jest jakiś sposób na stworzenie łatki do przeglądu?
- 9. Czy możliwe jest leniwe generowanie koła?
- 10. Nodejs/mangusta. jakie podejście jest lepsze niż stworzenie dokumentu?
- 11. Czy możliwe jest użycie std :: iter :: FlatMap.clone()?
- 12. Czy możliwe jest zbudowanie projektu java tylko raz przy użyciu środowiska Eclipse i udostępniania?
- 13. Czy w JavaScript jest możliwe metaprogramowanie?
- 14. Czy jest możliwe użycie "number_to_currency" w kontrolerze?
- 15. Czy możliwe jest rozszerzenie tablic w C#?
- 16. Czy jest możliwe utworzenie IME w WinRT?
- 17. Czy możliwe jest metaprogramowanie w C#?
- 18. Czy jest możliwe odtworzenie ścieżki w CAKeyFrameAnimation?
- 19. Czy jest możliwe użycie CallerMemberNameAttribute w f #
- 20. Czy możliwe jest posiadanie wielu atrybutów danych- {imie} w HTML5?
- 21. Angular 2 - Czy możliwe jest korzystanie z nowego routera podczas aktualizacji za pomocą "Adaptera aktualizacji"
- 22. Windows 10: czy możliwe jest ręczne dodanie nowego powiadomienia do centrum działań?
- 23. Czy jest możliwe utworzenie akapitów w komendzie zarządzania django?
- 24. Wywoływanie danych użytkownika Facebooka za pośrednictwem nowego środowiska społecznościowego iOS6
- 25. Czy możliwe jest utworzenie okna dialogowego widoku listy?
- 26. Jaki jest najprostszy sposób na stworzenie ukształtowanego okna w wxPythonie?
- 27. Czy możliwe jest automatyzowanie konsoli Firebug?
- 28. Czy jest możliwe sprawdzenie pojedynczego obiektu węzła?
- 29. QT4: Czy możliwe jest płynne przewijanie QListView?
- 30. Czy możliwe jest mieszanie dodatków z matplotlib?
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