"""汇总配对置信区间、历史官方证据与BC/特征错位探针,不连接模拟器。""" from pathlib import Path import json import hashlib import numpy as np import torch import verify_rl_practice from mcm26b.rl.env import LocalizationEnv from mcm26b.rl.features import build_observation def main(): root = Path('output/rl/review-20260911') records = json.loads((root/'evaluation/validation/final/results.json').read_text(encoding='utf-8')) rng = np.random.default_rng(20260911) comparisons = {} for problem in (3,4): part = [r for r in records['rows'] if r['problem']==problem] for label in ('baseline','legacy'): baseline = {r['case']:r for r in part if r['variant']==label} selected = sorted((r for r in part if r['variant']=='revised'),key=lambda r:r['case']) a = np.array([baseline[r['case']]['virtual_s'] for r in selected]) b = np.array([r['virtual_s'] for r in selected]) samples = rng.integers(0,len(a),(10000,len(a))) changes = (b[samples].mean(axis=1)/a[samples].mean(axis=1)-1)*100 comparisons[f'q{problem}-revised-vs-{label}'] = dict( relative_change_pct=(b.mean()/a.mean()-1)*100, paired_bootstrap_95_pct=np.quantile(changes,[.025,.975]).tolist(), faster_cases=int(sum(b