首页 > 解决方案 > 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)

标签: pythonnumpyreinforcement-learningopenai-gym

解决方案


这与编程并没有真正的关系,所以也许在stats.stackexchange上你可能会得到更好的答案。无论如何,这取决于您想要多少准确度。我猜你想根据传感器读数改变温度(增加、减少、不改变)。50 和 51 之间是否有很大不同(就最佳行动而言)?如果不是,那么您可以每 2 度对状态空间进行一次离散化。等等。

更一般地说,这样做是在使用 RL 中所谓的“特征”。状态空间间隔上的离散化称为平铺编码,通常效果很好。

如果您是 RL 新手,我真的建议您阅读这本书,或者至少阅读与您正在做的事情相关的第 1、3、4 章。


推荐阅读