庙算兵棋推演AI开发初探(9-对手建模,反策略制定(上))

说来说去,回忆自己曾经在2018年时看到知乎上最简单的打飞机类智能体的比赛就想参加,现在有兵棋平台,只不过更复杂,我进度仍然缓慢------原来是自己总想着依赖着有人能带着完成......但自己想想,有时间有条件的时候,是不是就差自己的一个勇敢或莽撞?也就是不管对错做下去的勇气?------2025-08-18 00:03:38


前面我们完成了对神经网络智能体的构建,对历史回放数据的处理和学习,还有针对奖励函数的强化学习,并且将模型套在了可以有效翻译成动作的行为接口上。现在我想通过对手的历史战绩来优化我当前的智能体,我该怎么做呢?

接下来我发表一点个人的拙见,在硕士期间也阅读过了不少的兵棋方向的论文,自己随便写写。

一、主流 AI 智能体类型与技术路线

  1. 知识 / 规则驱动型智能体基于军事条令、战术库、行为树、有限状态机、OODA 环实现,适合快速部署、解释性强。
  • 代表:兵棋分队级 AI - 微风 1.0 (信息工程大学)、紫冬智剑 2.0(中科院自动化所)
  • 特点:可嵌入战术战法库,适配不同想定,在分队 / 战术级表现稳定。
  1. 数据 / 强化学习驱动型智能体以深度强化学习、自博弈、多智能体协同训练为主,通过海量对局自主进化策略。
  • 代表:庙算平台 AI、AlphaStar 类迁移兵棋、美军 DARPA 兵棋 AI 项目
  • 特点:可在复杂、非对称、大规模对抗中逼近甚至超越人类专业选手。
  1. 大语言模型(LLM)驱动智能体用 LLM 做态势理解、任务规划、自然语言指挥,实现 "意图 - 任务 - 行动" 分层决策。
  • 代表:庙算・WGSR-Bench大模型兵棋基准、基于 GPT/Claude/Gemini 的兵棋决策体
  • 特点:能处理不完全信息、进行策略反思与跨想定泛化。

二、智能体优化的方法目前都有哪些方向

一)算法层面优化(最核心)

1. 强化学习优化

  • 自博弈(Self-Play):不断和历史版本对抗,渐进变强(AlphaStar、AlphaGo 路线)
  • 多智能体强化学习(MARL)
    • 中心化训练 + 分布式执行(CTDE)
    • 价值分解:QMIX、VDN、QTRAN
    • 策略协作:MAPPO、MATD3
  • 探索 - 利用改进
    • 好奇心驱动、内在奖励
    • 噪声网络、随机策略优化
  • 长时序依赖处理
    • 结合 LSTM/Transformer 做态势记忆
    • 分层强化学习(HRL):高层定目标,低层做执行

2. 启发式与传统 AI 优化

  • 行为树、有限状态机(FSM)优化
  • 基于规则的专家系统 + 机器学习纠错
  • 路径规划:A*、JPS、潜在场法改进
  • 动态权重调整的多目标决策(MOPG)

3. 大模型与推理优化

  • LLM 做高层战略决策,RL 做底层执行
  • 少样本 / 上下文学习适配新想定
  • 思维链(CoT)做态势推理、威胁评估
  • 多模态大模型融合图像 + 文本态势

二)结构与架构优化

1. 分层决策架构

  • 战略层:目标选择、资源分配;战法系统与执行序列
  • 战术层:编队、突击、防御
  • 执行层:单位微操作解决兵棋 "长 horizon、高动作空间" 问题。

2. 注意力与表征优化

  • Transformer 态势编码器
  • 图神经网络(GNN)建模友军 / 敌军 / 地形关系
  • 全局 - 局部特征融合,减少冗余观测

3. 多智能体协同机制

  • 通信机制:显式 / 隐式通信学习
  • 联盟形成、角色自动分配
  • 对抗性团队博弈(零和 / 非零和)

三)训练与环境优化

1. 环境与数据增强

  • 随机化初始部署、地形、天气
  • 不完全信息、迷雾战争增强鲁棒性
  • 课程学习(Curriculum Learning):从简单到复杂场景

2. 训练效率优化

  • 分布式训练、样本复用
  • 回放缓冲区优化(PER 优先经验回放)
  • 奖励函数塑形(Reward Shaping)解决稀疏奖励

3. 对抗鲁棒性优化

  • 对抗训练:故意加入干扰、欺骗策略
  • 自适应对手:针对人类常见打法强化
  • 跨想定泛化:不重新训练也能打新场景

四)博弈理论与策略优化

  • 纳什均衡求解、双层优化
  • 鲁棒策略优化(对抗最坏情况)
  • 贝叶斯博弈处理不确定信息
  • 迭代式策略修正、虚拟自博弈
  • 对半马尔可夫过程的处理

五)工程与实操层面优化

  • 动作空间剪枝、无效动作屏蔽
  • 状态特征工程:人工先验 + 自动特征
  • 模型轻量化、推理加速(适合实时兵棋)
  • 人机闭环优化:人类示范学习(IL)+ 微调

六)当前最前沿热点

  1. LLM + MARL 混合智能体
  2. 基于世界模型(World Model)的预推演
  3. Transformer 一统态势 + 决策 + 时序
  4. 多智能体自博弈的持续进化算法
  5. 可解释智能体(XAI):让兵棋 AI 决策可追溯、可信任

嗯,接下来介绍一下我的毕业课题------《基于对手建模的兵棋智能体策略优化研究》。

其实最开始我也是一团浆糊,虽然在2013年就玩过魔兽地图编辑器也有信心实现智能体,但是AI传的神乎其神的自己也想试试怎么就"让AI学习"就能玩的比人还强?

最先智能体实现的相关当然是星际争霸2的alphaStar,后来发现这东西是基于星际的,在我选题期间正好赶上暴雪和网易合作破裂,玩不上,我试着一些方法避开星际2联网来跑现成的有人做好的智能体,但是与我想象的"自己做好智能体代替我和我的同学玩"的情景还查了老远------一旦用星际的python接口就只能从星际的地图编辑器里进入,也就是只能AI和电脑打!

于是我继续寻找更加自由和开放的平台,同时要有一定的现有研究,我找到了microRTS,这是IEEE每年比赛中的一项(甚至还有类宝可梦的AI比赛!)microRTS 竞赛自 ‌2017 年起‌在 ‌IEEE CIG(计算智能与游戏会议)‌上举办。自 ‌2019 年起‌,随 CIG 更名为 ‌CoG(Conference on Games)‌竞赛继续在 CoG 下举办。

CoG 2023 -- competitions -- IEEE Conference on Games 2023

microRTS AI Competition - 2023 COG Results

在我的博客中也能看到我的捣鼓这个平台,结果这个java的想要在windows上运行好python接口却是十分困难......我最终在windows上编译出来了,但是python接口不太好使,我又改去做linux的运行......但是我用WSL没界面......最后不了了之。

最后我用回了我导师的兵棋平台,这也有不少困难,一是版本已经和我2023年时接触的版本发生了变化,一些调用结构变了(获取武器、火力范围的部分函数隐藏在对局过程中消失了)......我终于开始了我的AI之路。


"知己知彼,百战不殆"------对手建模。

我想AI这么厉害,那么在人类社会中总结的经验也一定能用上吧!在不晓得神经网络pytorch如何使用的时候(我总是用编程语言的调用结构来套pytorch,结果根本看不懂......有重新学的pytorch的设计神经网络的范式......),从"人的经验可以被神经网络习得"的奇怪信念中,我觉得总是以最坏情况来对战的假设是否不够针对,于是我尝试使用对手建模这个概念来优化我的智能体。

神经网络给我的一般是这样一种观念,就是通过设计各种的机制(dropout)或者神经网络的结构(FC、CNN、RNN、LSTM、GRU),来让网络能有更好的效果。这神经网络给我的感觉就好像一个可以被烧录的全息相片,从各个角度烧蚀,得到你给它打光反射出烧蚀的样子。

前面说过了,在一场推演中的要素有

  • 态势

  • 动作

  • 地图(棋盘)

  • 想定(任务)

  • 武器

  • 算子(棋子)

  • 规则、裁决

  • 态势就是综合的状态,就像棋盘的一回合的状态。

  • 动作是每个兵力(或称之为算子、棋子、单位)在当前时刻可做的(按中国象棋来说,就是每个棋子可以走到的点,因为有障碍或者"蹩马腿"这种所以会有动作掩码);

  • 地图是兵棋中的一个重要要素,高程(视野阻碍,高打低)和地物(河流、沼泽)回影响打击效果和视野。如果比喻,就像把棋子放在某个格子里就扣过来?

  • 想定就是一个最开始的态势,用哪个地图?有哪些多少个算子参与?算子放在哪个位置?

  • 武器就是毁伤判定的一种东西,有射程、冷却等因素。

碎碎念(我也是怕了总在更新的平台......正在自己做一个抽象的简易兵棋开源平台,最好智能体的动作能通用,便于迁移学习)

