reinforcement-learning - 具有稳定基线的自定义 Openai 健身房环境
问题描述
我正在尝试创建一个简单的 2D 网格世界 Openai Gym 环境,代理从网格世界的任何地方前往终端单元。例如,在 5x5 网格世界中,X 是当前代理位置,O 是代理前往的终端单元。
.....
.....
..X..
.....
....O
我的动作空间被定义为离散值 [0,4),分别代表上、左、下和右。并且,观察空间是一个 1D 框,表示代理在网格世界中的当前位置,例如 [12](索引从 0 开始到 size*size-1)。我想知道定义观察空间的方式之间有什么区别。例如,除了我目前的定义,同一环境的观察空间可以定义如下,仅举几例。
- i 的离散值,其中 i 代表 agent 的当前位置。
- 一个除代理当前位置为 1 外全为零的二维矩阵。
- 也许其他人在稳定基线算法或其他方面有什么不同?
解决方案
定义观察空间的方式之间有什么区别?
我认为更好的问题是:
定义观察空间的方式之间存在差异的原因是什么?
为了定义观察空间,需要确定两件事:
需要什么信息算法?
这在很大程度上取决于您可以收集哪些信息和代理目标,例如,如果您希望代理在迷宫中到达目标,那么您可以提供代理当前位置、代理周围障碍物方向、目标方向等信息。
输入信息应该是什么形式?这在很大程度上取决于您使用的信息和代理解决方案(即算法本身),有时您有多种选择,您需要运行实验以找出最适合给定算法的方法,就像您列出的少数几个一样。
所以一般来说,定义观察空间的不同方式的原因是为了更好地适应不同的目标和算法。
推荐阅读
- css - 如何使第一列固定在行网格中,其他列可水平滚动
- jquery - 引导数据切换不适用于动态创建的控件
- vb.net - 是否可以在数据表查询中使用变量?
- javascript - 使用自定义切换开关选择 ul li 中的所有项目
- angular - Angular:如何使用 http.delete 或 http.request 删除多个数据
- python - 在网页上使用 Beautiful Soup 与 CSS 选择器时 CSS 类名称不匹配
- ios - 从 AudioUnit 读取时,CannotDoInCurrentContext 是什么意思
- javascript - 已验证的 JSON 抛出 SyntaxError:属性必须是字符串文字
- c# - ExcelDataReader - 获取当前读取行的索引
- node.js - 在 WSL2 中:安装了适用于 Windows 10 nodejs 的 Ubuntu 20.04,但 npm 不工作