Run it yourself. 26 of 26 checks pass. The benchmark found a real bug — we publish that too.
生成于 2026-10-08 21:52 · 模型文件 plugin/lib/simulate.mjs
node distribution/03_验证与基准/公开基准/run-benchmark.mjs # 机器可读结果 node run-benchmark.mjs --json # 退出码 0 = 全部通过;非 0 = 有失败项,会打印具体原因
Zero dependencies. Node.js ≥ 18. Takes about 100 ms. Licensed CC-BY-4.0 — copy it, modify it, redistribute it.
四类可严格验证的性质。这些是【必要条件】,不是预测精度的证明 —— 见下方「已知边界」。
| 编号 | 检查项 | 结果 | 实测 |
|---|---|---|---|
A-01 | 质量守恒:28 组工况 |ΣP−1| < 1e-2 | ✅ 通过 | 最坏 1.40e-3 @CSS6/F80=300 |
A-02 | 无负质量分量(数值稳定) | ✅ 通过 | 最大负质量 0.00e+0 |
A-03 | 产品 P80 < 给料 P80(破碎必然变细) | ✅ 通过 | 6 组全部满足 |
A-04 | CSS 越大 → 产品越粗(严格单调) | ✅ 通过 | 10.9 → 11.7 → 12.6 → 13.8 → 15.1 → 16.8 → 19.5 → 24.3 → 29.1 |
A-05 | 给料越粗 → 产品不更细(单调不降) | ✅ 通过 | 16 → 17 → 17 → 17 → 17 → 17 |
A-06 | 啮合区 K1 > CSS > K2(几何自洽) | ✅ 通过 | K1=36 K2=0.1 (CSS=16) |
| 编号 | 检查项 | 结果 | 实测 |
|---|---|---|---|
B-01 | 重复计算 10 次逐字节一致 | ✅ 通过 | 输出 1324 字符完全一致 |
B-02 | 顺序无关(无全局状态泄漏) | ✅ 通过 | 插入 3 次其他计算后结果不变 |
| 编号 | 检查项 | 结果 | 实测 |
|---|---|---|---|
C-01 | CSS = 0 必须拒绝 | ✅ 通过 | 已拒绝: cssMm 必须为正数(紧边排矿口 mm) |
C-02 | CSS 为负必须拒绝 | ✅ 通过 | 已拒绝: cssMm 必须为正数(紧边排矿口 mm) |
C-03 | CSS = NaN 必须拒绝 | ✅ 通过 | 已拒绝: cssMm 必须为正数(紧边排矿口 mm) |
C-04 | CSS = Infinity 必须拒绝 | ✅ 通过 | 已拒绝: cssMm 必须为正数(紧边排矿口 mm) |
C-05 | 正常工况必须接受 | ✅ 通过 | 正常接受 |
| 编号 | 检查项 | 结果 | 实测 |
|---|---|---|---|
D-01 | 返回点估计(数值在合理量级) | ✅ 通过 | 15.12 mm |
D-02 | 返回误差区间且区间包含点估计 | ✅ 通过 | 12.54 – 17.7 mm |
D-03 | 给出置信分级 A/B/C/D | ✅ 通过 | B (±17.1%) —— 区间中等(±10~25%),可用于初步方案与设备预选 |
D-04 | 指出主导误差源(可指导标定优先级) | ✅ 通过 | 啮合区宽度系数 (75.9%) |
D-05 | 未标定时明确声明"未经实测标定" | ✅ 通过 | 已声明 |
D-06 | 设备参数(铭牌值)不计入未知不确定度 | ✅ 通过 | 单列提示: 偏心距(冲程)mm、偏心轴转速 rpm |
D-07 | 确定性:同样输入两次结果一致 | ✅ 通过 | 逐字节一致 |
D-08 | 误差棒随 CSS 变化(不是写死的常数) | ✅ 通过 | CSS10 → ±24%,CSS30 → ±9.3% |
| 编号 | 检查项 | 结果 | 实测 |
|---|---|---|---|
R-01 | CSS10/F80100 与基线一致(相对差 < 1%) | ✅ 通过 | P80 12.609 vs 基线 12.609(差 0.00%) |
R-02 | CSS16/F80120 与基线一致(相对差 < 1%) | ✅ 通过 | P80 15.12 vs 基线 15.12(差 0.00%) |
R-03 | CSS25/F80200 与基线一致(相对差 < 1%) | ✅ 通过 | P80 19.534 vs 基线 19.534(差 0.00%) |
R-04 | CSS32/F80250 与基线一致(相对差 < 1%) | ✅ 通过 | P80 24.32 vs 基线 24.32(差 0.00%) |
R-05 | CSS6/F8060 与基线一致(相对差 < 1%) | ✅ 通过 | P80 10.837 vs 基线 10.837(差 0.00%) |
2026-10:质量守恒检查报告误差 5.21e+78,而 P80 输出看起来完全合理。
这是最危险的一类错误 —— 静默产错。逐层剥离后定位到三处根本性问题:
(I−BC)·P = (I−C)·F,正确应为 (I−bC)·X = F 再 P = (I−C)·X。两者不可交换。另有一段写着「数值保护」的 C_EPS = 1e-9 夹紧 —— 它才是爆炸的直接原因:把对角元 1−C 变成 1e-9,回代时被直接相除,逐级放大 1e9。
修正后:1.40e-3,跨越 81 个数量级。P80 数值也变了(19.35 → 15.12 mm,差 28%)—— 新值才是对的。
这段经历本身就是基准价值的证明:单点测试抓不到,物理不变量检查抓到了。
第一版不确定度分析给出 ±162.6%,主导误差源是「转速 rpm」占 96.6%。这个结论是错的。
转速与偏心距是设备铭牌参数,查铭牌就有 —— 把它们算进「模型不确定度」是分类错误,会得出过度悲观的结论。真正需要标定的是 φ / γ / β / 啮合区宽度系数。
修正后:±17.1%,置信分级 B。未提供的设备参数单列提示,而不是混进误差棒。
| 参数 | P80 区间 mm | 跨度 | 含义 |
|---|---|---|---|
| φ 粗粒生成占比 | 15.91 – 14.33 | ±5% | 影响较小 |
| γ 粗端指数 | 13.9 – 15.8 | ±6% | 影响较小 |
| β 细端指数 | 14.8 – 15.35 | ±2% | 影响较小 |
| 偏心距 mm | 12.63 – 20.04 | ±25% | 中等影响 |
| 啮合区宽度系数 | 12.72 – 17.23 | ±15% | 影响较小 |
| 转速 rpm | 59.97 – 11.64 | ±160% | 最敏感 —— 标定优先测它 |
我们找到并下载了一份公开的、CC-BY-4.0 许可的破碎实测数据集,用它做交叉验证:
| 项 | 内容 |
|---|---|
| 数据集 | Granite jaw crushing dataset: particle size distribution of feed and product |
| DOI | 10.5281/zenodo.21239431(CC-BY-4.0) |
| 来源 | Piotr Bortnowski,Wrocław University of Science and Technology |
| 样本 | 23 组配对(给料 8 粒级,产品 11 粒级) |
| 拟合结果 | 23 / 23 组产品细端服从 Rosin-Rammler,R² 中位数 0.9875 |
| n 稳定性 | 均值 0.728 · 标准差 0.046(同类矿石同工艺下行为一致) |
这确认了:产品粒度分布确实服从 Rosin-Rammler 形式 —— 支持本模型用 RR 拟合给料的做法。
这份交叉验证【不能】证明什么(如实说明):
第二份公开实测数据:单颗粒压缩破碎试验,用来自动识别破碎事件并拟合破碎力分布。
| 项 | 内容 |
|---|---|
| 数据集 | Data for Discrete element modelling and experimental validation of brittle particle comminution |
| DOI | 10.5281/zenodo.21702040(CC-BY-4.0) |
| 材料 | 沸石 ZEOLITE_DASUN(软质,莫氏 3.5-4) |
| 设备 | Microtest MA Schmeltzer 单颗粒压缩试验机,0.5 mm/min |
| 样本 | 4 个粒级 · 共 200 次单颗粒压缩试验 |
| 粒级 | d̄ mm | m(形状) | F0 N(特征力) | R² |
|---|---|---|---|---|
| 2.50-2.80mm | 2.65 | 3.008 | 27.09 | 0.9261 |
| 3.15-3.35mm | 3.25 | 3.265 | 35.76 | 0.9509 |
| 3.55-4.00mm | 3.775 | 2.621 | 46.14 | 0.9664 |
| 4.00-4.50mm | 4.25 | 2.194 | 50.81 | 0.9771 |
破碎力确实服从威布尔分布 → 支持本模型所有基于 Weibull 的分析(衬板寿命 B10、市场统计的 weibull 模式)。
比强度 F0/d² 随粒径下降 27.1% —— 存在尺寸效应,与 Weibull 最弱链理论一致
这份交叉验证【不能】证明什么:
输入:该工况的给料筛析(累积通过 %)+ CSS + 机型/腔型
该工况的产品筛析(累积通过 %)
步骤:1. 用 mackorn_calibrate 反算 φ/γ/β 与啮合系数
2. 记录拟合 RMSE 与逐点残差
3. 用【另一工况】的数据做独立验证(不是同一批数据)
4. 把结果加进基准的 expected.json
判据:独立验证工况的 P80 相对误差 < 10% 视为通过
我们欢迎任何人提交实测数据来扩充这个基准。数据要求:公开可引用、来源可核查、含 CSS 与两侧筛析。
curl -s https://mackorn.cn/ai/api/mcp.php \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"mackorn_crusher_curve",
"arguments":{"css_mm":16,"feed_p80_mm":120,"ore":"granite"}}}'
# 返回里含 uncertainty 字段:点估计、误差区间、置信分级、主导误差源