Skip to content
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

Reachability using the parallelotope method #93

Open
mforets opened this issue May 17, 2019 · 8 comments
Open

Reachability using the parallelotope method #93

mforets opened this issue May 17, 2019 · 8 comments

Comments

@mforets
Copy link
Member

mforets commented May 17, 2019

See:

@dpsanders
Copy link
Collaborator

@mforets Do you have an implementation of parallelotopes?

@mforets
Copy link
Member Author

mforets commented Dec 26, 2019

Hi David,
A set type specific to parallelotopes is not available yet in LazySets, but we are working on it in LazySets#1632 -- PR which is kind of ready..

Depending on the application that you have in mind, you can use zonotopes, which are a generalization of parallelotopes of order greter than one.

As explained in the notes, there are different approaches for the parallelotope, either in constraint form (as in #1632) on in generator form. Again, depending on the use case, one representation may be preferable than the other.

@dpsanders
Copy link
Collaborator

OK great, thanks. I was asking in terms of implementing the algorithms in this and related papers by Goldsztejn.

@mforets
Copy link
Member Author

mforets commented Dec 26, 2019

Alright, I had a look to that paper again, and to get started we would need Theorem 3.1 in page 7, which gives a parallelotopic enclosure of the image set of a parallelotope through a (differentiable) function.

I have to think about it, but perhaps i can add it as an extension in RangeEnclosures.jl.

@mforets
Copy link
Member Author

mforets commented Dec 27, 2019

To mimic the notation in the paper, one can use a LazySets.AffineMap, which can be created with

Parallelotope(A, 𝐮, x̃) = AffineMap(A, 𝐮, x̃)

or equivalently

Parallelotope(A, 𝐮, x̃) = A*𝐮

After looking with some detail Section 3.2, I think there are typos. Since is a vector, then 𝐲 := 𝛚(x̃) (mind the bold omega, for the interval extension of the discrete map omega) can only possibly be ω(x̃), because by definition of interval extension, ω(x) = 𝛚(x) if x is a scalar. But then 𝐲 - ỹ is identically zero, from Eq. (9). This doesn't make sense. In sum, shouldn't Theorem 3.1 define 𝐲 := 𝛚(□⟨𝐱⟩)?

@mforets
Copy link
Member Author

mforets commented Dec 27, 2019

With such considerations, I tried implementing Theorem 3.1 and the result can be found in this notebook. The final result is at the very end. I'm under the impression that i did something wrong, because the parallelotopic overapproximation is much bigger than the box overapproximation, which can be found in the plot in Out[31].

@dpsanders
Copy link
Collaborator

That's a really fantastic notebook, thanks! It illustrates very well a lot of the concepts that you've implemented so nicely in LazySets.jl.

I'll try to think about what's going on.

@dpsanders
Copy link
Collaborator

I agree that there is an error as you point out in the paper, and I think your interpretation is correct.
I also agree that the result is a huge over-estimation. I think that's because the original parallelotope is so big -- I believe these estimates are supposed to be good for small initial objects?

@mforets mforets transferred this issue from JuliaReach/Reachability.jl Apr 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants