如何设置 openai-gym 环境以特定状态而不是“env.reset()”开始?

2023-11-22

今天,当我尝试在openai-gym环境下实现一个rl-agent时,我发现一个问题,似乎所有的agent都是从最初始的状态开始训练的:env.reset(), i.e.

import gym

env = gym.make("CartPole-v0")
initial_observation = env.reset()  # <-- Note
done = False

while not done:
    action = env.action_space.sample()  
    next_observation, reward, done, info = env.step(action)

env.close()  # close the environment

因此代理可以沿着路线行事是很自然的env.reset() -(action)-> next_state -(action)-> next_state -(action)-> ... -(action)-> done,这是一集。但是智能体如何从中间状态等特定状态开始,然后从该状态采取行动呢?例如,我从重播缓冲区中采样体验,即(s, a, r, ns, done),如果我想直接从状态开始训练代理怎么办ns,并采取行动Q-Network,那么对于一个n-step向前迈出一步。像这样的东西:

import gym

env = gym.make("CartPole-v0")
initial_observation = ns  # not env.reset() 
done = False

while not done:
    action = DQN(ns) 
    next_observation, reward, done, info = env.step(action)
    # n-step later or done is true, break

env.close()  # close the environment

但即使我设置了一个变量initial_observation as ns,我认为代理人或env根本不会意识到这一点。我怎样才能告诉gym.env我想将初始观察设置为ns并让代理知道特定的开始状态,直接从特定的观察中获得继续训练(从特定的环境开始)?


AFAIK,目前大多数 OpenAI 健身房环境的实现(包括CartPole-v0您在问题中使用的)没有实现任何机制来在给定状态下初始化环境。

不过修改起来不应该太复杂CartPoleEnv.reset()方法以接受充当初始状态的可选参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置 openai-gym 环境以特定状态而不是“env.reset()”开始? 的相关文章

  • 为什么类型提示不能在 for 循环中使用?

    在 a 中注释目标for声明无效 gt gt gt for i str in test string File
  • 组内条件计数

    我想在之后进行条件计数groupby 例如 按列的值分组A 然后计算每组中值出现的频率5出现在列中B 如果我整个过程都这样做DataFrame 只是len df df B 5 所以我希望我能做到df groupby A df B 5 siz
  • 初始化整数变量以进行比较

    我正在学习麻省理工学院的开放课件课程计算机科学和 Python 编程简介 https ocw mit edu courses electrical engineering and computer science 6 0001 introd
  • 如果出现重复,则主键取正值

    我有一个数据框df Key1 Key2 Value K11 K21 V1 K11 K21 V1 K13 K23 V2 K13 K23 V2 现在 例如对于相同的键 K11 K21 组合 我们有 2 个值 一负一正 如何从此 df 中仅获取正
  • Python替换多个字符串同时支持反向引用

    有一些好方法 https stackoverflow com questions 6116978 python replace multiple strings处理 python 中的同时多字符串替换 但是 我在创建一个高效的函数来实现这一
  • 数据帧中标志切换之间的行的总和/平均值

    我有一个像这样的数据框 id power flag 0 20 0 1 25 0 2 26 1 3 30 1 4 18 0 5 30 0 6 19 0 7 21 1 8 23 0 我正在尝试获取行的平均值 总和power柱子 输出应该是这样的
  • for 循环如何评估其参数

    我的问题很简单 Does a for循环评估它每次使用的参数 Such as for i in range 300 python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表 如果是的话 这是避免这种情况的方法吗 lst ra
  • 如何在 Python 3 中循环遍历集合,同时从集合中删除项目

    这是我的情况 我有一个list set 哪个并不重要 movieplayer我想调用的对象 preload 功能开启 该预加载函数可以立即返回 但希望将来返回一点 我想存储这个电影播放器 集合 表明它们尚未预加载 然后循环它们 调用prel
  • python是带有字符串的运算符行为[重复]

    这个问题在这里已经有答案了 我无法理解以下行为 我正在创建 2 个字符串 并使用 is 运算符来比较它 对于第一种情况 它的工作方式有所不同 对于第二种情况 它按预期工作 当我使用逗号或空格时 它显示是什么原因False与比较is当没有使用
  • Windows 中的 Python 多处理池奇怪行为

    Python 多处理池在 Linux 和 Windows 之间有不同的行为 当按工作人员数量运行方法映射时 在 Linux 中 它会在您作为参数提供的特定函数的范围内运行该进程 但在 Windows 中 每个工作进程都在父进程的范围内运行
  • python win32com.client 调整窗口大小

    我正在使用 Python 3 4 1 通过 win32com client 控制 Windows 应用程序 我可以激活它 我可以发送击键 点击等 现在我想知道是否有办法调整窗口大小并将其设置到特定位置 我找不到方法 这里有一些代码片段 所以
  • 无法将 librosa 与 python 3 一起使用

    我已经在 Windows 上的 ubuntu 子系统上使用 pip3 正确安装了 librosa 但是当我尝试执行像这样的简单程序时 import librosa data sr librosa load sound mp3 print d
  • Python - 如何实现“可停止”线程?

    已经发布解决方案了here https stackoverflow com questions 323972 is there any way to kill a thread in python创建一个可停止的线程 但是 我在理解如何实施
  • 如果多个测试有特定异常,则停止 pytest 测试

    我想使用停止测试套件pytest exit 如果任何测试因特定异常而失败 例如 50 个测试 其中任何一个都可能在某个时刻因该异常而失败 如果这些测试中至少有 2 个测试因该异常而失败 我想停止执行 我试图保留一个全局计数器 一个固定装置s
  • scrapy获取同一个类的第n个子文本

    我附上了一张照片 我面临的问题是获取同一类的第一个元素 我想得到 adxHeader gt adxExtraInfo 1st one gt adxExtraInfoPart 1st one gt a text 我编写了以下代码但不起作用 任
  • 如何将 UPX 与 pyinstaller 一起使用?

    如何将 UPX 与 pyinstaller 一起使用 我正在关注文档 我已经下载了UPX 我的文件如下所示 import csv import selenium import pandas print Hello 然后我运行 pyinsta
  • 如何从 Python 3.5 降级到 3.4

    我想安装 kivy 链接在这里 https kivy org docs installation installation windows html install win dist 用于项目 但是 当尝试使用 pip 安装它所依赖的包时
  • 在 python 2 或 python 3 中编写 csv 文件的便携式方法

    在我的 Windows 机器上 我通常在 python 2 中这样做来编写 csv 文件 import csv f open out csv wb cr csv writer f delimiter cr writerow a b c f
  • 在 tkinter 和 python 中嵌套网格和框架

    我正在尝试在更大的网格结构中的框架内设置一个网格 我试图将其提炼为问题的最简单版本 from tkinter import Tk Frame Label Entry root Tk root geometry 800x800 frame1
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面

随机推荐