Skip to content

Commit 76b5e4d

Browse files
Merge pull request #10 from ASAG-ISCAS/dev
Dev
2 parents 54ea4bc + 883e2b9 commit 76b5e4d

File tree

8 files changed

+1608
-120
lines changed

8 files changed

+1608
-120
lines changed

benchmarks/benchmark_interval_arithmetic.m

Lines changed: 756 additions & 0 deletions
Large diffs are not rendered by default.

benchmarks/benchmark_interval_arithmetic.py

Lines changed: 496 additions & 9 deletions
Large diffs are not rendered by default.

benchmarks/benchmark_sym_derivative.py

Lines changed: 288 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,295 @@
33
from pybdr.model import tank6eq, Model
44
from pybdr.util.functional import performance_counter, performance_counter_start
55

6-
if __name__ == "__main__":
7-
m = Model(tank6eq, [6, 1])
86

9-
time_start = performance_counter_start()
10-
x, u = np.random.random(6), np.random.rand(1)
7+
def sym_derivative_case00_NUM_test():
8+
sys_test = tank6eq
9+
dimes = [6, 1]
10+
11+
m = Model(sys_test, dimes)
12+
13+
x_np, u_np = np.random.rand(6), np.random.rand(1)
14+
15+
print()
16+
print('NUM Derivative >>>>>>>>>>>>>>>>>>>>>>>>>>>')
17+
print()
18+
19+
time_cur = performance_counter_start()
20+
21+
# ----------------------------------------------------------------------
22+
# order 0, for variable 0
23+
24+
np_derivative_00 = m.evaluate((x_np, u_np), 'numpy', 0, 0) # Run 1
25+
26+
time_cur = performance_counter(time_cur, 'derivative 00 Run 1')
27+
28+
# 10 runs
29+
np_derivative_00 = m.evaluate((x_np, u_np), 'numpy', 0, 0)
30+
np_derivative_00 = m.evaluate((x_np, u_np), 'numpy', 0, 0)
31+
np_derivative_00 = m.evaluate((x_np, u_np), 'numpy', 0, 0)
32+
np_derivative_00 = m.evaluate((x_np, u_np), 'numpy', 0, 0)
33+
np_derivative_00 = m.evaluate((x_np, u_np), 'numpy', 0, 0)
34+
np_derivative_00 = m.evaluate((x_np, u_np), 'numpy', 0, 0)
35+
np_derivative_00 = m.evaluate((x_np, u_np), 'numpy', 0, 0)
36+
np_derivative_00 = m.evaluate((x_np, u_np), 'numpy', 0, 0)
37+
np_derivative_00 = m.evaluate((x_np, u_np), 'numpy', 0, 0)
38+
np_derivative_00 = m.evaluate((x_np, u_np), 'numpy', 0, 0)
39+
40+
time_cur = performance_counter(time_cur, 'derivative 00 Run 2+ AVG', 10)
41+
42+
# ----------------------------------------------------------------------
43+
# order 0, for variable 1
44+
45+
np_derivative_01 = m.evaluate((x_np, u_np), 'numpy', 0, 1) # Run 1
46+
47+
time_cur = performance_counter(time_cur, 'derivative 01 Run 1')
48+
49+
# 10 runs
50+
np_derivative_01 = m.evaluate((x_np, u_np), 'numpy', 0, 1)
51+
np_derivative_01 = m.evaluate((x_np, u_np), 'numpy', 0, 1)
52+
np_derivative_01 = m.evaluate((x_np, u_np), 'numpy', 0, 1)
53+
np_derivative_01 = m.evaluate((x_np, u_np), 'numpy', 0, 1)
54+
np_derivative_01 = m.evaluate((x_np, u_np), 'numpy', 0, 1)
55+
np_derivative_01 = m.evaluate((x_np, u_np), 'numpy', 0, 1)
56+
np_derivative_01 = m.evaluate((x_np, u_np), 'numpy', 0, 1)
57+
np_derivative_01 = m.evaluate((x_np, u_np), 'numpy', 0, 1)
58+
np_derivative_01 = m.evaluate((x_np, u_np), 'numpy', 0, 1)
59+
np_derivative_01 = m.evaluate((x_np, u_np), 'numpy', 0, 1)
60+
61+
time_cur = performance_counter(time_cur, 'derivative 01 Run 2+ AVG', 10)
62+
63+
# ----------------------------------------------------------------------
64+
# order 1, for variable 0
65+
66+
np_derivative_10 = m.evaluate((x_np, u_np), 'numpy', 1, 0) # Run 1
67+
68+
time_cur = performance_counter(time_cur, 'derivative 10 Run 1')
69+
70+
# 10 runs
71+
np_derivative_10 = m.evaluate((x_np, u_np), 'numpy', 1, 0)
72+
np_derivative_10 = m.evaluate((x_np, u_np), 'numpy', 1, 0)
73+
np_derivative_10 = m.evaluate((x_np, u_np), 'numpy', 1, 0)
74+
np_derivative_10 = m.evaluate((x_np, u_np), 'numpy', 1, 0)
75+
np_derivative_10 = m.evaluate((x_np, u_np), 'numpy', 1, 0)
76+
np_derivative_10 = m.evaluate((x_np, u_np), 'numpy', 1, 0)
77+
np_derivative_10 = m.evaluate((x_np, u_np), 'numpy', 1, 0)
78+
np_derivative_10 = m.evaluate((x_np, u_np), 'numpy', 1, 0)
79+
np_derivative_10 = m.evaluate((x_np, u_np), 'numpy', 1, 0)
80+
np_derivative_10 = m.evaluate((x_np, u_np), 'numpy', 1, 0)
81+
82+
time_cur = performance_counter(time_cur, 'derivative 10 Run 2+ AVG', 10)
83+
84+
# ----------------------------------------------------------------------
85+
# order 1, for variable 1
86+
87+
np_derivative_11 = m.evaluate((x_np, u_np), 'numpy', 1, 1) # Run 1
88+
89+
time_cur = performance_counter(time_cur, 'derivative 10 Run 1')
90+
91+
np_derivative_11 = m.evaluate((x_np, u_np), 'numpy', 1, 1)
92+
np_derivative_11 = m.evaluate((x_np, u_np), 'numpy', 1, 1)
93+
np_derivative_11 = m.evaluate((x_np, u_np), 'numpy', 1, 1)
94+
np_derivative_11 = m.evaluate((x_np, u_np), 'numpy', 1, 1)
95+
np_derivative_11 = m.evaluate((x_np, u_np), 'numpy', 1, 1)
96+
np_derivative_11 = m.evaluate((x_np, u_np), 'numpy', 1, 1)
97+
np_derivative_11 = m.evaluate((x_np, u_np), 'numpy', 1, 1)
98+
np_derivative_11 = m.evaluate((x_np, u_np), 'numpy', 1, 1)
99+
np_derivative_11 = m.evaluate((x_np, u_np), 'numpy', 1, 1)
100+
np_derivative_11 = m.evaluate((x_np, u_np), 'numpy', 1, 1)
101+
102+
time_cur = performance_counter(time_cur, 'derivative 11 Run 2+ AVG', 10)
103+
104+
# ----------------------------------------------------------------------
105+
# order 3, for variable 0
106+
107+
np_derivative_30 = m.evaluate((x_np, u_np), 'numpy', 3, 0) # Run 1
108+
109+
time_cur = performance_counter(time_cur, 'derivative 10 Run 1')
110+
111+
# 10 runs
112+
np_derivative_30 = m.evaluate((x_np, u_np), 'numpy', 3, 0)
113+
np_derivative_30 = m.evaluate((x_np, u_np), 'numpy', 3, 0)
114+
np_derivative_30 = m.evaluate((x_np, u_np), 'numpy', 3, 0)
115+
np_derivative_30 = m.evaluate((x_np, u_np), 'numpy', 3, 0)
116+
np_derivative_30 = m.evaluate((x_np, u_np), 'numpy', 3, 0)
117+
np_derivative_30 = m.evaluate((x_np, u_np), 'numpy', 3, 0)
118+
np_derivative_30 = m.evaluate((x_np, u_np), 'numpy', 3, 0)
119+
np_derivative_30 = m.evaluate((x_np, u_np), 'numpy', 3, 0)
120+
np_derivative_30 = m.evaluate((x_np, u_np), 'numpy', 3, 0)
121+
np_derivative_30 = m.evaluate((x_np, u_np), 'numpy', 3, 0)
122+
123+
time_cur = performance_counter(time_cur, 'derivative 30 Run 2+ AVG', 10)
124+
125+
# ----------------------------------------------------------------------
126+
# order 3, for variable 1
127+
128+
np_derivative_31 = m.evaluate((x_np, u_np), 'numpy', 3, 1) # Run 1
129+
130+
time_cur = performance_counter(time_cur, 'derivative 10 Run 1')
131+
132+
# 10 runs
133+
np_derivative_31 = m.evaluate((x_np, u_np), 'numpy', 3, 1)
134+
np_derivative_31 = m.evaluate((x_np, u_np), 'numpy', 3, 1)
135+
np_derivative_31 = m.evaluate((x_np, u_np), 'numpy', 3, 1)
136+
np_derivative_31 = m.evaluate((x_np, u_np), 'numpy', 3, 1)
137+
np_derivative_31 = m.evaluate((x_np, u_np), 'numpy', 3, 1)
138+
np_derivative_31 = m.evaluate((x_np, u_np), 'numpy', 3, 1)
139+
np_derivative_31 = m.evaluate((x_np, u_np), 'numpy', 3, 1)
140+
np_derivative_31 = m.evaluate((x_np, u_np), 'numpy', 3, 1)
141+
np_derivative_31 = m.evaluate((x_np, u_np), 'numpy', 3, 1)
142+
np_derivative_31 = m.evaluate((x_np, u_np), 'numpy', 3, 1)
143+
144+
time_cur = performance_counter(time_cur, 'derivative 31 Run 2+ AVG', 10)
145+
146+
147+
def sym_derivative_case00_INT_test():
148+
sys_test = tank6eq
149+
dimes = [6, 1]
150+
151+
m = Model(sys_test, dimes)
11152