在开始做AI的时候碰到的第一个难题却是"如何简化问题"------我发现AI的之中不是完全自动可行的!首先要确定哪些信息是神经网络可以获取的(输入张量),又要定义神经网络能输出什么(强化学习的行为空间),如果将态势信息都输入网络(中间还得经过各种数据处理变成0到1之间的张量)那这会极大的浪费资源(这也是我对AI祛魅的第一次......),于是我多种数据进行了处理和网络设计(详见系列之前的一篇博客)。

我抽象成了"移动,能攻击就攻击"的简单的规则,并从这个规则进行模仿和训练。

兵考虑到原始兵棋环境具有状态空间大、奖励稀疏、决策链条长等特点,直接用于强化学习训练存在收敛困难的问题。为提高算法验证效率,本文构建了一个简化版对抗环境,用于强化学习阶段的策略训练与验证。

该环境保留了兵棋对抗的核心要素,包括多算子协同、局部可观测性以及夺控机制,同时对规则进行适度简化:

地图规模为13×23 网格;

双方各控制3个算子,每个算子具有固定生命值;

每回合(因为模拟20帧算作一回合 )可执行一次移动攻击操作;

攻击具有一定范围与冷却时间;

存在战争迷雾机制,视野范围有限且队友共享;

地图中设置夺控点,持续占领可获得积分;

固定回合数结束后,根据综合得分判定胜负。

在这样限制的情况下,强化学习更容易进行施行。

在实际训练中强化学习会遇到更多的问题,甚至导致我之前模仿学习得到的模型开始乱走,反而胜率为0,这个后面再说。

接下来我开始找优化智能体决策的切入点------对手的位置。

前面的博客我也详细写了,我将【态势得分信息、战场环境、我方暴露位置、我方火力覆盖范围、双方位置】作为对神经网络的输入,同时使用GRU、CNN等网络结构对空间、时序进行针对性处理,还有采用哪些特征作为输入......总之对模仿学习的数据集结果还是不错的。

那么,对方什么属性最能【诱导】我方的战略决策呢?在我简化的对战规则下,破解战争迷雾下的【敌方位置】是最重要的------因为如果敌暗我明(这种词语真是前辈智慧的凝练,是我们思维中的有价值的矿藏)那么肯定有很多决策我们会举棋不定,而如果我们像下棋一样"完全信息",那么对抗的层次就在对未来走势的预判也就是"打未来的战争",而如果不是明棋,那么就多一层"猜"的东西,可以形成"猜疑链",就是半马尔可夫性的问题了。

所以,如何"猜"对方的位置,乃至预判对方的走势,根据这层信息再指定行为,一定效果比没有针对性的好!

这部分我目前分为两种,一种是【策略识别】,一种是【信息补全】------我思考过,我们生活的世界有一些真实,又有一些幻想------这幻想可以是信念、信仰,也可以是知识------但都是你所相信的东西在引领你做出决定,在一次次的先知或者乱猜中进行下去。

策略识别就是通过短期状态,知晓和识别对方正在选择和采用的套路 ;信息补全就是通过对方过去的历史,总结出套路,在认定的习惯套路中猜到对方的行动。这是两层不同的东西。

(这部分也有一些论文,但是,并没有这么"市侩",也没有现有的成熟的策略分类体系------这是我开展的工作)

在兵棋中,我缺少灵活多变的对手总结套路,于是针对固定套路的demoAI进行【信息补全】。那么如何进行落地的总结呢?于是我在数据挖掘的方法中找......

相关推荐
knight_9___2 小时前
RAG面试篇10
人工智能·python·机器学习·agent·rag
格林威2 小时前
面阵相机 vs 线阵相机:堡盟与海康相机选型差异全解析+python实战演示
开发语言·人工智能·python·数码相机·计算机视觉·视觉检测·工业相机
薛定猫AI2 小时前
【深度解析】AI Coding 工具的模型自由与 Agent 架构:从 VS Code 插件到云端代理的技术演进
大数据·人工智能·架构
众乐乐_20082 小时前
如何在ClaudeCode的cli和VsCode客户端中使用Deepseek做基础模型
人工智能·ai
Yolanda942 小时前
【人工智能】《从零搭建AI问答助手项目(四):API调用实战》
人工智能
AI服务老曹2 小时前
从GB28181接入到边缘NPU算力调度:深度解析支持异构计算的工业级AI视频管理平台架构
人工智能·架构·音视频
workflower2 小时前
机器人应用-高空立面清洁
人工智能·深度学习·设计模式·机器人·软件工程·软件构建
唐兴通个人2 小时前
唐兴通受邀华润医药高管培训:AI时代OTC与处方药营销逻辑全面重构数字化转型与创新思维
大数据·人工智能
SariHcr1232 小时前
Openarm机器人双臂模型仿真从零部署
c++·人工智能·python·机器人·bash·openarm