Skip to content

Commit 5055741

Browse files
committed
bench: bench moveinputs with implicit MPCs
1 parent d80f6a4 commit 5055741

File tree

4 files changed

+274
-64
lines changed

4 files changed

+274
-64
lines changed

benchmark/1_bench_sim_model.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## ----------------- Unit tests (no allocation) -------------------------------------
1+
## ----------------- Unit tests ----------------------------------------------------------
22
const UNIT_MODEL = SUITE["unit tests"]["SimModel"]
33

44
UNIT_MODEL["LinModel"]["updatestate!"] =
@@ -22,5 +22,5 @@ UNIT_MODEL["NonLinModel"]["linearize!"] =
2222
linearize!($linmodel, $nonlinmodel);
2323
)
2424

25-
## ----------------- Case studies ---------------------------------------------------
25+
## ----------------- Case studies ---------------------------------------------------------
2626
# TODO: Add case study benchmarks for SimModel

benchmark/2_bench_state_estim.jl

Lines changed: 93 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## ----------------- Unit tests (no allocation) -----------------------------------------
1+
## ----------------- Unit tests -----------------------------------------------------------
22
const UNIT_ESTIM = SUITE["unit tests"]["StateEstimator"]
33

44
skf = SteadyKalmanFilter(linmodel)
@@ -27,6 +27,11 @@ UNIT_ESTIM["KalmanFilter"]["updatestate!"] =
2727
updatestate!($kf, $u, $y, $d),
2828
setup=preparestate!($kf, $y, $d),
2929
)
30+
UNIT_ESTIM["KalmanFilter"]["evaloutput"] =
31+
@benchmarkable(
32+
evaloutput($kf, $d),
33+
setup=preparestate!($kf, $y, $d),
34+
)
3035

3136
lo = Luenberger(linmodel, nint_u=[1, 1])
3237
UNIT_ESTIM["Luenberger"]["preparestate!"] =
@@ -38,44 +43,110 @@ UNIT_ESTIM["Luenberger"]["updatestate!"] =
3843
updatestate!($lo, $u, $y, $d),
3944
setup=preparestate!($lo, $y, $d),
4045
)
46+
UNIT_ESTIM["Luenberger"]["evaloutput"] =
47+
@benchmarkable(
48+
evaloutput($lo, $d),
49+
setup=preparestate!($lo, $y, $d),
50+
)
4151

42-
im = InternalModel(nonlinmodel)
43-
UNIT_ESTIM["InternalModel"]["preparestate!"] =
52+
im_lin = InternalModel(linmodel)
53+
im_nonlin = InternalModel(nonlinmodel)
54+
UNIT_ESTIM["InternalModel"]["preparestate!"]["LinModel"] =
55+
@benchmarkable(
56+
preparestate!($im_lin, $y, $d),
57+
)
58+
UNIT_ESTIM["InternalModel"]["updatestate!"]["LinModel"] =
4459
@benchmarkable(
45-
preparestate!($im, $y, $d),
60+
updatestate!($im_lin, $u, $y, $d),
61+
setup=preparestate!($im_lin, $y, $d),
4662
)
47-
UNIT_ESTIM["InternalModel"]["updatestate!"] =
63+
UNIT_ESTIM["InternalModel"]["evaloutput"]["LinModel"] =
4864
@benchmarkable(
49-
updatestate!($im, $u, $y, $d),
50-
setup=preparestate!($im, $y, $d),
65+
evaloutput($im_lin, $d),
66+
setup=preparestate!($im_lin, $y, $d),
67+
)
68+
UNIT_ESTIM["InternalModel"]["preparestate!"]["NonLinModel"] =
69+
@benchmarkable(
70+
preparestate!($im_nonlin, $y, $d),
71+
)
72+
UNIT_ESTIM["InternalModel"]["updatestate!"]["NonLinModel"] =
73+
@benchmarkable(
74+
updatestate!($im_nonlin, $u, $y, $d),
75+
setup=preparestate!($im_nonlin, $y, $d),
76+
)
77+
UNIT_ESTIM["InternalModel"]["evaloutput"]["NonLinModel"] =
78+
@benchmarkable(
79+
evaloutput($im_nonlin, $d),
80+
setup=preparestate!($im_nonlin, $y, $d),
5181
)
5282

