新增输出稳态时滑动窗口流量均值和标准差,以及稳态误差(判稳成功时目标流量减去当时流量)。

目前逻辑是「一直控制 + 每秒状态照常输出 + 稳态时额外多打印一次性能报告」。
新增一个可选的自动停止功能--config开关,「达到稳态后自动停止控制」,让 reporter 通知主循环退出。
This commit is contained in:
2026-08-20 09:24:58 +08:00
parent adfb5623b3
commit 1d065d81d3
3 changed files with 23 additions and 0 deletions
+17
View File
@@ -43,6 +43,9 @@ class PerformanceReporter:
self.target_flow_slm = None
self.settling_time_s = None
self.steady_mean = None
self.steady_std = None
self.steady_error_slm = None
self._first_timestamp = None
self._peak_flow_slm = None
self._min_flow_slm = None
@@ -94,6 +97,9 @@ class PerformanceReporter:
if abs(mean - target) <= band and std <= std_threshold:
self._reached = True
self.settling_time_s = elapsed_s
self.steady_mean = mean
self.steady_std = std
self.steady_error_slm = target - mean
self._report()
def finalize(self):
@@ -101,6 +107,11 @@ class PerformanceReporter:
if not self._reached and self.target_flow_slm is not None:
self._log("info", "本次运行未达到稳态,未生成控制性能报告")
@property
def steady_reached(self):
"""是否已判定达到稳态(供主循环决定是否自动停止)。"""
return self._reached
def _report(self):
target = self.target_flow_slm
initial = self.initial_flow_slm
@@ -134,6 +145,12 @@ class PerformanceReporter:
f"{self.flow_range_max_slm:.3f} SLM"
),
f"调节时间(至稳态): {self.settling_time_s:.3f} s",
f"稳态流量(窗口均值): {self.steady_mean:.3f} SLM",
f"稳态标准差(窗口): {self.steady_std:.3f} SLM",
(
f"稳态误差: {self.steady_error_slm:+.3f} SLM "
f"(目标 - 稳态均值)"
),
f"初始流量: {initial:.3f} SLM",
(
f"超调量: {extremum_text}{direction} "