|
| 1 | +import IntervalArithmetic as IA |
| 2 | + |
| 3 | +""" |
| 4 | + HLBS25{N, AM, RM, R} <: AbstractContinuousPost |
| 5 | +
|
| 6 | +Implementation of the reachability algorithm for linear systems with parametric |
| 7 | +uncertainty using matrix zonotopes by [HuangLBS25](@citet). |
| 8 | +
|
| 9 | +### Fields |
| 10 | +
|
| 11 | +- `δ` -- step-size of the discretization |
| 12 | +- `approx_model` -- (optional, default: `CorrectionHullMatrixZonotope`) |
| 13 | + model for the discretization of the initial value problem |
| 14 | +- `taylor_order` -- (optional, default: `5`) order of the Taylor series |
| 15 | + expansion of the matrix exponential for each step |
| 16 | +- `max_order` -- (optional, default: `5`) maximum order of the reach set |
| 17 | +- `reduction_method` -- (optional, default: `LazySets.GIR05()` zonotope |
| 18 | + order reduction method used |
| 19 | +- `recursive` -- (optional, default: `false`) if `true`, compute the |
| 20 | + Taylor series expansion of the matrix zonotope |
| 21 | + exponential map recursively |
| 22 | + |
| 23 | +### Notes |
| 24 | +
|
| 25 | +The `recursive` option is used to compute the Taylor expansion of the matrix zonotope exponential map. |
| 26 | +If `recursive == true`, each term of the Taylor expansion is computed recursively (e.g., ``A^2 P = A (A P)``). |
| 27 | +
|
| 28 | +If `recursive == false`, the Taylor expansion is computed by overapproximating the matrix zonotope exponential |
| 29 | +map, producing a single matrix that represents the exponential. |
| 30 | +""" |
| 31 | +struct HLBS25{N,AM,RM,R} <: AbstractContinuousPost |
| 32 | + δ::N |
| 33 | + approx_model::AM |
| 34 | + taylor_order::Int |
| 35 | + max_order::Int |
| 36 | + reduction_method::RM |
| 37 | + recursive::R |
| 38 | +end |
| 39 | + |
| 40 | +function HLBS25(; δ::N, |
| 41 | + approx_model::AM=CorrectionHullMatrixZonotope(), |
| 42 | + taylor_order::Int=5, |
| 43 | + max_order::Int=5, |
| 44 | + reduction_method::RM=LazySets.GIR05(), |
| 45 | + recursive::Bool=false) where {N,AM,RM} |
| 46 | + return HLBS25{N,AM,RM,Val{recursive}}(δ, approx_model, taylor_order, max_order, |
| 47 | + reduction_method, Val(recursive)) |
| 48 | +end |
| 49 | + |
| 50 | +step_size(alg::HLBS25) = alg.δ |
| 51 | +numtype(::HLBS25{N}) where {N} = N |
| 52 | + |
| 53 | +function rsetrep(::HLBS25{N}) where {N} |
| 54 | + return ReachSet{N,SparsePolynomialZonotope{N,Matrix{N},Matrix{N},Matrix{Int},Vector{Int}}} |
| 55 | +end |
| 56 | + |
| 57 | +include("post.jl") |
| 58 | +include("reach_homog.jl") |
0 commit comments