Union
Note that the union of convex sets is generally not convex. Hence these set types are not part of the convex-set family LazySet
.
Binary set union (UnionSet)
LazySets.UnionSet
— TypeUnionSet{N, S1<:LazySet{N}, S2<:LazySet{N}}
Type that represents the set union of two sets.
Fields
X
– setY
– set
Notes
The union of convex sets is typically not convex.
Base.:∪
— Method∪
Alias for UnionSet
.
LazySets.swap
— Methodswap(cup::UnionSet)
Return a new UnionSet
object with the arguments swapped.
Input
cup
– union of two sets
Output
A new UnionSet
object with the arguments swapped.
LazySets.dim
— Methoddim(cup::UnionSet)
Return the dimension of the union of two sets.
Input
cup
– union of two sets
Output
The ambient dimension of the union of two sets.
LazySets.σ
— Methodσ(d::AbstractVector, cup::UnionSet; [algorithm]="support_vector")
Return the support vector of the union of two sets in a given direction.
Input
d
– directioncup
– union of two setsalgorithm
– (optional, default: "supportvector"): the algorithm to compute the support vector; if "supportvector", use the support vector of each argument; if "support_function" use the support function of each argument and evaluate the support vector of only one of them
Output
The support vector in the given direction.
Algorithm
The support vector of the union of two sets $X$ and $Y$ can be obtained as the vector that maximizes the support function of either $X$ or $Y$, i.e., it is sufficient to find the $\argmax(ρ(d, X), ρ(d, Y)])$ and evaluate its support vector.
The default implementation, with option algorithm="support_vector"
, computes the support vector of $X$ and $Y$ and then compares the support function using a dot product.
If the support function can be computed more efficiently, the alternative implementation algorithm="support_function"
can be used, which evaluates the support function of each set directly and then calls only the support vector of either $X$ or $Y$.
LazySets.ρ
— Methodρ(d::AbstractVector, cup::UnionSet)
Return the support function of the union of two sets in a given direction.
Input
d
– directioncup
– union of two sets
Output
The support function in the given direction.
Algorithm
The support function of the union of two sets $X$ and $Y$ is the maximum of the support function of $X$ and $Y$.
LazySets.an_element
— Methodan_element(cup::UnionSet)
Return some element of the union of two sets.
Input
cup
– union of two sets
Output
An element in the union of two sets.
Algorithm
We use an_element
on the first wrapped set.
Base.:∈
— Method∈(x::AbstractVector, cup::UnionSet)
Check whether a given point is contained in the union of two sets.
Input
x
– point/vectorcup
– union of two sets
Output
true
iff $x ∈ cup$.
Base.isempty
— Methodisempty(cup::UnionSet)
Check whether the union of two sets is empty.
Input
cup
– union of two sets
Output
true
iff the union is empty.
LazySets.isbounded
— Methodisbounded(cup::UnionSet)
Determine whether the union of two sets is bounded.
Input
cup
– union of two sets
Output
true
iff the union is bounded.
LazySets.vertices_list
— Methodvertices_list(cup::UnionSet; apply_convex_hull::Bool=false, backend=nothing)
Return the list of vertices of the union of two sets.
Input
cup
– union of two setsapply_convex_hull
– (optional, default:false
) iftrue
, post-process the vertices using a convex-hull algorithmbackend
– (optional, default:nothing
) backend for computing the convex hull (see argumentapply_convex_hull
)
Output
The list of vertices, possibly reduced to the list of vertices of the convex hull.
Inherited from LazySet
:
$n$-ary set union (UnionSetArray)
LazySets.UnionSetArray
— TypeUnionSetArray{N, S<:LazySet{N}}
Type that represents the set union of a finite number of sets.
Fields
array
– array of sets
Notes
The union of convex sets is typically not convex.
LazySets.dim
— Methoddim(cup::UnionSetArray)
Return the dimension of the set union of a finite number of sets.
Input
cup
– union of a finite number of sets
Output
The ambient dimension of the union of a finite number of sets.
LazySets.array
— Methodarray(cup::UnionSetArray)
Return the array of the union of a finite number of sets.
Input
cup
– union of a finite number of sets
Output
The array that holds the sets.
LazySets.σ
— Methodσ(d::AbstractVector, cup::UnionSetArray; [algorithm]="support_vector")
Return the support vector of the union of a finite number of sets in a given direction.
Input
d
– directioncup
– union of a finite number of setsalgorithm
– (optional, default: "supportvector"): the algorithm to compute the support vector; if "supportvector", use the support vector of each argument; if "support_function" use the support function of each argument and evaluate the support vector of only one of them
Output
The support vector in the given direction.
Algorithm
The support vector of the union of a finite number of sets $X₁, X₂, ...$ can be obtained as the vector that maximizes the support function, i.e., it is sufficient to find the $\argmax([ρ(d, X₂), ρ(d, X₂), ...])$ and evaluate its support vector.
The default implementation, with option algorithm="support_vector"
, computes the support vector of all $X₁, X₂, ...$ and then compares the support function using a dot product.
If the support function can be computed more efficiently, the alternative implementation algorithm="support_function"
can be used, which evaluates the support function of each set directly and then calls only the support vector of one of the $Xᵢ$.
LazySets.ρ
— Methodρ(d::AbstractVector, cup::UnionSetArray)
Return the support function of the union of a finite number of sets in a given direction.
Input
d
– directioncup
– union of a finite number of sets
Output
The support function in the given direction.
Algorithm
The support function of the union of a finite number of sets $X₁, X₂, ...$ can be obtained as the maximum of $ρ(d, X₂), ρ(d, X₂), ...$.
LazySets.an_element
— Methodan_element(cup::UnionSetArray)
Return some element of the union of a finite number of sets.
Input
cup
– union of a finite number of sets
Output
An element in the union of a finite number of sets.
Algorithm
We use an_element
on the first wrapped set.
Base.:∈
— Method∈(x::AbstractVector, cup::UnionSetArray)
Check whether a given point is contained in the union of a finite number of sets.
Input
x
– point/vectorcup
– union of a finite number of sets
Output
true
iff $x ∈ cup$.
Base.isempty
— Methodisempty(cup::UnionSetArray)
Check whether the union of a finite number of sets is empty.
Input
cup
– union of a finite number of sets
Output
true
iff the union is empty.
LazySets.isbounded
— Methodisbounded(cup::UnionSetArray)
Determine whether the union of a finite number of sets is bounded.
Input
cup
– union of a finite number of sets
Output
true
iff the union is bounded.
LazySets.vertices_list
— Methodvertices_list(cup::UnionSetArray; apply_convex_hull::Bool=false,
backend=nothing)
Return the list of vertices of the union of a finite number of sets.
Input
cup
– union of a finite number of setsapply_convex_hull
– (optional, default:false
) iftrue
, post-process the vertices using a convex-hull algorithmbackend
– (optional, default:nothing
) backend for computing the convex hull (see argumentapply_convex_hull
)
Output
The list of vertices, possibly reduced to the list of vertices of the convex hull.
Inherited from LazySet
: