> For the complete documentation index, see [llms.txt](https://hujian.gitbook.io/deep-reinforcement-learning/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hujian.gitbook.io/deep-reinforcement-learning/fang-fa/ji-shi-zhan-lve-you-xi/combining-strategic-learning-and-tactical-search-in-real-time-strategy-games.md).

# Combined Strategic and Tacticals

> [Combining strategic learning and tactical search in real-time strategy games](https://arxiv.org/abs/1709.03480)

在实时策略（RTS）游戏中管理AI复杂性的常用技术是使用动作和/或状态抽象。高层次的抽象通常会导致良好的战略决策，但战术决策质量可能会因细节丢失而受损。一种竞争性的方法是对搜索空间进行采样，这通常会在简单的场景中带来良好的战术性能，但高层规划较差。

我们建议使用深度卷积神经网络在一组有限的抽象选择中进行选择，并利用博弈树搜索的剩余计算时间来改进低层策略。CNN通过监督学习对由Puppet Search进行标记的游戏状态进行训练，这是一种使用动作抽象的战略搜索算法。然后，网络用于选择一个脚本和抽象操作，为所有单元生成低层操作。随后，游戏树搜索算法仅考虑靠近对手单位的单位，使用游戏状态的有限视图来改进单位子集的实际动作。

在μRTS游戏中的实验表明，组合算法比其两个独立组件和其他最先进的μRTS代理中的任何一个产生更高的赢率。据我们所知，这是第一次在标准游戏地图上成功应用卷积网络来玩完整的即时战略游戏，因为以前的工作集中在子问题上，例如战斗，或者非常小的地图上。

## 方法

### Algorithm

我们建立在RTS游戏状态评估（Stanescu等人，2016）的先前工作的基础上，应用于μ​​RTS（参见图1）。本研究提出了一种神经网络架构和实验，将其与更简单但更快的评估函数进行比较。 基于CNN的评估显示了评估游戏状态的更高准确性。 此外，当使用最先进的搜索算法时，它们的执行速度明显优于更快的评估。

![](/files/-Lb_ubygnUnIwkE2wsxK)

表2显示了我们使用的评估网络和策略网络的体系结构，它们仅在第一层和最后一层有所不同。策略网络的第一层有一个额外的平面，指示它正在计算哪个玩家的策略。评估网络的最后一层有两个输出，指示状态是玩家1还是玩家2获胜，而策略网络有四个输出，每个输出对应于四个可能动作中的一个。

![](/files/-Lb_z-pTDN7URTZIg3iT)

![](/files/-Lb_vhdG41YbqKmYl16-)

Puppet Search需要一个正向模型来检查不同动作的结果，然后选择最佳动作。大多数RTS游戏除了游戏本身之外没有专用的正向模型或模型。 这通常太慢而无法用于搜索算法，甚至不能用于技术约束，例如封闭源代码或被图形引擎占用。 在游戏过程中使用策略网络进行脚本选择使我们能够绕过游戏前向模型的需要。 当然，在监督训练阶段仍需要前进模型，但在这种情况下执行速度不是问题，因为训练是在离线状态下进行的。 通过强化学习来训练网络将完全消除这种约束。

最后，随着策略网络的快速运行(对于基于搜索的代理，每帧3毫秒的时间预算为100毫秒)，我们可以使用未使用的时间来改进策略。虽然Puppet Search和策略网络使用的脚本代表了不同的战略选择，但它们都有着非常相似的战术行为。与最先进的基于搜索的机器人相比，他们的战术能力较弱，因为之前的结果（Barriga，Stanescu和Buro 2017b）表明。

出于这个原因，所提出的算法将用于战略决策的FCN和对抗性搜索算法相结合。战略部分负责宏观管理:单位生产、工人和向对手派遣战斗单位。战术组件在战斗中处理微观管理。

完整的过程由算法1描述。它首先建立游戏状态的有限视图，只包括靠近对方单位的单位(第2行)。如果该有限状态为空，所有可用的计算时间都分配给策略算法，否则，两种算法都会接收到总可用时间的一小部分。对于每个特定的算法组合，这个分数是根据经验确定的。然后，在第9行中，战略算法用于计算状态中所有单元的动作，接着是计算有限状态中单元动作的战术算法。最后，如果两种算法都为一个特定的单元产生了动作，则通过重新计划战略动作来合并动作(第11行)。

![](/files/-Lb_xOdUvxTGqyTuPge1)

## 实验

### State Evaluation Network

评估网络的训练数据是由一组机器人使用5个不同的地图运行游戏生成的，每个地图有12个不同的起始位置。平局被取消，剩下的比赛被分成2190场训练赛和262场测试赛。每场比赛随机抽取12个游戏状态，共计26,280个训练样本和3,144个测试样本。 数据由布尔值标记，表示第一个玩家是否获胜。所有评估函数在同一数据集上进行训练。评估网络在将样本分类为胜负时达到95％的准确率。

### Policy Network

我们使用了与前一小节相同的程序，但现在我们使用评估网络将样本标记为10秒Puppet Search的结果。 重新制定的策略网络具有预测正确的puppet move73％的准确性，以及预测前2个移动中任何一个的95％准确度。

### Strategy and Tactics

最后，我们比较策略网络和Puppet Search的性能，作为战略/战术代理的战略部分。我们将通过将分配的时间的一小部分分配给战略算法和剩余的战术算法来实现。在战略和战术算法之间划分的最佳时间在实验上确定，对于Puppet Search 为20％。 策略网络使用固定时间（约3ms），剩余时间分配给战术搜索。

![](/files/-LbaE7_NhQ9FS1lBOaID)

![](/files/-LbaEHQk6BkFfUIFrCyl)
