-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use IntervalArithmetic package for intervals #25
base: main
Are you sure you want to change the base?
Conversation
They're not needed now that we're using intervals, which have their own hull function.
The old method was unused now that everything's being changed to take IntervalBoxes, so I decided this was more useful. Now, it returns a 3-dimensional array obtained from calling the individual method on each element of the vector, effectively concatenating the automatically-vectorized version on the third dimension.
This order, with each column as a state vector, matches functions like lsim from ControlSystems, and offers better cache behavior with Julia's matrix ordering. It also matches many uses of the function, which immediately transposed its return value.
Seems like this is hanging on the |
I went ahead and fixed the safety_margin code so it at least doesn't cause an exception. Whatever bug existed before may still persist, but otherwise I think this is ready to merge. Seems like CI is having some issues right now, and we probably still have documentation to update, so I'll give it a bit. |
Actually, no! This whole branch has been obsoleted by IntervalArithmetic 0.22, which removed the IntervalBox type in favor of simply using vectors of intervals. I'll have to rewrite this to match the new API. |
This PR closes #8 by rewriting the package to use IntervalArithmetic.jl for intervals instead of matrices. In addition to bringing semantic types, this actually improves performance by around 2–3× for
bounded_runs_iter
.There are still a few changes I'd like to do in this branch prior to merging:
safety_margin
parameter (needs testing)evol
function family to takeIntervalBox
es in addition to vectorsevol
familyAdded bonus: I also added a ULS method for overapproximating reachable sets, like in the paper. It's really simple to implement, it turns out.