MinimaxAdaptiveControl.MACLMIs
MinimaxAdaptiveControl.compute
MinimaxAdaptiveControl.getPeriodicSelectionRule
MinimaxAdaptiveControl.getValueFunction
MinimaxAdaptiveControl.update!
MinimaxAdaptiveControl.MACLMIs
— FunctionMACLMIs(A::AbstractMatrix{T}, B::AbstractMatrix{T}, G::AbstractMatrix{T}, Ks::AbstractVector{M},
Hs::AbstractVector{M}, period::Int, model::Model) where M<:AbstractMatrix{T} where T<:Real
Solve the Linear Matrix Inequalities (LMIs) associated with the periodic dissipation inequality for the given system matrices and optimization model.
Arguments
A::AbstractMatrix{T}
: State transition matrix of the system.B::AbstractMatrix{T}
: Control input matrix of the system.G::AbstractMatrix{T}
: Disturbance input matrix of the system.Ks::AbstractVector{M}
: Vector of feedback-gain matrices.Hs::AbstractVector{M}
: Vector of symmetric cost matrices.period::Int
: Control period.model::Model
: JuMP optimization optimization model.
Returns
Ps0::Dict{NTuple{2, Int}, Array{VariableRef, 2}}
: Dictionary of positive semi-definite matrices at time 0.Psplus::Dict{NTuple{4, Int}, Array{VariableRef, 2}}
: Dictionary of positive semi-definite matrices at future time steps.
MinimaxAdaptiveControl.compute
— Methodcompute(controller::MAController{T}) where T<:Real
Compute the control input for the multi-agent controller.
Arguments
controller::MAController{T}
: The multi-agent controller.
Returns
AbstractVector{T}
: The computed control input vector.
Description
This function computes the control input for the MAController
by selecting the appropriate control law from the Ks
collection based on the current internal state z
and the reward signals rs
. The selection is made using the selectionRule
of the controller.
MinimaxAdaptiveControl.getPeriodicSelectionRule
— FunctiongetPeriodicSelectionRule(period::Int)
Create a selection rule for periodic control.
Arguments
period::Int
: Control period.
Returns
selectionRule::Function
: A function that selects the index of the control input based on the period and reward signals.
Example
selectionRule = getPeriodicSelectionRule(4)
index = selectionRule(z, rs)
MinimaxAdaptiveControl.getValueFunction
— FunctiongetValueFunction(mac::MAController{T}, Ps0::Dict{Tuple{Int, Int}, Matrix{VariableRef}}, N::Int) where T<:Real
Create a ValueFunction for the given multi-agent controller and positive semi-definite matrices.
Arguments
mac::MAController{T}
: Minimax adaptive controller.Ps0::Dict{Tuple{Int, Int}, Matrix{VariableRef}}
: Dictionary of positive semi-definite matrices associated with the first time step in each period.N::Int
: Number of models.
Returns
ValueFunction
: A value function object for the multi-agent controller.
Example
vfun = getValueFunction(mac, Ps0, N)
MinimaxAdaptiveControl.update!
— Methodupdate!(controller::MAController{T}, output::AbstractVector{T}, control::AbstractVector{T}) where T<:Real
Update the multi-agent controller with new output and control data.
Arguments
controller::MAController{T}
: The multi-agent controller to be updated.output::AbstractVector{T}
: The new output measurement vector.control::AbstractVector{T}
: The new control input vector.
Description
This function updates the internal state z
and the reward signals rs
of the MAController
based on the new output and control input data. The reward signals are updated for each matrix H
in the controller's Hs
collection. The internal state z
is updated using the estimated system matrices Ahat
, Bhat
, and Ghat
.