存档求解器回归基线与当前改动

纳管 AMESim 对齐基线、发布锁、回归测试及当前物理门禁调整。

更新日志仅记录已完成成果,并注明当前 HEAD 尚待真实 production 复跑与远端 workflow 验证。
This commit is contained in:
lujingze committed 2026-08-18 15:20:42 +00:00
1 parent 53f8601fec
commit a8c733883c
32 files changed
+47241 -108

No files matched your search

+45 -1
View File
@@ -1,10 +1,14 @@
from __future__ import annotations
import csv
import tempfile
import unittest
from pathlib import Path
from app.simulation.reporting.amesim_results import load_test_mql_amesim_results
from app.simulation.reporting.amesim_results import (
AmesimResults,
load_test_mql_amesim_results,
)
from app.simulation.reporting.test_mql_comparison import (
DEFAULT_TEST_MQL_ALIGNMENT_PATHS,
TestMqlComparisonError,
@@ -84,6 +88,46 @@ class TestMqlComparisonTests(unittest.TestCase):
self.assertAlmostEqual(metric.mean_abs_error, 1.0)
self.assertGreater(metric.max_rel_error, 0.0)
def test_zero_amesim_baseline_does_not_invent_a_relative_denominator(self) -> None:
amesim_results = AmesimResults(
times=(0.0, 1.0),
variables=(),
saved_variable_indices=(),
series_by_data_path={"zero@baseline": (0.0, -0.0)},
final_values_by_data_path={"zero@baseline": -0.0},
)
comparison = compare_test_mql_series(
python_times=(0.0, 1.0),
python_series_by_data_path={"zero@baseline": (0.0, 1.0e-6)},
amesim_results=amesim_results,
data_paths=("zero@baseline",),
)
metric = comparison.metric("zero@baseline")
self.assertEqual(metric.max_abs_error, 1.0e-6)
self.assertEqual(metric.undefined_rel_error_count, 2)
self.assertEqual(metric.near_zero_baseline_count, 2)
self.assertEqual(comparison.undefined_rel_error_count, 2)
self.assertEqual(metric.max_rel_error, 0.0)
with tempfile.TemporaryDirectory() as temp_dir:
comparison_path, _summary_path, _comparison = (
write_test_mql_comparison_csv(
output_dir=Path(temp_dir),
python_times=(0.0, 1.0),
python_series_by_data_path={
"zero@baseline": (0.0, 1.0e-6)
},
amesim_results=amesim_results,
data_paths=("zero@baseline",),
)
)
with comparison_path.open(newline="", encoding="utf-8") as handle:
rows = list(csv.reader(handle))
self.assertEqual(rows[1][-1], "")
self.assertEqual(rows[2][-1], "")
def test_missing_data_path_is_rejected(self) -> None:
with self.assertRaises(TestMqlComparisonError):
compare_test_mql_series(