python - 如何将 OpenAI 健身房 Box Space 转变为离散空间
问题描述
要使用 Q 学习,我需要创建一个大小为 [nº of actions][nº of states] 的二维 NumPy 数组。
- 我的操作是一个可以轻松转换为整数的方向列表。
- 我的状态是一个盒子:
gym.spaces.Box(low=np.int8(0), high=np.int8(2), shape=(5, 5), dtype=np.int8)
我需要找到一种方法来获取我的状态并将其转换为整数以便能够创建 Q 表。我知道包装器,但不知道如何使用它们以及应该使用哪一个。
上一节是一个快速总结,这里是更详细的问题:
我正在为 Neutreeko 游戏创建一个 OpenAi 健身房环境。状态是 8 个方向,环境是 Box(或 NumPy 数组)。游戏的创造者说:
有 3,450,516 个有效的董事会职位。资源
所以我需要找到一种方法将每个板映射到一个 ID 以用作 Q 表的索引。我向创建者询问他是如何得到这个数字的,他回答说:
我不完全确定我是如何达到 3,450,515 的(这可以追溯到大约 19 年)。我可能假设下一个玩家 (N) 还没有连续三个,这给了他们 C(25, 3) - 48 = 2252 个可能的棋子位置,其中 C(n, k) 表示二项式系数(n 超过 k)。前一个玩家 (P) 应该有 C(25 - 3, 3) = 1540 个可能的位置,总共 2252 x 1540 = 3,468,080 个位置。很可能我已经减去了不可能到达的位置,因为没有位置可以让前一个玩家可以进行合法移动并到达当前位置。
以 5 个可用位置和 3 个部件的简单示例为例,这些部件有 10 种可能的配置,但我找不到使用可用信息(分配的部件索引)将每个配置转换为 id 的方法。这是一个尝试:
解决方案
推荐阅读
- java - 绘制多个画布后JavaFX应用程序无响应
- javascript - SAP UI5-动态属性绑定
- cuda - 如何解决编译此 CUDA 代码时出现的错误?
- google-api - Google Cloud Text-to-Speech - 时间点返回一个空数组
- javascript - 从 HTML 获取用户输入并在 JSON 数组中搜索值
- ios - SwiftUI - 代码中的扩展定义放置
- sql-server - SSISDB 大小 (SQL Server 2014)
- powershell - AWS ec2 run-instances 命令在 PowerShell 中创建具有多个安全组的实例
- swift - 如何删除并重新添加可滚动的 NSTextView 到视图?
- windows - PowerShell 2 - 能够获取所有共享文件夹和共享对象