如何将纸牌游戏状态编码为神经网络输入

人工智能 神经网络 游戏-ai
2021-10-29 12:33:20

我正在尝试创建神经网络来预测纸牌游戏中的动作。我正在寻找有关将游戏状态编码到我的输入层的建议。这是一个复杂的回合制收藏卡牌游戏(想想万智牌)。我需要表示游戏板各个区域中的牌(牌组、弃牌堆、手牌等)。似乎很难将卡片分配到这些区域,因为这些区域中的卡片数量永远不会恒定。

我正在考虑一种方法,将游戏中的每张牌分配到特定的牌区。游戏中的总牌数应该是恒定的(让我们假设)。我觉得这种方法应该给我一个可能不那么稀疏的输入。

另外,使用这种方法处理卡片重复的最佳方法是什么?假设我的牌库中有 3 张完全相同的卡片。也许其中一张在我手上,两张在我的弃牌堆里。3 张中的哪一张在我手中并不重要,因为它们都是完全相同的牌。现在有多种方法可以在我的网络中表示相同的确切游戏状态,因为每张卡片都有自己的状态。对我来说,这似乎不太好。这会对我的神经网络学习游戏的能力产生多大影响?

1个回答

我不确定你的意思

现在有多种方法可以在我的网络中表示相同的确切游戏状态,因为每张卡片都有自己的状态。对我来说,这似乎不太好。

我们可以将游戏状态视为形式的列向量1Xn. 在这种情况下,您可以根据某种编码形式化持有的卡片。这可以是从哥德尔编号到简单整数分配的任何内容。以下是 python 中的扑克示例:https ://pypi.org/project/treys/

在重复的示例中,您将拥有一个仅具有重复索引的列向量。即:{241, 424, 112, 112 , 455}$