Skip to content

Commit 27a74d8

Browse files
committed
add google colab online demo
1 parent 84e6ee1 commit 27a74d8

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

pybdr/algorithm/asb2008cdc.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from dataclasses import dataclass
33
import numpy as np
44

5-
np.seterr(divide='ignore', invalid='ignore')
5+
np.seterr(divide="ignore", invalid="ignore")
66

77
from scipy.special import factorial
88
from concurrent.futures import ProcessPoolExecutor, as_completed
@@ -59,9 +59,10 @@ def linearize(dyn: Callable, dims, r: Geometry.Base, opt: Options):
5959
lin_opt.taylor_terms = opt.taylor_terms
6060
lin_opt.factors = opt.factors
6161
lin_opt.u = b @ (opt.u + opt.u_trans - opt.lin_err_u)
62+
u_center = lin_opt.u.c
6263
lin_opt.u -= lin_opt.u.c
6364
lin_opt.u_trans = Zonotope(
64-
opt.lin_err_f0 + lin_opt.u.c, np.zeros((opt.lin_err_f0.shape[0], 1))
65+
opt.lin_err_f0 + u_center, np.zeros((opt.lin_err_f0.shape[0], 1))
6566
)
6667
return lin_sys, lin_opt
6768

@@ -183,15 +184,16 @@ def reach(cls, dyn: Callable, dims, opts: Options, x: Zonotope):
183184
next_rp = x
184185

185186
for step in range(opts.steps_num):
186-
next_ri, next_rp = cls.reach_one_step(dyn, dims, next_rp, np.zeros(x.shape), opts)
187+
next_ri, next_rp = cls.reach_one_step(
188+
dyn, dims, next_rp, np.zeros(x.shape), opts
189+
)
187190
ri_set.append(next_ri)
188191
rp_set.append(next_rp)
189192

190193
return ri_set, rp_set
191194

192195
@classmethod
193196
def reach_parallel(cls, dyn: Callable, dims, opts: Options, xs: [Zonotope]):
194-
195197
def ll_decompose(ll):
196198
return [list(group) for group in zip(*ll)]
197199

pybdr/model/model.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ def __series(self, order: int, mod: str, v: int):
5757

5858
def __take_derivative(self, order: int, v: int):
5959
if (
60-
order - 1 not in self.__inr_series
61-
or v not in self.__inr_series[order - 1]["sym"]
60+
order - 1 not in self.__inr_series
61+
or v not in self.__inr_series[order - 1]["sym"]
6262
):
6363
self.__take_derivative(order - 1, v)
6464
start, end = self.__inr_idx[v]
@@ -77,22 +77,30 @@ def evaluate(self, xs: tuple, mod: str, order: int, v: int):
7777
self.__take_derivative(order, v)
7878

7979
def _eval_numpy():
80-
if mod not in self.__inr_series[order] or v not in self.__inr_series[order][mod]:
80+
if (
81+
mod not in self.__inr_series[order]
82+
or v not in self.__inr_series[order][mod]
83+
):
8184
if mod not in self.__inr_series:
8285
self.__inr_series[order][mod] = {}
8386
d = self.__series(order, "sym", v)
8487
d = d if order == 0 else d.squeeze(axis=-1)
8588
d = ImmutableDenseNDimArray(d)
8689
if v not in self.__inr_series[order][mod]:
87-
self.__inr_series[order][mod][v] = lambdify(self.__inr_x, d, "numpy")
90+
self.__inr_series[order][mod][v] = lambdify(
91+
self.__inr_x, d, "numpy"
92+
)
8893
# self.__inr_series[order][mod] = {v: lambdify(self.__inr_x, d, "numpy")}
8994
r = np.asarray(self.__series(order, mod, v)(*np.concatenate(xs, axis=-1)))
9095
return r.squeeze(axis=-1) if order == 0 else r
9196

9297
def _eval_interval():
9398
from pybdr.geometry import Interval
9499

95-
if mod not in self.__inr_series[order] or v not in self.__inr_series[order][mod]:
100+
if (
101+
mod not in self.__inr_series[order]
102+
or v not in self.__inr_series[order][mod]
103+
):
96104
if mod not in self.__inr_series:
97105
self.__inr_series[order][mod] = {}
98106
d = self.__series(order, "sym", v)

0 commit comments

Comments
 (0)