摘要

AI 想用 Simulator 的公开“攻击序列”查询(一次攻击连同反击、追加击的结果)来给攻击打分,前提是这个查询足够快。我们暂定单次查询 p95(95% 的调用不超过的耗时)预算为 2 毫秒,并做了可重复的本地测量。三个代表场景的 p95 都在 0.16 毫秒以内;从一个合法局面构造六个不同进攻面并一次查完,p95 为 1.316 毫秒,低于暂定的 10 毫秒扫描预算。这是本地抽样结果,不是对所有单位、状态、场地数量的保证。

要回答的问题

公开攻击序列查询本身有多快?在 AI 真正依赖它之前,单次和一轮扫描的耗时是否落在一个可接受的预算内?

方法与设置

  • 离线构造固定局面,只计时公开查询那一次调用;规则事实和移动风险在计时前准备好。查询只接收公开观察、动作、事实和可选的公开路线,不接收可执行状态或引擎预览。
  • 每个场景预热 50 次、测 300 次。Python 3.12.13,AMD64,本地 core 环境。超出所选预算时脚本以非零退出。
  • 另做“菜单测量”:从合法局面构造六个进攻面,计时一次公开扫描(一批移动风险、一批规则事实、六次序列查询);同时计时不变的 v55 策略在该局面实际 340 个动作的菜单上做一次完整选择。各预热 10 次、测 100 次。

结果

单次查询:

场景 支持程度 中位数(毫秒) p95 p99
普通第二击 部分 0.1264 0.1287 0.1391
疾速 + 幸运 × 隐藏圆盾,含协助反击 未知(列出条件情形) 0.1508 0.1590 0.2124
已知路线中断 部分,无目标攻击 0.0242 0.0260 0.0293

菜单级:

操作 平均(毫秒) p95 p99
六进攻面公开扫描 1.2886 1.3162 1.3703
v55 完整菜单选择(340 个动作,不含序列查询) 10.1748 10.9844 21.2247

v55 的菜单里有 1 个默认攻击、268 个格子法术、67 个移动、2 个单位法术、等待和跳过。

后续私有候选的报告补测:在实际 343 个动作的菜单上串行 200 次,候选平均 9.633 毫秒、p95 9.685 毫秒;v55 平均 6.130 毫秒、p95 6.233 毫秒。该局面每次决策实际用 1 次序列查询,查询 p95 0.127 毫秒。两项暂定候选预算(完整决策 100 毫秒、序列小计 20 毫秒)均通过。

局限

  • 这是可观测的本地预算,不是确定性的运行时上限。疾速场景返回的是“未知总量 + 条件情形”,计时它不会把它变成期望伤害。
  • 两类计时分开测量,相加不等于候选策略的决策延迟;六进攻面局面是为覆盖路线构造的,不是真实的 340 动作菜单。
  • 每次决策最多 64 次查询的饱和成本没有测。

结论与下一步

查询本身足够便宜。AI 真正依赖它之前,还要在状态丰富、协助候选多的完整对局里测量候选策略的完整决策时间、每次决策实际查询数、回退频率,并设决策级上限;查询返回未知时保留 v55 回退(完整对局评测见实验 0027)。