Robust CBF Safety Layer for Neural Policies / results.json
Mechanism confirmed, baseline not beaten
1{
2 "math_verification": {
3 "state": [
4 0.25,
5 0.35
6 ],
7 "M0": 8.0,
8 "eps_grid": [
9 0.0,
10 0.19999999999999998,
11 0.39999999999999997,
12 0.6,
13 0.7999999999999999,
14 0.9999999999999999,
15 1.2,
16 1.4,
17 1.5999999999999999,
18 1.7999999999999998,
19 1.9999999999999998,
20 2.1999999999999997,
21 2.4
22 ],
23 "margins": [
24 8.0,
25 7.6000000000000005,
26 7.2,
27 6.8,
28 6.4,
29 6.0,
30 5.6000000000000005,
31 5.2,
32 4.8,
33 4.4,
34 4.000000000000001,
35 3.6000000000000005,
36 3.2
37 ],
38 "fitted_margin_slope": -1.9999999999999996,
39 "predicted_margin_slope": -2.0,
40 "predicted_eps_critical": 4.0,
41 "observed_eps_critical": 4.0,
42 "bound_shift_samples": [
43 [
44 0.1,
45 0.10000000000000009,
46 -0.10000000000000009
47 ],
48 [
49 0.2,
50 0.20000000000000018,
51 -0.20000000000000018
52 ],
53 [
54 0.4,
55 0.3999999999999999,
56 -0.3999999999999999
57 ]
58 ],
59 "predicted_shifts": "lower +eps, upper -eps"
60 },
61 "closed_loop": [
62 {
63 "disturbance_amplitude": 0,
64 "clip": {
65 "max_violation": 0.0091926752499909,
66 "mean_intervention": 0.0,
67 "min_margin": 2.0,
68 "bound_misses": 0
69 },
70 "ordinary_cbf": {
71 "max_violation": 0.0,
72 "mean_intervention": 0.09209308024722863,
73 "min_margin": 0.1766289802259342,
74 "bound_misses": 0
75 },
76 "robust_cbf": {
77 "max_violation": 0.0,
78 "mean_intervention": 0.13776788040696045,
79 "min_margin": 0.22067309816553404,
80 "bound_misses": 0
81 }
82 },
83 {
84 "disturbance_amplitude": 0.1,
85 "clip": {
86 "max_violation": 0.06395505507387211,
87 "mean_intervention": 0.0,
88 "min_margin": 2.0,
89 "bound_misses": 0
90 },
91 "ordinary_cbf": {
92 "max_violation": 0.0,
93 "mean_intervention": 0.09246815894123397,
94 "min_margin": 0.11050318146056881,
95 "bound_misses": 0
96 },
97 "robust_cbf": {
98 "max_violation": 0.0,
99 "mean_intervention": 0.1389727859275357,
100 "min_margin": 0.15304052618469477,
101 "bound_misses": 0
102 }
103 },
104 {
105 "disturbance_amplitude": 0.2,
106 "clip": {
107 "max_violation": 0.12939310651646063,
108 "mean_intervention": 0.0,
109 "min_margin": 2.0,
110 "bound_misses": 0
111 },
112 "ordinary_cbf": {
113 "max_violation": 0.0,
114 "mean_intervention": 0.0942448629398561,
115 "min_margin": 0.019811605553199385,
116 "bound_misses": 0
117 },
118 "robust_cbf": {
119 "max_violation": 0.0,
120 "mean_intervention": 0.14117172847506754,
121 "min_margin": 0.060944574540135577,
122 "bound_misses": 0
123 }
124 },
125 {
126 "disturbance_amplitude": 0.3,
127 "clip": {
128 "max_violation": 0.19918425457061661,
129 "mean_intervention": 0.0,
130 "min_margin": 2.0,
131 "bound_misses": 0
132 },
133 "ordinary_cbf": {
134 "max_violation": 0.0,
135 "mean_intervention": 0.0934669684939966,
136 "min_margin": -0.1600706677047814,
137 "bound_misses": 0
138 },
139 "robust_cbf": {
140 "max_violation": 0.0,
141 "mean_intervention": 0.14311198618412072,
142 "min_margin": -0.0730810251499121,
143 "bound_misses": 0
144 }
145 },
146 {
147 "disturbance_amplitude": 0.4,
148 "clip": {
149 "max_violation": 0.26982926122464734,
150 "mean_intervention": 0.0,
151 "min_margin": 2.0,
152 "bound_misses": 330
153 },
154 "ordinary_cbf": {
155 "max_violation": 0.0,
156 "mean_intervention": 0.08429263047565698,
157 "min_margin": -0.4655228139022083,
158 "bound_misses": 330
159 },
160 "robust_cbf": {
161 "max_violation": 0.0,
162 "mean_intervention": 0.138539061566231,
163 "min_margin": -0.3429388500012269,
164 "bound_misses": 330
165 }
166 },
167 {
168 "disturbance_amplitude": 0.5,
169 "clip": {
170 "max_violation": 0.3378564279793159,
171 "mean_intervention": 0.0,
172 "min_margin": 2.0,
173 "bound_misses": 765
174 },
175 "ordinary_cbf": {
176 "max_violation": 0.0,
177 "mean_intervention": 0.07706391804602254,
178 "min_margin": -0.8207471685437446,
179 "bound_misses": 765
180 },
181 "robust_cbf": {
182 "max_violation": 0.0,
183 "mean_intervention": 0.12961441918895758,
184 "min_margin": -0.6686064464324026,
185 "bound_misses": 765
186 }
187 },
188 {
189 "disturbance_amplitude": 0.6,
190 "clip": {
191 "max_violation": 0.39818343793944866,
192 "mean_intervention": 0.0,
193 "min_margin": 2.0,
194 "bound_misses": 1213
195 },
196 "ordinary_cbf": {
197 "max_violation": 0.01201068098589908,
198 "mean_intervention": 0.07152283853905787,
199 "min_margin": -1.1811752636081865,
200 "bound_misses": 1213
201 },
202 "robust_cbf": {
203 "max_violation": 0.0,
204 "mean_intervention": 0.11631111745646536,
205 "min_margin": -1.1079472421296477,
206 "bound_misses": 1213
207 }
208 },
209 {
210 "disturbance_amplitude": 0.8,
211 "clip": {
212 "max_violation": 0.4589672174003294,
213 "mean_intervention": 0.0,
214 "min_margin": 2.0,
215 "bound_misses": 1983
216 },
217 "ordinary_cbf": {
218 "max_violation": 0.10248696514183786,
219 "mean_intervention": 0.0629673388508905,
220 "min_margin": -1.9186002411127068,
221 "bound_misses": 1983
222 },
223 "robust_cbf": {
224 "max_violation": 0.05609322303779174,
225 "mean_intervention": 0.0973398247649854,
226 "min_margin": -2.0004558044859664,
227 "bound_misses": 1983
228 }
229 },
230 {
231 "disturbance_amplitude": 1.0,
232 "clip": {
233 "max_violation": 0.4226248436458355,
234 "mean_intervention": 0.0,
235 "min_margin": 2.0,
236 "bound_misses": 2469
237 },
238 "ordinary_cbf": {
239 "max_violation": 0.1909981502689606,
240 "mean_intervention": 0.05567132310642432,
241 "min_margin": -2.3468801067817178,
242 "bound_misses": 2469
243 },
244 "robust_cbf": {
245 "max_violation": 0.11194821406588606,
246 "mean_intervention": 0.08111872641930463,
247 "min_margin": -2.58942968967079,
248 "bound_misses": 2469
249 }
250 }
251 ],
252 "notes": "Disturbance bound is eps=.35; actual sinusoid peak equals amplitude. Empty robust intervals use closest actuator endpoint emergency fallback."
253}