How to implement custom environment in keras-rl / OpenAI GYM?

题意:如何在 Keras-RL / OpenAI GYM 中实现自定义环境?

问题背景:

I'm a complete newbie to Reinforcement Learning and have been searching for a framework/module to easily navigate this treacherous terrain. In my search I've come across two modules keras-rl & OpenAI GYM.

我是强化学习的完全新手,一直在寻找一个框架/模块来轻松探索这片充满挑战的领域。在我的搜索中,我遇到了两个模块:keras-rl 和 OpenAI GYM。

I can get both of them two work on the examples they have shared on their WIKIs but they come with predefined environments and have little or no information on how to setup my own custom environment.

我可以让它们在各自的 WIKI 上分享的示例中运行,但这些示例带有预定义的环境,对于如何设置我自己的自定义环境几乎没有信息或没有说明。

I would be really thankful if anyone could point me towards a tutorial or just explain it to me on how can i setup a non-game environment?

如果有人能指引我找到一个教程,或者只是向我解释一下如何设置一个非游戏环境,我将不胜感激。

问题解决:

I've been working on these libraries for some time and can share some of my experiments.

我已经在这些库上工作了一段时间,可以分享一些我的实验。

Let us first consider as an example of custom environment a text environment, https://github.com/openai/gym/blob/master/gym/envs/toy_text/hotter_colder.py

让我们首先考虑一个自定义环境的例子,一个文本环境:https://github.com/openai/gym/blob/master/gym/envs/toy_text/hotter_colder.py

For a custom environment, a couple of things should be defined.

