MLを使用してビデオゲームをプレイする方法を学習するAIエージェントを作成する割り当てがあります。既存の環境を使いたくないので、OpenAIGymを使って新しい環境を作りたいです。新しいカスタム環境を作成するにはどうすればよいですか?
また、OpenAIジムの助けを借りずに特定のビデオゲームをプレイするためのAIエージェントの開発を開始できる他の方法はありますか?
回答:
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の宇宙です
Webサイトと統合して、たとえばkongregateゲームでモデルをトレーニングできます。しかし、ユニバースはジムほど使いやすいものではありません。
初心者の場合は、標準環境でのバニラ実装から始めることをお勧めします。基本の問題に合格したら、インクリメントに進みます...
gym_foo
インポートされたが未使用」になります。どうすればそれを取り除くことができますか?