自定义并注册Gym环境
一.建立以下形式的文件结构
二.各文件的代码
setup.py
是pip的安装文件。它描述了环境的名字、版本、依赖等。
steup.py:
from setuptools import setup
setup(name='gym_ubi',
version='0.0.1',
install_requires=['gym']
)
gym_ubi目录下的 _init_.py
它注册了你想创建环境的id和entry_points(文件位置)
id#环境名,版本号v0必须有
entry_points#文件夹名.文件名:类名
import logging
from gym.envs.registration import register
logger = logging.getLogger(__name__)
register(
id='Gym_ubi-v0',
entry_point='gym_ubi.envs:MyUBIEnv'
)
/gym_ubi/envs目录下的_init_.py
,其中是ubi_env是环境所存在的文件名字,MyUBIEnv是该文件下的类。
from gym_ubi.envs.ubi_env import MyUBIEnv
/gym_ubi/envs/ubi_env.py
就是自己想定义的环境,通常有以下结构。
1、reset(self):重置环境的状态,返回观察。
2、step(self,action):推进一个时间步长,返回 observation,reward,done,info
3、render(self,mode=’human’,close=False):重绘环境的一帧。默认模式一般比
较友好,如弹出一个窗口
import gym
from gym import error, spaces, utils
from gym.utils import seeding
class MyUBIEnv(gym.Env):
metadata = {'render.modes': ['human']}
def __init__(self):
pass
def step(self, action):
print("step.")
def reset(self):
print("reset")
def render(self, mode='human', close=False):
pass
/gym_ubi/envs/UBIAgent.py 可以测试环境是否成功创建。
import gym
import gym_ubi
from gym import envs
env = gym.make('Gym_ubi-v0')
env.reset()
for _ in range(5):
env.render()
env.step(env.action_space.sample()) # take a random action
envids = [spec.id for spec in envs.registry.all()]
print("NUM:",len(envids))
for envid in sorted(envids):
print(envid)
三.安装并测试图
安装方式:在此文件夹目录下/gym-ubi-master利用终端Anaconda Prompt敲
pip install -e .
测试结果截图:表面已成功自定义环境。