最开始我的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上其他博主的经验和自己的探索,如有错误多多交流,一起进步!