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

如何在gym.Env的step方法内获取当前步数?实现N步终止环境

在Gym Env的step方法中访问当前步数并实现N步后终止环境

当然可以做到,核心思路是在自定义的Gym环境类里维护一个步数计数器,具体实现步骤如下:

  • 环境初始化阶段,定义最大步数max_steps和计数器current_step,并将计数器初始化为0。
  • 每次调用step()方法时,先让计数器自增,接着判断当前步数是否达到设定的max_steps,如果达到就将done设为True,触发环境终止。
  • 必须在reset()方法中重置计数器,否则下一轮episode的步数会延续上一轮的数值,导致终止条件失效。

以下是完整的代码示例:

import gym
from gym import spaces
import numpy as np

class CustomEnv(gym.Env):
    def __init__(self, max_steps=100):
        super().__init__()
        self.max_steps = max_steps
        self.current_step = 0
        # 根据你的需求定义动作空间和观测空间
        self.action_space = spaces.Discrete(2)
        self.observation_space = spaces.Box(low=0, high=1, shape=(4,), dtype=np.float32)

    def step(self, action):
        self.current_step += 1
        # 这里编写你的环境逻辑:计算奖励、生成下一个观测值等
        reward = 1.0
        next_state = self.observation_space.sample()
        done = self.current_step >= self.max_steps
        # 可选:返回当前步数的信息
        info = {"current_step": self.current_step}
        return next_state, reward, done, info

    def reset(self):
        self.current_step = 0
        return self.observation_space.sample()

在Stable Baselines3中使用这个环境时,模型会自动识别done=True的信号,触发环境重置并开启新的episode,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:16:04