首页 > 解决方案 > 如何将 OpenAI 健身房 Box Space 转变为离散空间

问题描述

要使用 Q 学习,我需要创建一个大小为 [nº of actions][nº of states] 的二维 NumPy 数组。

我需要找到一种方法来获取我的状态并将其转换为整数以便能够创建 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 的方法。这是一个尝试:

尝试查找 ID

标签: pythonnumpycombinationsopenai-gym

解决方案


推荐阅读