53-
ukf = UnscentedKalmanFilter(nonlinmodel)
54-
UNIT_ESTIM["UnscentedKalmanFilter"]["preparestate!"] =
83+
ukf_lin = UnscentedKalmanFilter(linmodel)
84+
ukf_nonlin = UnscentedKalmanFilter(nonlinmodel)
85+
UNIT_ESTIM["UnscentedKalmanFilter"]["preparestate!"]["LinModel"] =
5586
@benchmarkable(
56-
preparestate!($ukf, $y, $d),
87+
preparestate!($ukf_lin, $y, $d),
5788
)
58-
UNIT_ESTIM["UnscentedKalmanFilter"]["updatestate!"] =
89+
UNIT_ESTIM["UnscentedKalmanFilter"]["updatestate!"]["LinModel"] =
5990
@benchmarkable(
60-
updatestate!($ukf, $u, $y, $d),
61-
setup=preparestate!($ukf, $y, $d),
91+
updatestate!($ukf_lin, $u, $y, $d),
92+
setup=preparestate!($ukf_lin, $y, $d),
6293
)
63-
UNIT_ESTIM["UnscentedKalmanFilter"]["evaloutput"] =
94+
UNIT_ESTIM["UnscentedKalmanFilter"]["evaloutput"]["LinModel"] =
6495
@benchmarkable(
65-
evaloutput($ukf, $d),
66-
setup=preparestate!($ukf, $y, $d),
96+
evaloutput($ukf_lin, $d),
97+
setup=preparestate!($ukf_lin, $y, $d),
98+
)
99+
UNIT_ESTIM["UnscentedKalmanFilter"]["preparestate!"]["NonLinModel"] =
100+
@benchmarkable(
101+
preparestate!($ukf_nonlin, $y, $d),
102+
)
103+
UNIT_ESTIM["UnscentedKalmanFilter"]["updatestate!"]["NonLinModel"] =
104+
@benchmarkable(
105+
updatestate!($ukf_nonlin, $u, $y, $d),
106+
setup=preparestate!($ukf_nonlin, $y, $d),
107+
)
108+
UNIT_ESTIM["UnscentedKalmanFilter"]["evaloutput"]["NonLinModel"] =
109+
@benchmarkable(
110+
evaloutput($ukf_nonlin, $d),
111+
setup=preparestate!($ukf_nonlin, $y, $d),
67112
)
68113

69-
ekf = ExtendedKalmanFilter(linmodel, nint_u=[1, 1], direct=false)
70-
UNIT_ESTIM["ExtendedKalmanFilter"]["preparestate!"] =
114+
ekf_lin = ExtendedKalmanFilter(linmodel, nint_u=[1, 1], direct=false)
115+
ekf_nonlin = ExtendedKalmanFilter(nonlinmodel, nint_u=[1, 1], direct=false)
116+
UNIT_ESTIM["ExtendedKalmanFilter"]["preparestate!"]["LinModel"] =
117+
@benchmarkable(
118+
preparestate!($ekf_lin, $y, $d),
119+
)
120+
UNIT_ESTIM["ExtendedKalmanFilter"]["updatestate!"]["LinModel"] =
71121
@benchmarkable(
72-
preparestate!($ekf, $y, $d),
122+
updatestate!($ekf_lin, $u, $y, $d),
123+
setup=preparestate!($ekf_lin, $y, $d),
73124
)
74-
UNIT_ESTIM["ExtendedKalmanFilter"]["updatestate!"] =
125+
UNIT_ESTIM["ExtendedKalmanFilter"]["evaloutput"]["LinModel"] =
75126
@benchmarkable(
76-
updatestate!($ekf, $u, $y, $d),
77-
setup=preparestate!($ekf, $y, $d),
127+
evaloutput($ekf_lin, $d),
128+
setup=preparestate!($ekf_lin, $y, $d),
78129
)
130+
UNIT_ESTIM["ExtendedKalmanFilter"]["preparestate!"]["NonLinModel"] =
131+
@benchmarkable(
132+
preparestate!($ekf_nonlin, $y, $d),
133+
)
134+
UNIT_ESTIM["ExtendedKalmanFilter"]["updatestate!"]["NonLinModel"] =
135+
@benchmarkable(
136+
updatestate!($ekf_nonlin, $u, $y, $d),
137+
setup=preparestate!($ekf_nonlin, $y, $d),
138+
)
139+
UNIT_ESTIM["ExtendedKalmanFilter"]["evaloutput"]["NonLinModel"] =
140+
@benchmarkable(
141+
evaloutput($ekf_nonlin, $d),
142+
setup=preparestate!($ekf_nonlin, $y, $d),
143+
)
144+
145+
mhe_lin_direct = MovingHorizonEstimator(linmodel, He=10, direct=true)
146+
mhe_lin_nondirect = MovingHorizonEstimator(linmodel, He=10, direct=false)
147+
mhe_nonlin_direct = MovingHorizonEstimator(nonlinmodel, He=10, direct=true)
148+
mhe_nonlin_nondirect = MovingHorizonEstimator(nonlinmodel, He=10, direct=false)
149+
79150

80151
## ----------------- Case studies ---------------------------------------------------
81152
# TODO: Add case study benchmarks for StateEstimator

0 commit comments

Comments
 (0)