poc-challenge

Day 2 — 求解器基准线测试结果

本文件包含:(一)最新配对对比(穷举 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 负载差异)。


(三)归档:Day 2 首次穷举单次运行(历史对照)

以下为 首次 基准文档记录的穷举求解器汇总(仅穷举,无 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

说明