存档求解器回归基线与当前改动
纳管 AMESim 对齐基线、发布锁、回归测试及当前物理门禁调整。 更新日志仅记录已完成成果,并注明当前 HEAD 尚待真实 production 复跑与远端 workflow 验证。
This commit is contained in:
1 parent
53f8601fec
commit
a8c733883c
32 files changed
+47241
-108
No files matched your search
@@ -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(
|
||||
|
||||
Reference in new issue
Block a user