Iterative refinement
LazySets.Approximations.overapproximate_hausdorff
— Functionoverapproximate_hausdorff(X::S, ε::Real) where {N<:AbstractFloat, S<:LazySet{N}}
Return an ε-close overapproximation of the given 2D convex set (in terms of the Hausdorff distance) in the form of a polygon in constraint representation.
Input
X
– 2D convex setε
– error bound
Output
A polygon in constraint representation.
LazySets.Approximations.LocalApproximation
— TypeLocalApproximation{N, VN<:AbstractVector{N}}
Type that represents a local approximation in 2D.
Fields
p1
– first inner pointd1
– first directionp2
– second inner pointd2
– second directionq
– intersection of the lines l1 ⟂ d1 at p1 and l2 ⟂ d2 at p2refinable
– flag stating whether this approximation is refinableerr
– error upper bound
Notes
The criteria for being refinable are determined in new_approx
.
LazySets.Approximations.PolygonalOverapproximation
— TypePolygonalOverapproximation{N, SN<:LazySet{N}, VN<:AbstractVector{N}}
Type that represents a polygonal overapproximation of a convex set.
Fields
S
– convex setapprox_stack
– stack of local approximations that still need to be examinedconstraints
– vector of half-spaces that are already finalized (i.e., they satisfy the given error bound)
LazySets.Approximations.new_approx
— Functionnew_approx(S::LazySet, p1::VN, d1::VN,
p2::VN, d2::VN) where {N<:AbstractFloat, VN<:AbstractVector{N}}
Create a LocalApproximation
instance for the given excerpt of a polygonal overapproximation.
Input
S
– convex setp1
– first inner pointd1
– first directionp2
– second inner pointd2
– second direction
Output
A local approximation of S
in the given directions.
LazySets.Approximations.addapproximation!
— Functionaddapproximation!(Ω::PolygonalOverapproximation, p1::VN, d1::VN,
p2::VN, d2::VN) where {N, VN<:AbstractVector{N}}
Input
Ω
– polygonal overapproximation of a convex setp1
– first inner pointd1
– first directionp2
– second inner pointd2
– second direction
Output
The list of local approximations in Ω
of the set Ω.S
is updated in-place and the new approximation is returned by this function.
LazySets.Approximations.refine
— Methodrefine(approx::LocalApproximation, S::LazySet)
Refine a given local approximation of the polygonal overapproximation of a convex set by splitting along the normal direction of the approximation.
Input
approx
– local approximation to be refinedS
– 2D convex set
Output
The tuple consisting of the refined right and left local approximations.
LazySets.Approximations.tohrep
— Methodtohrep(Ω::PolygonalOverapproximation)
Convert a polygonal overapproximation into a polygon in constraint representation.
Input
Ω
– polygonal overapproximation of a convex set
Output
A polygon in constraint representation.
Algorithm
Internally, the constraints of Ω
are already sorted.
Base.convert
— Methodconvert(::Type{HalfSpace}, approx::LocalApproximation)
Convert a local approximation to a half-space.
Input
approx
– local approximation
Output
A half-space.