@@ -14,19 +14,17 @@ Base.@kwdef struct LinearDynamics{TA,TB,TSB,TCB} <: AbstractDynamics
1414 control_bounds:: TCB = (; lb = fill (- Inf , size (first (B), 2 )), ub = fill (Inf , size (first (B), 2 )))
1515end
1616
17- function LinearDynamics (dynamics:: ProductDynamics{<:AbstractVector{<:LinearDynamics}} )
18- (; A, B) = _block_diagonalize (
19- temporal_structure_trait (dynamics),
20- dynamics. subsystems,
21- horizon (dynamics),
22- )
17+ function LinearDynamics (
18+ dynamics:: ProductDynamics{<:AbstractVector{<:LinearDynamics{<:Fill,<:Fill}}} ,
19+ )
20+ (; A, B) = _block_diagonalize (dynamics. subsystems, horizon (dynamics))
2321 sb = state_bounds (dynamics)
2422 cb = control_bounds (dynamics)
2523
2624 LinearDynamics (; A, B, state_bounds = sb, control_bounds = cb)
2725end
2826
29- function _block_diagonalize (:: TimeInvariant , linear_subsystems, horizon)
27+ function _block_diagonalize (linear_subsystems, horizon)
3028 A = Fill (blockdiag ([sparse (sub. A. value) for sub in linear_subsystems]. .. ), horizon)
3129
3230 B = let
@@ -39,14 +37,6 @@ function _block_diagonalize(::TimeInvariant, linear_subsystems, horizon)
3937 (; A, B)
4038end
4139
42- function TrajectoryGamesBase. temporal_structure_trait (:: LinearDynamics{<:Fill,<:Fill} )
43- TimeInvariant ()
44- end
45-
46- function TrajectoryGamesBase. temporal_structure_trait (:: LinearDynamics )
47- TimeVarying ()
48- end
49-
5040function time_invariant_linear_dynamics (; A, B, horizon = ∞, bounds... )
5141 LinearDynamics (; A = Fill (A, horizon), B = Fill (B, horizon), bounds... )
5242end
@@ -55,9 +45,7 @@ function (sys::LinearDynamics)(x, u, t::Int, ::Any = nothing)
5545 sys. A[t] * x + sys. B[t] * u
5646end
5747
58- function (sys:: LinearDynamics )(x, u, :: Nothing = nothing , :: Any = nothing )
59- temporal_structure_trait (sys) isa TimeInvariant ||
60- error (" Only time-invariant systems can ommit the `t` argument." )
48+ function (sys:: LinearDynamics{<:Fill,<:Fill} )(x, u, :: Nothing = nothing , :: Any = nothing )
6149 sys. A. value * x + sys. B. value * u
6250end
6351
0 commit comments