SystemLevelControl.DualGeneralizedPlantType
DualGeneralizedPlant{T,Ts} <: AbstractGeneralizedPlant{T<:Number,Ts<:AbstractFeedbackStructure}

A type representing an adjoint (or dual) state-space

\[P^* = \left[\begin{array}{c | c c} A^* & C_1^* & C_2^* \\ \hline B_1^* & D_{11}^* & D_{21}^* \\ B_2^* & D_{12}^* & D_{22}^* \end{array}\right]\]

Note

Avoid directly constructing objects of this type. Instead, create a P::GeneralizedPlant and use adjoint(P) function or P'.

source
SystemLevelControl.GeneralizedPlantType
GeneralizedPlant{T,Ts} <: AbstractGeneralizedPlant{T<:Number,Ts<:AbstractFeedbackStructure}

A type representing a generalized state-space model

\[P = \left[\begin{array}{c | c c} A & B_1 & B_2 \\ \hline C_1 & D_{11} & D_{12} \\ C_2 & D_{21} & D_{22} \end{array}\right]\]

See the function Plant for a user-friendly constructor of generalized plants. For detailed instructions check the documentation on Plants and controllers.

Fields

  • A::SparseMatrixCSC{T,Int}
  • B₁::SparseMatrixCSC{T,Int}
  • B₂::SparseMatrixCSC{T,Int}
  • C₁::SparseMatrixCSC{T,Int}
  • D₁₁::SparseMatrixCSC{T,Int}
  • D₁₂::SparseMatrixCSC{T,Int}
  • C₂::SparseMatrixCSC{T,Int}
  • D₂₁::SparseMatrixCSC{T,Int}
  • D₂₂::SparseMatrixCSC{T,Int}
source
SystemLevelControl.GeneralizedSubPlantType
GeneralizedSubPlant{T,Ts} <: AbstractGeneralizedPlant{T<:Number,Ts<:AbstractFeedbackStructure}

A type representing a partition of a state-space

\[\tilde{P} = \left[\begin{array}{c | c c} [A]_{I_1,J_1} & [B_1]_{I_1,J_2} & [B_2]_{I_1,J_3} \\ \hline [C_1]_{I_2,J_1} & [D_{11}]_{I_2,J_2} & [D_{12}]_{I_2,J_3} \\ [C_2]_{I_3,J_1} & [D_{21}]_{I_3,J_2} & [D_{22}]_{I_3,J_3} \end{array}\right]\]

where $I = (I_1,I_2,I_3)$ and $J=(J_1,J_2,J_3)$ are the desired partition index sets.

Note

Avoid directly constructing objects of this type. Instead, create a P::GeneralizedPlant and use view(P, I, J) with tuples I = (I₁,I₂,I₃) and J = (J₁,J₂,J₃) describing the desired paritioning. To materialize the subsystem into a new GeneralizedPlant, use copy.

source
SystemLevelControl.PlantMethod
P = Plant(A, B₁, B₂[, C₁, D₁₁, D₁₁, C₂, D₂₁, D₂₂])

Creates a generalized plant model P::GeneralizedPlant{T,Ts} with matrices of type T<:Number and feedback structure Ts<:AbstractFeedback.

If the matrices C₂, D₂₁, and D₂₂ are unspecified, the function automatically sets C₂ = I and returns a state-feedback plant (Ts<:StateFeedback). If the matrices C₂, D₁₁, and D₁₂ are unspecified, the function assumes the standard LQR-type reference signal $z^Tz = x^Tx + u^Tu$ with C₁ = [I; 0] and D₁₂ = [0; I].

In case D₁₁ = 0 and/or D₂₂ = 0, a matrix of appropriate dimensions is created. Similarly, if C₂ = I then the output matrix of appropriate dimension is created.

Examples

julia> A = randn(100,100);  B₁ = randn(100,100);  B₂ = randn(100,50);

julia> C₁ = randn(150,100);  D₁₂ = randn(150,50);

julia> D₂₁ = randn(100,100);

julia> P = Plant(A, B₁, B₂, C₁, 0, D₁₂, I, D₂₁, 0)
350×250 GeneralizedPlant{Float64, OutputFeedback} w/ 100 states, 100 outputs, 50 controls.

julia> P = Plant(A, B₁, B₂)
350×250 GeneralizedPlant{Float64, StateFeedback} w/ 100 states, 100 outputs, 50 controls.

P = Plant(Σ, DIMS)

Creates a generalized plant model P::GeneralizedPlant{T,Ts} based on a single matrix representation Σ::AbstractMatrix to be partitioned according to dimensions DIMS = [Nx, Nz, Ny, Nw, Nu].

If length(DIMS) = 4, then a state-feedback plant is constructed by slicing Σ with DIMS = [Nx, Nz, Nw, Nu].

Examples

julia> A = randn(100,100);  B₁ = randn(100,100);  B₂ = randn(100,50);

julia> C₁ = randn(150,100);  D₁₂ = randn(150,50);

julia> D₂₁ = randn(100,100);

julia> P = Plant([A B₁ B₂; C₁ zeros(150,100) D₁₂; I D₂₁ zeros(100,50)], [100, 150, 100, 100, 50])
350×250 GeneralizedPlant{Float64, OutputFeedback} w/ 100 states, 100 outputs, 50 controls.

julia> P = Plant([A B₁ B₂; C₁ zeros(150,100) D₁₂], [100, 150, 100, 50])
350×250 GeneralizedPlant{Float64, StateFeedback} w/ 100 states, 100 outputs, 50 controls.
source