本文件包含:(一)最新配对对比(穷举 vs MRV);(二)历史上三次配对运行的归档索引;(三)Day 2 首次「仅穷举」单次运行归档。
共同设定: random_seed = 42,每解预算 2000 ms,总预算 = 2000 × requested_count ms;场景形状:S1 = 100×1,S2 = 10×10,S3 = 1×100(共 111 行)。
当前 MRV 实现:增量可行域计数(A) + 数组/位掩码回溯状态(B) + LCV 值排序 + 零域早剪枝。详见 CalendarJigsawMrvService。
1778247269738)| 字段 | 穷举 | MRV |
|---|---|---|
| run_id | 8803eed4-5b81-4012-912a-9e597022f262 |
同上 |
| random_seed | 42 | 42 |
| solver | exhaustive | mrv |
| 数据行数 | 111 | 111 |
| 仓库内目录 | jigsaw-api/benchmark-artifacts/paired/1778247269738/ |
同上 |
同目录已提交:CSV、穷举/MRV 各自的 summarize_benchmark_csv.py 报告,以及脚本生成的 comparison.md(完整 Markdown 对比)。
| 场景 | 说明 | 墙钟合计 (ms) 穷举 | 墙钟合计 (ms) MRV | MRV 相对穷举 | timed_out 次数 穷举/MRV |
成功样本 穷举/MRV |
|---|---|---|---|---|---|---|
| S1 | 100 日期 × 1 解 | 66967.30 | 18457.77 | −72.44% | 11 / 1 | 89 / 99 |
| S2 | 10 日期 × 至多 10 解 | 30457.44 | 5207.91 | −82.90% | 0 / 0 | 100 / 100 |
| S3 | 1 日期 × 至多 100 解 | 15260.51 | 3578.96 | −76.55% | 0 / 0 | 100 / 100 |
| 指标 | 穷举 | MRV |
|---|---|---|
| 全部场景墙钟总和 (ms) | 112 685.25 | 27 244.65(约 −75.82%) |
| 成功 / 失败样本 | 289 / 11 | 299 / 1 |
解读: 与早期初版 MRV 相比,当前实现在相同日期与超时预算下 总墙钟显著低于穷举,且限时场景下 成功样本更多。overlap_rejects 等指标随实现细节变化较大,跨版本对比以墙钟与成功样本为主。
cd jigsaw-api
./mvnw test -Djigsaw.benchmark.compare=true -Dtest=SolverComparisonBenchmarkIT
仅用仓库内已归档 CSV 重新汇总 / 对比(示例为最新目录):
python3 scripts/summarize_benchmark_csv.py benchmark-artifacts/paired/1778247269738/solver-exhaustive-1778247269738.csv
python3 scripts/compare_benchmark_csvs.py "穷举" benchmark-artifacts/paired/1778247269738/solver-exhaustive-1778247269738.csv "MRV" benchmark-artifacts/paired/1778247269738/solver-mrv-1778247269738.csv
仅穷举、与历史脚本一致的单文件输出:
./mvnw test -Djigsaw.benchmark=true -Dtest=SolverBaselineBenchmarkIT
所有原始 CSV 与生成报告位于 jigsaw-api/benchmark-artifacts/paired/<时间戳>/(索引见该目录下 README.md)。
| 目录名 | run_id | MRV 阶段 | 全局墙钟 穷举 ∥ MRV (ms) | MRV 相对穷举(全局墙钟) | 成功样本 穷举 ∥ MRV |
|---|---|---|---|---|---|
1778247269738 |
8803eed4-…f262 |
A+B+LCV | 112 685 ∥ 27 245 | −75.82% | 289 ∥ 299 |
1778246626406 |
890d2578-…c2ad |
A+B | 112 765 ∥ 81 323 | −27.88% | 287 ∥ 293 |
1778245517291 |
daea9018-…c0d6 |
初版 MRV | 110 579 ∥ 140 687 | +27.23%(慢于穷举) | 289 ∥ 280 |
各目录内 comparison.md 为当时脚本输出的完整对比表;穷举侧墙钟在三次运行间有小幅波动(同 seed、同 JVM 负载差异)。
以下为 首次 基准文档记录的穷举求解器汇总(仅穷举,无 MRV 列;与上文配对穷举 非同一次 JVM 计时)。
| 字段 | 值 |
|---|---|
| random_seed | 42 |
| run_id | acdd8f5b-29fc-4233-8abc-52f312fe27cd |
| 数据行数 | 111 |
| 原始 CSV(仓库内副本) | jigsaw-api/benchmark-artifacts/solver-baseline-1778242272227.csv |
| 场景 | 说明 | 调用次数 | 成功样本合计 | 失败样本合计 | timed_out 调用次数 |
墙钟合计 (ms) | mean (ms) | median (ms) | min / max (ms) |
|---|---|---|---|---|---|---|---|---|---|
| S1 | 100 随机日期 × 每日期 1 解 | 100 | 85 | 15 | 15 | 72473.75 | 724.74 | 383.84 | 10.71 / 2021.99 |
| S2 | 10 随机日期 × 每日期至多 10 解 | 10 | 100 | 0 | 0 | 39304.17 | 3930.42 | 2467.38 | 416.82 / 15579.85 |
| S3 | 1 随机日期 × 单次至多 100 解 | 1 | 100 | 0 | 0 | 11854.91 | 11854.91 | 11854.91 | 11854.91 / 11854.91 |
| 指标 | 值 |
|---|---|
| 全部场景墙钟时间总和 | 123,632.83 ms(约 123.63 s) |
| 成功样本 / 失败样本(全局) | 285 / 15 |
| 场景 | overlap_rejects | dedupe_rejects | leaf_candidates |
|---|---|---|---|
| S1 | 13,541,226,663 | 0 | 85 |
| S2 | 7,121,899,955 | 0 | 100 |
| S3 | 2,090,978,858 | 0 | 100 |
partial_timeout。solver 列;归档 baseline CSV 可为早期格式(无 solver 列),summarize_benchmark_csv.py 仍可读。jigsaw-api/scripts/summarize_benchmark_csv.py;配对对比:scripts/compare_benchmark_csvs.py。