莫罗佐夫均衡指数(MBI):方法论
莫罗佐夫均衡指数(MBI)为 960 个 Chess960 起始局面各回答一个问题:白方的先行优势有多大?本页给出完整方法——本站的每一个数字都可以据此重新计算。
方法论作者:罗曼·莫罗佐夫(Roman Morozov)。 About the author · 版本 1.0 · 2026-08-25
CC BY 4.0 方法论与数据:CC BY 4.0 — 注明作者即可自由使用。
指数测量的是什么
国际象棋中白方先行。这一先手是有价值的,而在 Chess960 中,960 种摆法里这份价值各不相同。指数测量的是这份开局优势的大小,而不是谁形势更好。960 个局面中有 956 个的引擎评估处于均势或对白方有利;其余四个落在黑方一侧 2 到 7 个厘兵,比搜索在自身迭代之间的浮动还小,属于零附近的噪声,而非黑方占优。度量的是与零的距离,方向不限,因此诚实的说法是「这里的先手领先有多大」,而所谓均衡的局面,就是这份领先最小的局面。
MBI 是 0–100 的标度。100 表示 960 个局面中实测白方优势最小者——最均衡的起始局面;0 表示最大者。指数是对单一实测量的排名变换,因此它说明的是一个局面相对于其余 959 个的位置,而不是谁多出几个兵。
每个局面如何评估
每个起始局面由 Stockfish 从初始摆法分析一次,采用固定的搜索节点预算,而非固定时间。这是整个方法的关键决定:节点预算与机器无关。时间预算会让快机器搜得更深、得出不同数字,任何人都无法核对结果。
- 引擎:Stockfish 17.1,官方构建,NNUE 评估内嵌于可执行文件。
- 可执行文件 SHA-256:
5f95eaea0d4eb697381989187ce6eb4d6ad59283c34421765ecc73cdb09ba766 - NNUE 网络:nn-1c0000000000.nnue, nn-37f18f62d772.nnue
- 搜索上限:每个局面 400 000 000 个节点(`go nodes`)。
- UCI 选项:Threads = 1,Hash = 256 MB,UCI_Chess960 = true。
- 每个局面之前执行 `ucinewgame`:清空置换表,局面之间互不影响,计算顺序无关紧要。
- 评分一律取白方视角,单位为厘兵(100 cp = 一个兵)。
- 评估值与主变取自最后一次完成的搜索迭代——即不带上下界标记的那一行。被节点上限截断的迭代只报告一个界,而非稳定的评估,其主变只有一两手;采用它等于把噪声当作结果发布。
固定散列与固定节点数的单线程搜索是确定性的:同一可执行文件在任何机器上都返回逐位相同的厘兵值。正是这一点使独立核验成为可能,而不只是看起来合理。
从厘兵到指数
厘兵并非对任何人类感受的线性度量,+18 与 +22 之差本身没有意义。因此指数使用局面在 960 个中的排名,而不是原始数值:
rank(sp) = position of eval_cp(sp) in the sorted list of all 960 values
(ascending: smallest White edge first, ties share the mean rank)
MBI(sp) = round( 100 * (960 - rank(sp)) / (960 - 1) )
| 等级 | 白方优势 | 局面数 |
|---|---|---|
| A — 最均衡 | ≤ +19 cp | 240 |
| B — 均衡 | +20…+26 cp | 240 |
| C — 优势明显 | +27…+35 cp | 240 |
| D — 优势最大 | > +35 cp | 240 |
全部 960 个局面的引擎评估介于 +-7 至 +83 厘兵之间,中位数 +26.0。
960 个数值的分布
每根柱代表一个五厘兵区间;右侧数字是落入该区间的局面数。
验证
引擎评估是对局面的一个论断。为检验该论断能否预测真实结果,会把一部分局面下完:引擎对引擎,每个局面多盘,随机种子固定并公开。如果指数称为均衡的局面,白方得分确实更接近 50%,那么指数测量的就是它所声称的东西。
- 60 个局面 × 50 盘 = 3000 盘,时限 300,000 nodes/move。
- 起始评估与白方得分的斯皮尔曼相关系数:0.76(95% 置信区间 0.63…0.85,自助重采样 10000 次)。MBI 是该评估的单调变换,因此同一个数字也描述它。
- 结论:已验证——排序可预测自对弈结果,指数按实测发布。
基础种子:20260825。每盘棋均可精确重现。
| 局面 | 分组 | 引擎,cp | 对局数 | 胜/和/负 | 白方得分 |
|---|---|---|---|---|---|
| 42 | 随机 | +23 | 50 | 6/44/0 | 56.0% (42.3–68.8%) |
| 52 | 随机 | +18 | 50 | 5/45/0 | 55.0% (41.3–67.9%) |
| 80 | 最不均衡 | +83 | 50 | 7/42/1 | 56.0% (42.3–68.8%) |
| 86 | 随机 | +34 | 50 | 1/48/1 | 50.0% (36.6–63.4%) |
| 102 | 最均衡 | 0 | 50 | 3/47/0 | 53.0% (39.5–66.1%) |
| 131 | 最均衡 | 0 | 50 | 0/50/0 | 50.0% (36.6–63.4%) |
| 204 | 最均衡 | 0 | 50 | 0/46/4 | 46.0% (33.0–59.6%) |
| 217 | 最均衡 | +3 | 50 | 0/50/0 | 50.0% (36.6–63.4%) |
| 259 | 最均衡 | +3 | 50 | 2/43/5 | 47.0% (33.9–60.6%) |
| 262 | 随机 | +43 | 50 | 6/44/0 | 56.0% (42.3–68.8%) |
| 266 | 随机 | +26 | 50 | 3/47/0 | 53.0% (39.5–66.1%) |
| 268 | 最不均衡 | +58 | 50 | 8/42/0 | 58.0% (44.2–70.6%) |
| 269 | 最均衡 | 0 | 50 | 1/46/3 | 48.0% (34.8–61.5%) |
| 272 | 最不均衡 | +58 | 50 | 13/36/1 | 62.0% (48.2–74.1%) |
| 292 | 随机 | +49 | 50 | 1/49/0 | 51.0% (37.6–64.3%) |
| 300 | 最均衡 | 0 | 50 | 3/47/0 | 53.0% (39.5–66.1%) |
| 332 | 最不均衡 | +59 | 50 | 10/40/0 | 60.0% (46.2–72.4%) |
| 348 | 最不均衡 | +62 | 50 | 6/44/0 | 56.0% (42.3–68.8%) |
| 399 | 最不均衡 | +65 | 50 | 7/38/5 | 52.0% (38.5–65.2%) |
| 401 | 最均衡 | -7 | 50 | 0/49/1 | 49.0% (35.7–62.4%) |
| 418 | 最均衡 | -2 | 50 | 1/49/0 | 51.0% (37.6–64.3%) |
| 424 | 随机 | +23 | 50 | 6/44/0 | 56.0% (42.3–68.8%) |
| 429 | 最均衡 | 0 | 50 | 0/50/0 | 50.0% (36.6–63.4%) |
| 432 | 最均衡 | +3 | 50 | 5/44/1 | 54.0% (40.4–67.0%) |
| 433 | 最均衡 | -4 | 50 | 4/45/1 | 53.0% (39.5–66.1%) |
| 467 | 最均衡 | +2 | 50 | 2/47/1 | 51.0% (37.6–64.3%) |
| 471 | 最均衡 | 0 | 50 | 0/50/0 | 50.0% (36.6–63.4%) |
| 481 | 随机 | +5 | 50 | 1/49/0 | 51.0% (37.6–64.3%) |
| 485 | 最均衡 | +3 | 50 | 1/49/0 | 51.0% (37.6–64.3%) |
| 497 | 最均衡 | 0 | 50 | 0/48/2 | 48.0% (34.8–61.5%) |
| 499 | 随机 | +18 | 50 | 4/46/0 | 54.0% (40.4–67.0%) |
| 531 | 随机 | +13 | 50 | 4/46/0 | 54.0% (40.4–67.0%) |
| 556 | 随机 | +21 | 50 | 2/48/0 | 52.0% (38.5–65.2%) |
| 557 | 最不均衡 | +63 | 50 | 15/35/0 | 65.0% (51.1–76.7%) |
| 565 | 最不均衡 | +60 | 50 | 4/44/2 | 52.0% (38.5–65.2%) |
| 576 | 最均衡 | 0 | 50 | 1/48/1 | 50.0% (36.6–63.4%) |
| 578 | 最不均衡 | +56 | 50 | 12/38/0 | 62.0% (48.2–74.1%) |
| 593 | 最均衡 | +2 | 50 | 0/49/1 | 49.0% (35.7–62.4%) |
| 604 | 最不均衡 | +81 | 50 | 13/37/0 | 63.0% (49.1–75.0%) |
| 620 | 最不均衡 | +63 | 50 | 12/38/0 | 62.0% (48.2–74.1%) |
| 637 | 随机 | +21 | 50 | 7/43/0 | 57.0% (43.3–69.7%) |
| 654 | 随机 | +34 | 50 | 4/45/1 | 53.0% (39.5–66.1%) |
| 665 | 随机 | +22 | 50 | 6/44/0 | 56.0% (42.3–68.8%) |
| 745 | 随机 | +13 | 50 | 3/46/1 | 52.0% (38.5–65.2%) |
| 748 | 随机 | +42 | 50 | 6/43/1 | 55.0% (41.3–67.9%) |
| 760 | 最不均衡 | +61 | 50 | 8/40/2 | 56.0% (42.3–68.8%) |
| 784 | 最不均衡 | +58 | 50 | 10/38/2 | 58.0% (44.2–70.6%) |
| 786 | 最均衡 | +2 | 50 | 4/45/1 | 53.0% (39.5–66.1%) |
| 794 | 最不均衡 | +67 | 50 | 12/38/0 | 62.0% (48.2–74.1%) |
| 801 | 随机 | +11 | 50 | 1/49/0 | 51.0% (37.6–64.3%) |
| 814 | 随机 | +32 | 50 | 5/45/0 | 55.0% (41.3–67.9%) |
| 823 | 最均衡 | -5 | 50 | 2/48/0 | 52.0% (38.5–65.2%) |
| 868 | 最不均衡 | +75 | 50 | 9/41/0 | 59.0% (45.2–71.5%) |
| 870 | 随机 | +44 | 50 | 5/45/0 | 55.0% (41.3–67.9%) |
| 879 | 最不均衡 | +66 | 50 | 11/38/1 | 60.0% (46.2–72.4%) |
| 880 | 最不均衡 | +63 | 50 | 7/42/1 | 56.0% (42.3–68.8%) |
| 885 | 随机 | +14 | 50 | 1/49/0 | 51.0% (37.6–64.3%) |
| 886 | 最不均衡 | +58 | 50 | 5/45/0 | 55.0% (41.3–67.9%) |
| 902 | 最不均衡 | +62 | 50 | 5/44/1 | 54.0% (40.4–67.0%) |
| 935 | 最不均衡 | +78 | 50 | 11/38/1 | 60.0% (46.2–72.4%) |
局限——引用数字前请先阅读
- 引擎评估不是人类实战。引擎认为均衡的局面,对人而言仍可能别扭、尖锐或陌生,这一点这里并未测量。
- 只有一个引擎、一个评估函数。换一个引擎会得到略有不同的排序。方法被固定并公开,正是为了让任何人都能用别的引擎重做并比较。
- 固定节点预算是某一搜索深度上的快照。更深的分析会改变个别数值;排序远比任何单一数字稳定——这正是指数基于排名的原因。
- Chess960 几乎没有开局理论。在古典国际象棋中,白方优势部分来自成套的准备变例;而这里只来自子力本身的作用。这使测量更纯粹,但也意味着这些数字与古典起始局面无关。
- 超快棋自对弈只是对「真实对局」的廉价近似。它验证排序,不为任何单个局面背书。
- 指数仅是起始局面的属性。第一步之后谁形势更好,它一概不作判断。
自行复核
重新计算数据集所需的一切都是公开的:确切的引擎构建、预算、脚本与原始输出。单核重算一个局面需要几分钟;整套数据需要一夜。
- 从开放数据页面下载原始数据与脚本。 开放数据
- 用已发布的数据集核对某个局面——该命令会从头重算并比对:
python tools/balance/verify_reproduce.py --sp 518 - 或重算整套数据(可续跑:中断后会续写同一文件):
python tools/balance/eval_all.py --nodes 400000000 --workers 20
如果你的数值不同,这个差异本身就是发现:引擎构建、节点预算或选项三者中必有不一致。三者均列于上方。
引用与许可
方法论与数据集以 CC BY 4.0 发布:可用于任何用途(含商业用途),注明作者即可。
Morozov R. Chess960 Balance Index (MBI). ch960.com/balance, 2026. CC BY 4.0.