摘要

之前的 AI 改进多是“单步覆盖一次决策”。本实验转向整局学习:用一个只有 18 个参数的小策略,在整场战斗里持续调整“兵种进攻、伤害法术、广义支持”三种偏好,再用 CEM(交叉熵方法) 按完整对局胜负优化参数。CEM 的做法是:从一个参数分布里采样若干候选,让它们各打若干局,取表现最好的几个(精英)更新分布的均值和方差,重复几代。训练预定 576 局,但 83.889 秒后因一次真实引擎异常按协议整批停止:28 局自然终局、1 局异常、2 局随批中止、545 局未开始,一代更新都没完成。这是工程中止,不是 CEM 学习失败。

要回答的问题

一个持续整局的小参数策略,经 CEM 训练后能否在独立开发和保留来源上胜过基线 Fair(只看公开信息的规则 AI)?

方法

  • 策略:18 个参数生成三种偏好,输入是公开特征(偏置、双方生命差、双方射手生命占比、己方咒力、剩余法力比例)。每回合第一次决策时固定偏好,之后每次行动重排当前合法候选;缺失信息时退回 Fair。零参数精确等于 Fair。
  • CEM:两代、每代 12 个候选,每候选在同代 12 个来源上两方向各打一局。“来源”是同一开局交换蓝红的两局。只用自然终局计分(胜 1、平 0.5、负 0),未知局按保守下端排名。
  • 运行中任何工程故障都停止整批。

设置

固定来源 920000–920047 共 48 个:24 训练 / 8 开发 / 16 保留,开跑前冻结协议。训练预算 60 分钟、4 个工作进程;单局上限 180 秒、1000 决策、100 回合。推进条件包括每代自然终局 ≥ 80%;保留集要求平均来源得分差 ≥ +0.10 且 ≥ 4 来源改善。

结果

项目 数量
预定槽位 576
自然终局 28
真实引擎异常 1
随批中止 2
未开始 545
完成的 CEM 代更新 0

28 局自然终局只来自 2 个训练来源,累计 19 胜 9 负,但混合了 12 组参数、每组完成数不同,不能当成任何一个策略的胜率。451 次实际覆盖表明包装器确实在持续决策。

失败与负结果

  • 直接原因:第 32 回合、434 步后,凤凰的范围攻击波次包含一个防御 −21 的召唤化身;聚合伤害的一个错误“必须为正”校验抛错。负防御来自前面叠加的 Shorten Shadow(缩短阴影)效果,规则本身没错。
  • 已修正该错误校验(保留整数运算与溢出保护,不把负属性截为零);原 434 步修后全部一致,失败动作两次确定性成功。修前修后完整核验(48 选秀、48 开局、5,306 转移、2,955 次策略恢复)均通过。
  • 防御恰为 −20 时的零分母问题仍未解决;后续的属性下限依据另行确认。

局限

开发与保留来源都未生成开局;最高附加计算约 5.10 毫秒是并发训练中的观察,不是延迟验收;正文没有留下完整原始命令,不能从当前代码倒推当时参数。

结论与下一步

本批冻结,不补跑、不拼接。若重训,需在新目录从第一代开始并另行登记 20 回合协议;本轮之后路线转向 Masked PPO(见实验 0201–0203),这并不代表 0200 重训成功。