对于自定义环境,需要定义几项内容。

  • Constructor__init__ method   构造函数 `__init__` 方法
  • Action space  动作空间
  • Observation space (see gym/gym/spaces at master · openai/gym · GitHub for all available gym spaces (it's a kind of data structure))

观测空间(请参阅 gym/gym/spaces 在 GitHub 上的 master 分支,了解所有可用的 gym 空间(这是一种数据结构))。

  • _seed method (not sure that it's mandatory)

`_seed` 方法(不确定是否是必须的)

  • _step method accepting action as a param and returning observation (state after action), reward (for transition to new observational state), done (boolean flag), and some optional additional info.

`_step` 方法接受一个动作作为参数,并返回观测(动作后的状态)、奖励(转移到新观测状态的奖励)、done(布尔标志)以及一些可选的附加信息。

  • _reset method that implements logic of fresh start of episode.

_reset 方法实现了新一集开始的逻辑

Optionally, you can create a _render method with something like

可选地,你可以创建一个 _render 方法,类似于这样:

 def _render(self, mode='human', **kwargs):outfile = StringIO() if mode == 'ansi' else sys.stdoutoutfile.write('State: ' + repr(self.state) + ' Action: ' + repr(self.action_taken) + '\n')return outfile

And also, for better code flexibility, you can define logic of your reward in _get_reward method and changes to observation space from taking action in _take_action method.

翻译:此外,为了更好的代码灵活性,你可以在 `_get_reward` 方法中定义奖励的逻辑,并在 `_take_action` 方法中定义执行动作后对观测空间的更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/422961.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

axure判断

在auxre中我们也可以实现判断的功能,当目标等于什么内容时则执行下方的功能。 一、判断输入框中是否有值 画布添加一个输入框、一个文本标签删除其中内容,添加一个按钮,输入框命名为【文本显示】文本标签命名为【提示】 给按钮新增一个交互…

缓存预热/雪崩/穿透/击穿

1. 缓存预热 预先将MySQL中的数据同步至Redis的过程 2. 缓存雪崩 Redis主机出现故障,或有大量的key同时过期大面积失效导致Redis不可用 Redis中key设置为永不过期,或者过期时间错开Redis缓存集群实现高可用多缓存结合预防雪崩服务降级 3. 缓存穿透 …

消息队列面试

一、基础实战 (一)MQ的作用:异步、解耦、流量削峰填谷 (二)MQ应用场景 传统的金融项目一般使用IBMMQ(收费),比如某丰银行项目。ActiveMQ已经成为历史,因为现在很少使用…

Redis 篇-深入了解基于 Redis 实现消息队列(比较基于 List 实现消息队列、基于 PubSub 发布订阅模型之间的区别)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 消息队列的认识 2.0 基于 List 实现消息队列 2.1 基于 List 实现消息队列的优缺点 3.0 基于 PubSub 实现消息队列 3.1 基于 PubSub 的消息队列优缺点 4.0 基于 St…

Unity数据持久化 之 使用Excel.DLL读写Excel表格

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ 终于找到一个比较方便容易读表的方式了,以前用json读写excel转的cvs格式文件我怎么使用怎么别扭&#xf…

AlmaLinux 9 上配置静态 IP 地址

在 Rocky Linux 9 中,密钥文件的新默认存储位置在 /etc/NetworkManager/system-connections 中 cd /etc/NetworkManager/system-connections默认dhcp配置 ~ …

免费SSL证书正在逐渐被淘汰,证书部署自动化的发展趋势即将到来!

目录 背景解决方案。1.使用自签证书(浏览器报警、免费)2.更换支持自签自续的CA机构(免费)3.付费选择CA机构 免费SSL证书正在逐渐被淘汰,证书部署自动化的发展趋势即将到来免费的SSL证书有以下弊端1.有效期短&#xff1…

stm32驱动开发与linux驱动的区别

stm32,gpio设置原理 下图,定义了gpio E的基地址,只要将这个地址强制转换成gpiotypedf的类型,解析时,结构体地址就会自增。这样就可以对不同gpio组,就像定义。 全部gpio定义,强制为结构体类型…

Linux CentOS更换阿里云源解决Could not retrieve mirrorlist http://mirrorlist.centos.org

Linux CentOS7 更新yum 操作的时候出现这个问题: Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org 然后我执行 grep -nr "mirrorlist.centos.org" /etc/yum.repos.d/* 出现 这个问题时可以…

搭建 WordPress 及常见问题与解决办法

浪浪云活动链接 :https://langlangy.cn/?i8afa52 文章目录 环境准备安装 LAMP 堆栈 (Linux, Apache, MySQL, PHP)配置 MySQL 数据库 安装 WordPress配置 WordPress常见问题及解决办法数据库连接错误白屏问题插件或主题冲突内存限制错误 本文旨在介绍如何在服务器上…

爬虫使用代理IP后报错?解决方案在这里!

在数据抓取的过程中,使用代理IP是避免被封禁、提高抓取效率的重要手段。然而,有时候即使配置了代理IP,依然会遇到各种报错问题。本文将详细解析常见的报错类型,并提供解决方案,帮助你顺利进行数据抓取。 常见报错类型…

MySQL表的操作与数据类型

目录 前言 一、表的操作 1.创建一个表 2.查看表的结构 3.修改表 4.删除一个表 二、 MySQL的数据类型 0.数据类型一览: 1.整数类型 2.位类型 3.小数类型 4.字符类型 前言 在MySQL库的操作一文中介绍了有关MySQL库的操作,本节要讲解的是由库管理的结构——…

智能体 vs AI智能体:区别与联系,一文读懂!

​ 在AI技术蓬勃发展的今天,“智能体”(Agent)和”AI智能体”(AI Agent)两个概念经常被提及,二者在很多场合下会被混淆,但其实它们有着不同的定义和应用。我觉得很有必要小小科普下两者的定义与…

软件测试学习笔记丨Pytest的使用

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22158 1. 简介 pytest是一个成熟的全功能python测试框架测试用例的skip和xfail,自动失败重试等处理能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/ap…

HTML的块级元素与行内元素

在HTML中,元素可以分为两大类:块级元素(block-level elements)和行内元素(inline elements)。这两种类型的元素在网页布局和呈现中扮演着不同的角色。 块级元素(Block-level Elements&#xff…

CMU 10423 Generative AI:HW1(编程部分:在GPT-2模型中实现RoPE、GQA)

完整代码和PDF笔记:https://github.com/YM2025/CMU_10423_2024S 文章目录 1 概述Rotary Positional Embeddings (RoPE)Grouped Query Attention (GQA)实验任务 2 项目文件1. requirements.txt2. input.txt3. chargpt.py4. mingpt/a. model.pyb. trainer.pyc. utils.…

毕业论文选题难?5招帮你轻松搞定选题!

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 你是不是已经为毕业论文的选题愁得头发都要掉光了?每次打开文档,都觉得什么都想写,又好像什么都写不了。选题看起来很简单,但真正开始动手的时候,…

深入探索系统架构设计

目录 前言 软件的体系结构 软件架构定义 软件架构设计与生命周期 1、需求分析阶段 2、设计阶段 3、实现阶段 4、构件组装阶段 5、部署阶段 6、后开发阶段 软件架构的重要性 1、架构设计能够满足系统的品质 2、架构设计使受益人达成一致的目标 3、架构设计能够支持…

UDS 诊断 - RequestTransferExit(请求传输终止)(0x37)服务

UDS 诊断服务系列文章目录 诊断和通信管理功能单元 UDS 诊断 - DiagnosticSessionControl(诊断会话控制)(0x10)服务 UDS 诊断 - ECUReset(ECU重置)(0x11)服务 UDS 诊断 - SecurityA…

【北京迅为】《STM32MP157开发板使用手册》- 第二十六章Cortex-M4 GPIO_蜂鸣器实验

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…