12-
np_derivative_0 = m.evaluate((x, u), "numpy", 3, 0)
13-
np_derivative_1 = m.evaluate((x, u), "numpy", 3, 1)
14-
np_derivative_2 = m.evaluate((x, u), "numpy", 0, 0)
153+
x_int, u_int = Interval.rand(6), Interval.rand(1)
15154

16-
x, u = Interval.rand(6), Interval.rand(1)
17-
int_derivative_0 = m.evaluate((x, u), "interval", 3, 0)
18-
int_derivative_1 = m.evaluate((x, u), "interval", 2, 0)
19-
int_derivative_2 = m.evaluate((x, u), "interval", 2, 0)
20-
int_derivative_3 = m.evaluate((x, u), "interval", 0, 1)
155+
print()
156+
print('INT Derivative >>>>>>>>>>>>>>>>>>>>>>>>>>>')
157+
print()
21158

22-
performance_counter(time_start, "sym_derivative")
23-
159+
time_cur = performance_counter_start()
160+
161+
# ----------------------------------------------------------------------
162+
# order 0, for variable 0
163+
164+
int_derivative_00 = m.evaluate((x_int, u_int), 'interval', 0, 0) # Run 1
165+
166+
time_cur = performance_counter(time_cur, 'derivative 00 Run 1')
167+
168+
# 10 runs
169+
int_derivative_00 = m.evaluate((x_int, u_int), 'interval', 0, 0)
170+
int_derivative_00 = m.evaluate((x_int, u_int), 'interval', 0, 0)
171+
int_derivative_00 = m.evaluate((x_int, u_int), 'interval', 0, 0)
172+
int_derivative_00 = m.evaluate((x_int, u_int), 'interval', 0, 0)
173+
int_derivative_00 = m.evaluate((x_int, u_int), 'interval', 0, 0)
174+
int_derivative_00 = m.evaluate((x_int, u_int), 'interval', 0, 0)
175+
int_derivative_00 = m.evaluate((x_int, u_int), 'interval', 0, 0)
176+
int_derivative_00 = m.evaluate((x_int, u_int), 'interval', 0, 0)
177+
int_derivative_00 = m.evaluate((x_int, u_int), 'interval', 0, 0)
178+
int_derivative_00 = m.evaluate((x_int, u_int), 'interval', 0, 0)
179+
180+
time_cur = performance_counter(time_cur, 'derivative 00 Run 2+ AVG', 10)
181+
182+
# ----------------------------------------------------------------------
183+
# order 0, for variable 1
184+
185+
int_derivative_01 = m.evaluate((x_int, u_int), 'interval', 0, 1) # Run 1
186+
187+
time_cur = performance_counter(time_cur, 'derivative 01 Run 1')
188+
189+
# 10 runs
190+
int_derivative_01 = m.evaluate((x_int, u_int), 'interval', 0, 1)
191+
int_derivative_01 = m.evaluate((x_int, u_int), 'interval', 0, 1)
192+
int_derivative_01 = m.evaluate((x_int, u_int), 'interval', 0, 1)
193+
int_derivative_01 = m.evaluate((x_int, u_int), 'interval', 0, 1)
194+
int_derivative_01 = m.evaluate((x_int, u_int), 'interval', 0, 1)
195+
int_derivative_01 = m.evaluate((x_int, u_int), 'interval', 0, 1)
196+
int_derivative_01 = m.evaluate((x_int, u_int), 'interval', 0, 1)
197+
int_derivative_01 = m.evaluate((x_int, u_int), 'interval', 0, 1)
198+
int_derivative_01 = m.evaluate((x_int, u_int), 'interval', 0, 1)
199+
int_derivative_01 = m.evaluate((x_int, u_int), 'interval', 0, 1)
200+
201+
time_cur = performance_counter(time_cur, 'derivative 01 Run 2+ AVG', 10)
202+
203+
# ----------------------------------------------------------------------
204+
# order 1, for variable 0
205+
206+
int_derivative_10 = m.evaluate((x_int, u_int), 'interval', 1, 0) # Run 1
207+
208+
time_cur = performance_counter(time_cur, 'derivative 10 Run 1')
209+
210+
# 10 runs
211+
int_derivative_10 = m.evaluate((x_int, u_int), 'interval', 1, 0)
212+
int_derivative_10 = m.evaluate((x_int, u_int), 'interval', 1, 0)
213+
int_derivative_10 = m.evaluate((x_int, u_int), 'interval', 1, 0)
214+
int_derivative_10 = m.evaluate((x_int, u_int), 'interval', 1, 0)
215+
int_derivative_10 = m.evaluate((x_int, u_int), 'interval', 1, 0)
216+
int_derivative_10 = m.evaluate((x_int, u_int), 'interval', 1, 0)
217+
int_derivative_10 = m.evaluate((x_int, u_int), 'interval', 1, 0)
218+
int_derivative_10 = m.evaluate((x_int, u_int), 'interval', 1, 0)
219+
int_derivative_10 = m.evaluate((x_int, u_int), 'interval', 1, 0)
220+
int_derivative_10 = m.evaluate((x_int, u_int), 'interval', 1, 0)
221+
222+
time_cur = performance_counter(time_cur, 'derivative 10 Run 2+ AVG', 10)
223+
224+
# ----------------------------------------------------------------------
225+
# order 1, for variable 1
226+
227+
int_derivative_11 = m.evaluate((x_int, u_int), 'interval', 1, 1) # Run 1
228+
229+
time_cur = performance_counter(time_cur, 'derivative 10 Run 1')
230+
231+
int_derivative_11 = m.evaluate((x_int, u_int), 'interval', 1, 1)
232+
int_derivative_11 = m.evaluate((x_int, u_int), 'interval', 1, 1)
233+
int_derivative_11 = m.evaluate((x_int, u_int), 'interval', 1, 1)
234+
int_derivative_11 = m.evaluate((x_int, u_int), 'interval', 1, 1)
235+
int_derivative_11 = m.evaluate((x_int, u_int), 'interval', 1, 1)
236+
int_derivative_11 = m.evaluate((x_int, u_int), 'interval', 1, 1)
237+
int_derivative_11 = m.evaluate((x_int, u_int), 'interval', 1, 1)
238+
int_derivative_11 = m.evaluate((x_int, u_int), 'interval', 1, 1)
239+
int_derivative_11 = m.evaluate((x_int, u_int), 'interval', 1, 1)
240+
int_derivative_11 = m.evaluate((x_int, u_int), 'interval', 1, 1)
241+
242+
time_cur = performance_counter(time_cur, 'derivative 11 Run 2+ AVG', 10)
243+
244+
# ----------------------------------------------------------------------
245+
# order 3, for variable 0
246+
247+
int_derivative_30 = m.evaluate((x_int, u_int), 'interval', 3, 0) # Run 1
248+
249+
time_cur = performance_counter(time_cur, 'derivative 10 Run 1')
250+
251+
# 10 runs
252+
int_derivative_30 = m.evaluate((x_int, u_int), 'interval', 3, 0)
253+
int_derivative_30 = m.evaluate((x_int, u_int), 'interval', 3, 0)
254+
int_derivative_30 = m.evaluate((x_int, u_int), 'interval', 3, 0)
255+
int_derivative_30 = m.evaluate((x_int, u_int), 'interval', 3, 0)
256+
int_derivative_30 = m.evaluate((x_int, u_int), 'interval', 3, 0)
257+
int_derivative_30 = m.evaluate((x_int, u_int), 'interval', 3, 0)
258+
int_derivative_30 = m.evaluate((x_int, u_int), 'interval', 3, 0)
259+
int_derivative_30 = m.evaluate((x_int, u_int), 'interval', 3, 0)
260+
int_derivative_30 = m.evaluate((x_int, u_int), 'interval', 3, 0)
261+
int_derivative_30 = m.evaluate((x_int, u_int), 'interval', 3, 0)
262+
263+
time_cur = performance_counter(time_cur, 'derivative 30 Run 2+ AVG', 10)
264+
265+
# ----------------------------------------------------------------------
266+
# order 3, for variable 1
267+
268+
int_derivative_31 = m.evaluate((x_int, u_int), 'interval', 3, 1) # Run 1
269+
270+
time_cur = performance_counter(time_cur, 'derivative 10 Run 1')
271+
272+
# 10 runs
273+
int_derivative_31 = m.evaluate((x_int, u_int), 'interval', 3, 1)
274+
int_derivative_31 = m.evaluate((x_int, u_int), 'interval', 3, 1)
275+
int_derivative_31 = m.evaluate((x_int, u_int), 'interval', 3, 1)
276+
int_derivative_31 = m.evaluate((x_int, u_int), 'interval', 3, 1)
277+
int_derivative_31 = m.evaluate((x_int, u_int), 'interval', 3, 1)
278+
int_derivative_31 = m.evaluate((x_int, u_int), 'interval', 3, 1)
279+
int_derivative_31 = m.evaluate((x_int, u_int), 'interval', 3, 1)
280+
int_derivative_31 = m.evaluate((x_int, u_int), 'interval', 3, 1)
281+
int_derivative_31 = m.evaluate((x_int, u_int), 'interval', 3, 1)
282+
int_derivative_31 = m.evaluate((x_int, u_int), 'interval', 3, 1)
283+
284+
time_cur = performance_counter(time_cur, 'derivative 31 Run 2+ AVG', 10)
285+
286+
287+
def sym_derivative_case01_test():
288+
print("test_sym_derivative_case_01")
289+
290+
291+
def sym_derivative_case02_test():
292+
print("test_sym_derivative_case_02")
293+
294+
295+
if __name__ == "__main__":
296+
sym_derivative_case00_NUM_test()
297+
sym_derivative_case00_INT_test()

0 commit comments

Comments
 (0)