摘要
此前几个“加一条战术规则”的实验(0050、0052、0060)都没带来整局收益。外部审阅建议换个方向:不只决定这一步,而是把己方接下来两次付费行动一起比较。难点在于公平:AI 看不到对手的隐藏构筑,必须在“与公开历史相符的假想世界”里推演。本实验的工程验收要求:2 个根动作 × 2 种第二步策略 × 2 个假想世界 = 8 条分支,在 2 秒内全部完成。新实现的条件第二步策略在人工构造的支持夹具上完整跑出 8 分支 / 72 次真实转移,但用了 3.076 秒;在冻结的 4 个输入上,2 个超时、2 个自然对局根连可用的假想世界都没构造出来。按停止条件关闭当前实现,没有进入任何正式对局。
要回答的问题
在不读取对手私有状态的前提下,能否在 2 秒内为完整竞技场对局构造假想世界、比较两步计划,并保证分支可比?
方法
- 根候选(2 个):Fair 原选的付费动作,以及按 Fair 公开评分最高的另一个合法付费动作。
- 第二步策略(2 种):πF——每个假想世界里按当时公开观察直接运行 Fair;πI——在实际根上只用公开信息冻结一个目标(Fair 评分最高的攻击目标,否则最近的活敌),第二步优先攻击它,否则严格接近它。两个世界执行同一条公开规则,动作可以不同,这解决了上一轮“固定动作在不同世界不一定合法”的问题。
- 假想世界(2 个):用公开开局、事件和观察,加上一个标明为假设的敌方构筑先验,由已有的有限追踪器生成与公开历史相符的状态。
- 比较:8 条分支必须全部终局或全部未终局且停在同一付费边界;四个配对中最差的那个增益必须严格大于 1e-9 才采用新计划,否则保持 Fair。每步都走真实 Simulator 转移。
设置
- 固定输入(在看到新实现结果前选定):两个旧训练自然对局根(arena-1000000 红方、arena-1000001 蓝方),以及上一轮留下的困难随机夹具和人工支持夹具。它们不是新评测来源。
- 预算:每分支 64 次决策、总 512 次转移;2 秒外部进程截止(含构造和进程通信);工程总上限 90 分钟。任一验收失败即关闭,不延长时间、换种子或追加来源。
- 原计划的 24 局开发 / 36 局保留对局都没有分配来源。
结果
| 输入 / 要求 | 实际结果 | 判断 |
|---|---|---|
| 困难根,8 分支 2 秒内完成 | 超时,含回收 2.0063561 秒,无世界回执 | 未过 |
| 人工支持根,8 分支 2 秒内完成 | 超时,含回收 2.006743 秒;收到 31 次转移、2 条完整分支 | 未过,部分结果被丢弃 |
| arena-1000000 | 0.6488262 秒;两个先验都与公开英雄职业不符,未产生世界 | 覆盖失败 |
| arena-1000001 | 0.8953624 秒;一个先验职业不符,另一个开局 8 次尝试失败 | 覆盖失败 |
| 至少一个自然根的 πI 不同于 Fair | 自然根没有世界、没有分支 | 未过 |
| 人工夹具 20 秒软件诊断 | 3.0760112 秒完成 72 次转移 / 8 分支,最差配对增益为负,保持 Fair | 仅软件通过 |
| 原生回放核验 | 收到的 103 次转移全部重算一致 | 通过 |
| 实际两步事件控制器 | 未实现、未验收 | 未完成 |
人工夹具上三个配对的最差增益分别为 −0.02849167、−0.06338162、−0.06338162,所以即使跑完也没有正优势。相关软件检查 56 项通过,旧 v1 的 1 项预期失败(strict xfail)保留。工程计时 928.576933 秒,因门槛失败提前结束,没有用尽 90 分钟。
失败与负结果
- 工程门槛失败:两个超时、两个覆盖失败。
- 冻结输入的第一次写入因构造函数只接受关键字参数而抛 TypeError,修正后选择规则不变、没有重挑来源。
- 首次风格检查有 8 处字典写法提示,已修正。
局限
- 本轮没有实现新的公开条件求解算法,仍调用原有有限追踪器;也没有实现真实对局的两次付费事件控制器。不能把“原追踪器没覆盖”写成“新求解器测试失败”。
- 3.076 秒包含引擎、公开投影、日志和进程通信,没有分别隔离,不能归咎单一因素,也不能说 2 秒在理论上不可能。
- 自然根的失败原因不同:一个是先验职业与公开职业不符,一个是开局都未覆盖,不能一律说成随机支持不足。
结论与下一步
关闭 0061 当前实现,不开正式对局、不延长到 3 秒补成绩;两步条件策略代码保留为实验成果,不接生产。这是“所测实现未达工程门槛”,不是所有公开规划方式都不可行。下一步只改先验生成:先用已公开的英雄职业等约束生成合法候选构筑(实验 0062)。
Comments