问题描述
要使用 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 的方法。试试看:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)