Performance Metrics¶
OpenSMC includes 12 built-in metrics to evaluate the performance of sliding mode controllers, from error-based integrals (ISE, IAE, ITAE) to controller-specific measures (chattering index, control effort).
Usage Example¶
from opensmc import metrics
# After running a simulation and getting a result dict
# result has keys: 't', 'x', 'u', 's', 'ref'
# Calculate a single metric
ise = metrics.ise(result)
# Calculate all metrics at once
all_metrics = metrics.compute_all(result)
print(f"Overshoot: {all_metrics['overshoot']}%")
print(f"Settling Time: {all_metrics['settling_time']}s")
Available Metrics¶
metrics
¶
OpenSMC Metrics — 12 standardized performance metrics for SMC benchmarking.
Functions¶
chattering_index(result, axis=0)
¶
Chattering index: total variation of control signal TV(u).
compute_all(result, axis=0)
¶
Compute all performance metrics and return as dict.
Source code in opensmc/metrics.py
control_effort(result, axis=None)
¶
Total control effort: integral of |u|^2.
iae(result, axis=None)
¶
ise(result, axis=None)
¶
itae(result, axis=None)
¶
Integral of time-weighted absolute error.
mae(result, axis=None)
¶
max_swing(result, axis=2)
¶
overshoot(result, axis=0)
¶
Percent overshoot relative to reference.
Source code in opensmc/metrics.py
reaching_time(result, axis=0, tol=0.01)
¶
Time for |s| to first enter the band |s| < tol.
Source code in opensmc/metrics.py
residual_swing(result, axis=2, tail_frac=0.2)
¶
rmse(result, axis=None)
¶
settling_time(result, axis=0, tol_frac=0.02, threshold=None)
¶
Settling time (2% criterion by default).
Time after which |e| stays within tol_frac * |e(0)| permanently.
Source code in opensmc/metrics.py
ss_error(result, axis=0, tail_frac=0.1)
¶
Steady-state error: mean |e| over last tail_frac of simulation.