Skip to content

Commit 128a62d

Browse files
authored
Harden governor response metrics
1 parent 4421185 commit 128a62d

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

examples/steam_engine_governor.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,17 @@ def summarize_response(system, time, outputs, target):
108108
speed = outputs[0]
109109
final_speed = speed[-1]
110110
peak_speed = np.max(speed)
111+
minimum_speed = np.min(speed)
111112
tolerance = max(0.02 * max(abs(target), abs(final_speed)), 1e-3)
112-
overshoot = 0.0 if abs(target) < 1e-9 else max(
113-
0.0, (peak_speed - target) / abs(target) * 100)
113+
if abs(target) < 1e-9:
114+
overshoot = 0.0
115+
elif target > 0:
116+
overshoot = max(0.0, (peak_speed - target) / abs(target) * 100)
117+
else:
118+
overshoot = max(0.0, (target - minimum_speed) / abs(target) * 100)
114119
steady_state_error = target - final_speed
115-
dominant_poles = sorted(ct.poles(system), key=lambda pole: pole.real)[-2:]
120+
poles = list(ct.poles(system))
121+
dominant_poles = sorted(poles, key=lambda pole: pole.real)[-min(2, len(poles)):]
116122
damping_ratios = []
117123
for pole in dominant_poles:
118124
magnitude = abs(pole)

0 commit comments

Comments
 (0)