Home

PolynomialZonotopes.jl

PolynomialZonotopes is a Julia package that extends LazySets.jl to the non-convex sets representation given by polynomial zonotopes. This library defines the PolynomialZonotope type and methods to manipulate them; see the manual sections Types and Methods in this documentation for further details.

Features

Definition

Polynomial zonotopes were introduced by M. Althoff in Reachability analysis of nonlinear systems using conservative polynomialization and non-convex sets, Hybrid Systems: Computation and Control, 2013, pp. 173–182. They have been applied as a non-convex set representation in the reachability problem if nonlinear ODEs.

Mathematically, a polynomial zonotope is the tuple $(c, E, F, G)$ that defines the set:

\[\mathcal{PZ} = \left\{ c + ∑_{j=1}^p β_j f^{([1], j)} + ∑_{j=1}^p ∑_{k=j}^p β_j β_k f^{([2], j, k)} + \\ \qquad + … + ∑_{j=1}^p ∑_{k=j}^p ⋯ ∑_{m=ℓ}^p β_j β_k ⋯ β_m f^{([η], j, k, …, m)} + \\ + ∑_{i=1}^q γ_i g^{(i)}, \qquad β_i, γ_i ∈ [-1, 1] \right\},\]

where the number of factors in the final product, $β_j β_k ⋯ β_m$, corresponds to the polynomial order $η$, and:

\[E^{[i]} = [f^{([i], 1, 1, …, 1)} ⋯ f^{([i], p, p, …, p)}], \qquad i = 1,…, η\]

called the matrix of multi-indexed generators with equal indices, where each $f^{([i], k_1, k_2, …, k_i)}$ is an $n$-vector,

\[F^{[i]} = [f^{([i], 1, 1, …, 1, 2)} f^{([i], 1, 1, …, 1, 3)} ⋯ f^{([i], 1, 1, …, 1, p)} \\ f^{([i], 1, 1, …, 2, 2)} f^{([i], 1, 1, …, 2, 3)} ⋯ f^{([i], 1, 1, …, 2, p)} \\ f^{([i], 1, 1, …, 3, 3)} ⋯], \qquad i = 1,…, η\]

called the matrix of multi-indexed generators with unequal indices (or, more accurately, not-all-equal indices), where each $f^{([i], k_1, k_2, …, k_i)}$ is an $n$-vector,

\[G^{[i]} = g^{(i)}, \qquad i = 1,…, q\]

called the matrix of single-indexed generators, where each $g^{(i)}$ is an $n$-vector.

Library Outline