如何将 OpenAI 健身房 Box Space 转换为离散

问题描述

要使用 Q-learning,我需要创建一个大小为 [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 表。我知道 wrappers,但不知道如何使用它们以及应该使用哪个。


上一节是一个快速总结,这里更详细地说明问题:

我正在为游戏 Neutreeko 创建 OpenAi 健身房环境。状态是 8 个方向,环境是 Box(或 NumPy 数组)。游戏的创造者声明:

有 3,450,516 个有效的棋盘位置。 source

所以我需要找到一种方法将每个板映射到一个 ID 以用作 Q 表的索引。 我向创作者询问了他如何获得这个号码的一些帮助,他回答:

我不完全确定我是如何到达 3,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 的方法。试试看:

Attempt to find Ids

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)