关于highway-env自定义自己的环境过程

      最开始我的highway-env版本为1.8.1,按照如下操作一直创建不成功,报错显示为gymnasium.error.NameNotFound: Environment mymerge doesn't exist. Did you mean: `merge`?

后面改为highway-env版本为1.5,当然包也换成1.5版本的包了,然后按照如下操作创建成功。

       highway-env有给出6个环境实例,最开始先按照某个环境模仿,所以我选择了merge.py环境。

1、复制merge.py,在envs文件下创建一个自己的环境文件,命名为mymerge.py。

2、在mymerge.py中修改,首先修改类名,将原类名class MergeEnv(AbstractEnv):修改为class myMergeEnv(AbstractEnv):

3、在mymerge.py文件开头导入from gym.envs.registration import register

4、在mymerge.py文件末尾添加

register(
    id='mymerge-v0',  (调用环境时的id)
    entry_point='highway_env.envs:myMergeEnv'(这里一定要与上面新命名的类名一致),
)

上述mymerge.py修改完成。

5、在原来的envs文件夹中有一个__init__.py文件,所有新建的环境要在这里完成导入才可以使用,所以需要在原来的代码下面添加一行

from highway_env.envs.mymerge_env import *,这里就意味这将新建的环境文件成功导入进来啦。

6、使用环境:新建一个文件调用新环境id查看是否成功创建。

import gym
import highway_env
from matplotlib import pyplot as plt

env = gym.make('mymerge-v0')  (新id名)
env.reset()

for _ in range(20):
    action = env.action_type.actions_indexes["IDLE"]
    obs, reward, down, info = env.step(action)
    env.render()
plt.imshow(env.render(mode="rgb_array"))
plt.show()

7、正常出现小窗口动画即为创建成功啦!

上述过程结合csdn上其他博主的经验和自己的探索,如有错误多多交流,一起进步!

你可能感兴趣的:(python,开发语言)