ML을 사용하여 비디오 게임을하는 방법을 배울 AI 에이전트를 만드는 임무가 있습니다. 기존 환경을 사용하고 싶지 않기 때문에 OpenAI Gym을 사용하여 새로운 환경을 만들고 싶습니다. 새로운 사용자 지정 환경을 생성하려면 어떻게해야합니까?
또한 OpenAI Gym의 도움없이 특정 비디오 게임을 할 수있는 AI Agent 제작을 개발할 수있는 다른 방법이 있습니까?
답변:
banana-gym
매우 작은 환경에 대해서는 저 를 참조하십시오 .
저장소의 기본 페이지를 참조하십시오.
https://github.com/openai/gym/blob/master/docs/creating-environments.md
단계는 다음과 같습니다.
다음과 같이 보일 것입니다.
gym-foo/
README.md
setup.py
gym_foo/
__init__.py
envs/
__init__.py
foo_env.py
foo_extrahard_env.py
그 내용을 보려면 위의 링크를 따르십시오. 언급되지 않은 세부 사항은 특히 일부 기능이 어떻게 생겼는지에 대한 foo_env.py
것입니다. 예제를보고 gym.openai.com/docs/에서 도움이됩니다. 다음은 예입니다.
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
import gym
import gym_foo
env = gym.make('MyEnv-v0')
import gym_foo # noqa
pip install -e .
명령을 수행 하면 @hipoglucido에 도움이되었습니다
확실히 가능합니다. 그들은 문서 페이지의 끝 부분에서 그렇게 말합니다.
이를 수행하는 방법에 대해서는 기존 환경의 소스 코드에서 영감을 얻어야합니다. github에서 사용할 수 있습니다.
https://github.com/openai/gym#installation
대부분의 환경은 처음부터 구현하지 않고 기존 환경을 둘러싼 래퍼를 만들고 강화 학습에 편리한 모든 인터페이스를 제공했습니다.
나만의 것을 만들고 싶다면 아마도이 방향으로 가서 이미 존재하는 것을 체육관 인터페이스에 적용해야합니다. 이것은 매우 시간이 많이 소요될 가능성이 있지만.
귀하의 목적에 맞는 또 다른 옵션이 있습니다. OpenAI의 우주입니다.
예를 들어 kongregate 게임에서 모델을 훈련 할 수 있도록 웹 사이트와 통합 할 수 있습니다. 그러나 우주는 체육관만큼 사용하기 쉽지 않습니다.
초보자라면 표준 환경에서 바닐라 구현으로 시작하는 것이 좋습니다. 기본 문제를 통과 한 후 계속해서 증가하십시오.
gym_foo
수입되었지만 사용되지 않음"을 얻습니다 . 어떻게 제거 할 수 있습니까?