使用OpenAI Gym玩CartPole-v1时按键映射正确但游戏持续重启怎么办?
解决CartPole-v1人类游玩模式启动即重启的问题
可能的原因及修复方案
1. 动作格式错误
你当前的keys_to_action使用了元组格式(0,)和(1,),但CartPole-v1的动作是单个整数(0代表左移,1代表右移),play函数期望直接传入整数动作而非元组。修改映射为:
import gym from gym.utils.play import play play(gym.make("CartPole-v1"), keys_to_action={"a":0, "d":1}, zoom=1)
2. Gym版本兼容性问题
如果使用的是0.26及以上版本的Gym,原OpenAI Gym已迁移到Gymnasium库,且play函数的调用方式有变化。先安装依赖:
pip install gymnasium[classic-control]
再修改代码(必须指定render_mode="human"才能正常渲染交互窗口):
import gymnasium as gym from gymnasium.utils.play import play play(gym.make("CartPole-v1", render_mode="human"), keys_to_action={"a":0, "d":1}, zoom=1)
3. 初始状态触发自动重置
如果上述方法无效,可能是初始帧就触发了环境终止条件(比如杆子初始倾斜角度达标),可以添加noop_action参数指定无操作时的默认动作:
play(gym.make("CartPole-v1"), keys_to_action={"a":0, "d":1}, zoom=1, noop_action=0)
内容的提问来源于stack exchange,提问作者Issa AlBawwab
相关产品推荐
相关产品推荐

