python - python分箱数据openAI健身房
问题描述
我正在尝试使用 openAI gym 创建一个用于强化学习的自定义环境。我需要表示环境将在名为的变量中看到的所有可能值observation_space
。代理可以使用 3 种可能的操作action_space
更具体地说,它observation_space
是一个温度传感器,它可以看到从 50 到 150 度的可能范围,我认为我可以通过以下方式表示所有这些:
编辑,我的 action_space numpy 数组错误
import numpy as np
action_space = np.array([ 0, 1, 2])
observation_space = np.arange(50,150,1)
有没有更好的方法可以用于observation_space
存储数据的地方?即,制作 20 个 50-55、55-60、60-65 等的垃圾箱...
我认为我所拥有的东西会起作用,但似乎有点麻烦......而且我相信有更好的做法,因为我在这个主题上没有很多智慧。这将打印出一个 Q 表:
action_size = action_space.shape[0]
state_size = observation_space.shape[0]
qtable = np.zeros((state_size, action_size))
print(qtable)
解决方案
这与编程并没有真正的关系,所以也许在stats.stackexchange上你可能会得到更好的答案。无论如何,这取决于您想要多少准确度。我猜你想根据传感器读数改变温度(增加、减少、不改变)。50 和 51 之间是否有很大不同(就最佳行动而言)?如果不是,那么您可以每 2 度对状态空间进行一次离散化。等等。
更一般地说,这样做是在使用 RL 中所谓的“特征”。状态空间间隔上的离散化称为平铺编码,通常效果很好。
如果您是 RL 新手,我真的建议您阅读这本书,或者至少阅读与您正在做的事情相关的第 1、3、4 章。
推荐阅读
- ios - 将 main.strings 文件中的现有字符串用于另一个元素的文本
- java - 在正确的包结构中找不到没有@EnableJpaRepositories 的存储库
- javascript - 如何集成更少的代码行?
- vue.js - 如何让全球商店与 Nuxt 中的其他商店共享
- css - 当我只对文本应用填充时,为什么图像和文本都会移动?
- python - django.core.exceptions.FieldError:ModelForm 中的未知字段
- javascript - 如何在 MarkLogic 上的 Corb2 中增加堆大小
- scala - 如何在 Spark Scala 中运行批量配置单元查询
- reactjs - 我可以使用 UseState 在两个类别之间切换数据吗?
- azure - 使用逻辑应用中可用的函数从字符串中删除前导零