有多少人工,就有多少智能

关于GYM的render mode = ‘human’渲染问题

关于GYM的render mode = 'human’渲染问题
在使用render_mode = 'human’时,会出现无论何时都会自动渲染动画的问题,比如下述算法

此时就算是在训练过程中也会调用进行动画的渲染,极大地降低了效率,毕竟我的目的只是想通过渲染检测一下最终的效果而已

import Q_learning as ql
import gym

env = gym.make("CliffWalking-v0", render_mode='human')
Q = ql.train(env, 1000)
state = env.reset()[0]

env.render()
while True:
action = Q[state].argmax()
next_state, reward, done, _, _ = env.step(action)
state = next_state
if done:
break
env.close()

为了解决上述问题,可以采用如下的方法

在开始将mode设置为none,当想要渲染时再设置为human

import Q_learning as ql
import gym

# 在训练期间关闭渲染
env = gym.make("CliffWalking-v0", render_mode=None)
Q = ql.train(env, 1000)

# 训练结束后开启渲染
env = gym.make("CliffWalking-v0", render_mode='human')
state = env.reset()[0]

env.render()
while True:
action = Q[state].argmax()
next_state, reward, done, _, _ = env.step(action)
state = next_state
if done:
break
env.close()

 

posted @ 2024-04-08 13:28  lvdongjie-avatarx  阅读(63)  评论(0编辑  收藏  举报