醋醋百科网

Good Luck To You!

如何在OpenAI中创建新的Gym环境

大家好!今天咱们来聊聊在OpenAI里创建新的Gym环境这个事儿。有小伙伴接到了用机器学习让AI智能体玩电子游戏的作业,不想用现成的环境,想自己创建一个新的,那该咋整呢?还有没有其他办法让AI智能体玩特定游戏,而不用依赖OpenAI Gym呢?

创建新环境的步骤

首先,咱们可以参考Martin Thoma给出的方法。可以看看他的banana - gym,这是个非常小的环境示例。创建新环境的具体步骤如下:

1. 创建带有PIP包结构的新仓库

仓库结构得像下面这样:

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/找找答案。

下面是个示例代码:

import gym

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

    def __init__(self):
        pass

    def _step(self, action):
        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):
        if self.status == FOOBAR:
            return 1
        elif self.status == ABC:
            return self.somestate ** 2
        else:
            return 0

2. 使用自己创建的环境

创建好环境后,使用方法如下:

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

另外,还有不少例子可以参考,像gym - soccer、gym - wikinav等。

其他方法和建议

Guilherme de Lazari也给出了一些建议。文档里提到创建新环境是可行的,大家可以参考现有环境的源代码获取灵感,这些代码在GitHub上都能找到。很多环境并不是从头实现的,而是给现有环境做了个包装,弄了个方便强化学习的接口。要是想自己做,也可以朝着这个方向试试,不过可能挺费时间。

还有个OpenAI的Universe也值得关注,它能和网站集成,比如可以让模型在Kongregate游戏上训练。但它没有Gym那么容易上手。

如果是新手,建议先在标准环境上做个基础实现,把基础问题解决了,再进一步探索。

要是你在创建环境时遇到“gym_foo imported but unused”这样的提示,可以告诉编辑器忽略这个导入,一般用import gym_foo # noqa就行。要是按照上面步骤操作后出现“gym_foo”导入错误,执行pip install -e .命令可能会有帮助。

希望这些内容能帮助大家在OpenAI中顺利创建新的Gym环境,让AI智能体在自己定制的游戏世界里大显身手!

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言