You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Gym的Lunar Lander演示代码时出现错误

问题解决

1. 修复policy未定义错误

代码中的policy(observation)是占位符,必须先定义这个策略函数才能运行。如果只是测试环境,可先使用简单的随机策略示例:

import gym
import random

# 定义策略函数:随机选择动作(LunarLander-v2动作空间为0-3的离散值)
def policy(observation):
    return random.randint(0, 3)

env = gym.make("LunarLander-v2", render_mode='human', new_step_api=True)
observation, info = env.reset(seed=42, return_info=True)
for _ in range(1000):
    action = policy(observation)
    # 新版API返回5个值:观测、奖励、终止状态、截断状态、额外信息
    observation, reward, terminated, truncated, info = env.step(action)

    # 终止或截断时重置环境
    if terminated or truncated:
        observation, info = env.reset(return_info=True)
env.close()

2. 解决Gym API弃用警告

原代码使用了旧版step API,该API会被逐步淘汰,按以下方式切换到新版API即可消除警告:

  • 创建环境时添加new_step_api=True参数
  • 调用env.step(action)时接收5个返回值:observation, reward, terminated, truncated, info
  • 用terminated or truncated替代原代码中的done判断结束条件

错误说明

  • NameError: name 'policy' is not defined:代码调用了未定义的policy函数,必须先实现该函数(可以是随机策略、规则策略或训练后的智能体策略)。
  • 弃用警告:Gym旧版step API将不再维护,新版API拆分了结束状态的判断逻辑,更清晰规范。

内容的提问来源于stack exchange,提问作者Lawrie Darbyshire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 11:09:14