Linear Time Invariant Systems#
A Linear Time Invariant system has a representation
System#
The algorithmic interconnection is
- class system.lti.opt_system#
Bases:
system.generic.opt_system_interfaceOPT_SYSTEM interconnection of network and operators by default is LTI (linear time invariant)
- Constructor Summary
- opt_system(op, P, K, bind, tracking)#
OPT_SYSTEM Constructor
- Method Summary
- build_plant(iqc_data, rho)#
BUILD_PLANT: form the plant to be used for analysis or synthesis
- Parameters:
iqc_data – from manager.iqc_op_all, information about the operator iqc descriptions
rho – exponential convergence rate (default 1)
- Returns:
alg_psi – plant with filters (psi)
alg_loop – plant without filters, but after loop transformation (should be stable)
iqc_op – iqcs for the robust uncertainties
- get_K(param)#
GET_K get the controller K
- get_P(param)#
GET_P get the network P
- nxi()#
nxi: number of states in controller
- nxn()#
nxn: number of states in network
Regulator#
An open LTI system with disturbance \(d\) and regulated error \(e\) is
The regulator equations for this system are to find \((\Pi, \Gamma, \Phi)\) satisfying
If these regulator equations fail, then there does not exist a well-posed and convergent optimization algorithm for this network.
- class system.lti.regulator_lti#
Bases:
system.generic.regulator_interfaceREGULATOR_LTI Regulator for LTI systems
- Constructor Summary
- regulator_lti(sys)#
REGULATOR_LTI Constructor
- Method Summary
- connect_model(plant, rho)#
connect the plant to the model (nominal regulator equation) and discount by rho
- Parameters:
plant – original system
rho – exponential weighting
- Return:
plant_model – plant and model together
- get_model(vars_reg)#
GET_MODEL fetch the internal model (nominal)
- Parameters:
vars_reg – variables of the problem (regulator)
- Return:
model – the full-order internal model
- sys_regulated_aug()#
SYS_REGULATED_AUG augment the system by the regulated disturbance. ONLY used for reduced-order control
- Return:
alg_aug – augmented plant with output channels [z, zp, e, y] and input channels [w, wp, d, u]
LMI Analysis#
- class system.lti.lmi_analysis_lti#
Bases:
system.generic.lmi_analysis_interfaceLMI_ANALYSIS_LTI analysis LMIs for algorithmic interconnections involving linear-time-invariant (LTI) networks and controllers
- Constructor Summary
- lmi_analysis_lti(sys, config)#
LMI_ANALYSIS_LTI Constructor
- Method Summary
- create_vars_storage(cons, alg_psi, name)#
create_vars_storage create variables for the dissipation constraints
- Parameters:
cons – accumulated constraints
alg_psi – the filtered algorithmic interconnection
name – a name for the variable
- Returns:
vars_diss – variables of the problem in the dissipation constraints
cons – accumulated constraints
- h2(vars, cons, diss)#
H2: certificate of stochastic performance
- Parameters:
vars – variables of the problem
cons – accumulated constraints
diss (
diss_data) – structure describing the dissipation constraint
- Returns:
cons – accumulated constraints
objective – term to be minimized
con_M – PSD blocks for the dynamics constraint
- p2p(vars, cons, diss)#
p2p: certificate of peak to peak induced norm :param vars: variables of the problem :param cons: accumulated constraints :param diss: structure describing the dissipation constraint :type diss: diss_data
- Returns:
cons – accumulated constraints
objective – term to be minimized
con_M – PSD blocks for the dynamics constraint
- process_recovery(sol, lmi_out, alg_psi, diss)#
recover the controller :param sol: solution structure :param lmi_out: output from solver :param alg_psi: the filtered algorithmic interconnection :param diss: structure describing the dissipation constraint :type diss: diss_data
- Returns:
sol – solution structure
- quad(vars, cons, diss)#
QUAD: certificate of quadratic performance
- Parameters:
vars – variables of the problem
cons – accumulated constraints
diss (
diss_data) – structure describing the dissipation constraint
- Returns:
cons – accumulated constraints
objective – term to be minimized
con_M – PSD blocks for the dynamics constraint
LMI Synthesis#
- class system.lti.lmi_synthesis_lti#
Bases:
system.generic.lmi_synthesis_interfaceLMI_SYNTHESIS_LTI synthesis LMIs for algorithmic interconnections involving linear-time-invariant (LTI) networks and controllers
- Constructor Summary
- lmi_synthesis_lti(sys, config)#
LMI_SYNTHESIS_LTI Constructor
- Method Summary
- augment_vars(vars, diss, con_M)#
AUGMENT_VARS add new variables/terms for recovery (useful for matrix elimination)
- check_lower_triangular()#
CHECK_LOWER_TRIANGULAR is the D matrix constrained to be block-lower-triangular? This must be true to use matrix elimination
- Returns:
is_tri (bool) – verdict on lower triangularity
- create_vars_storage(cons, alg_psi, name)#
create_vars_storage create variables for the dissipation constraints
- Parameters:
cons – accumulated constraints
alg_psi – the filtered algorithmic interconnection
name – a name for the variable
- Returns:
vars_diss – variables of the problem in the dissipation constraints
cons – accumulated constraints
- elimination()#
ELIMINATION is the matrix elimination lemma used?
- get_GY_dim(n, ns)#
dimension of the GY term :param n: number of states :param ns: number of exogenous disturbances
- Returns:
ys – size of GY matrix
- get_storage(vars_diss, vars_reg)#
GET_STORAGE get the storage function matrix G
- Parameters:
vars_diss – variables of the problem in the dissipation constraints
vars_reg – variables for regulator equation
- Returns:
G – the closed-loop storage matrix (warped)
- h2(vars, cons, diss)#
H2: certificate of stochastic performance
- Parameters:
vars – variables of the problem
cons – accumulated constraints
diss (
diss_data) – structure describing the dissipation constraint
- Returns:
cons – accumulated constraints
objective – term to be minimized
con_M – PSD blocks for the dynamics constraint
- p2p(vars, cons, diss)#
- p2p: certificate of finite-horizon peak-to-peak norm bounds
when starting at a zero (steady state) initial condition, not transient performance.
- Parameters:
cons – accumulated constraints
alg_psi – the filtered algorithmic interconnection
name – a name for the variable
- Returns:
vars_diss – variables of the problem in the dissipation constraints
cons – accumulated constraints
Warning
not yet stable. do not use yet.
- quad(vars, cons, diss)#
QUAD: certificate of infinite-horizon quadratic performance
- Parameters:
vars – variables of the problem
cons – accumulated constraints
diss (
diss_data) – structure describing the dissipation constraint
- Returns:
cons – accumulated constraints
objective – term to be minimized
con_M – PSD blocks for the dynamics constraint
- recover_K_from_elim(vars_rec)#
recover the eliminated matrices in the controller
- Parameters:
vars_rec – recovered variables from solver
- Returns:
Ak, Bk, Ck, Dk – controller matrices
LMI Synthesis, Reduced-Order Control#
LTI systems allow for reduced-order control synthesis
- class system.lti.lmi_synthesis_lti_reduced_order#
Bases:
system.lti.lmi_synthesis_ltiLMI_SYNTHESIS_LTI_REDUCED_ORDER reduced-order control synthesis LMIs for algorithmic interconnections involving linear-time-invariant (LTI) networks and controllers
- Constructor Summary
- lmi_synthesis_lti_reduced_order(sys, config)#
LMI_SYNTHESIS_LTI_REDUCED_ORDER Constructor
- Method Summary
- Pibar(vars_diss, vars_reg, invPi)#
similarity transformation for optimization over Pi used in regulator (reduced-order)
- Parameters:
vars_diss – variables of the problem in the dissipation constraints
vars_reg – variables for regulator equation
inv_Pi (
bool) – take inverse (true) or not (false)
- Returns:
Pb – the portion of Pi
- Pihat(vars_diss, vars_reg, invPi)#
similarity transformation for reduced-order control used in regulator (reduced-order)
- Parameters:
vars_diss – variables of the problem in the dissipation constraints
vars_reg – variables for regulator equation
inv_Pi (
bool) – take inverse (true) or not (false)
- Returns:
Pb – the portion of Pi
- con_spread(cons, vars)#
CON_SPREAD increase numerical conditioning by separating the primal and dual blocks. modified for reduced order control.
- Parameters:
cons – accumulated constraints
vars – variables of the problem
- Returns:
cons – accumulated constraints
- connect_model(diss, rho)#
CONNECT_MODEL connect the plant to the internal model :param diss: information about dissipation relation :type diss: diss_data :param rho: discount rate
- Returns:
P_model – augmented generalized plant with internal model attached
- create_vars(vars, cons, alg_psi, specs)#
CREATE_VARS create the variables for the problem :param vars: variables of the problem :param cons: accumulated constraints :param diss: structure describing the dissipation constraint :type diss: diss_data :param alg_psi: the filtered algorithmic interconnection :param specs: performance specifications
- Returns:
vars – variables of the problem
cons – accumulated constraints
- create_vars_controller(cons, alg_psi, name, D_mask)#
CREATE_VARS_CONTROLLER create the nonlinearly-transformed controller matrices :param cons: accumulated constraints :param alg_psi: the filtered algorithmic interconnection :param name: a name for the variable :param D_mask: sparsity pattern for D of the controller
- Returns:
vars_K – controller variables [Ak, Bk, Ck, Dk], or some subset if elimination is used.
cons – accumulated constraints
- create_vars_regulator()#
CREATE_VARS_REGULATOR parameterize the solutions to the regulator equations use this as a variable in reduced-order control :Returns: vars_reg – variables of the problem (regulator)
- get_K_mask(nxi)#
K_mask: controller sparsity pattern :param nxi: number of controller states
- Return:
K_mask – pattern of the controller
- process_recovery(sol, lmi_out, alg_psi, diss)#
recover the controller :param sol: solution structure :param lmi_out: output from solver :param alg_psi: the filtered algorithmic interconnection :param diss: structure describing the dissipation constraint :type diss: diss_data
- Returns:
sol – solution structure
- recover_K_from_elim(vars_rec)#
recover the eliminated matrices in the controller
- Parameters:
vars_rec – recovered variables from solver
- Returns:
Ak, Bk, Ck, Dk – controller matrices
- recover_subcontroller(alg_psi, P_aug, sol)#
RECOVER_SUBCONTROLLER recover the subcontroller of the current mode/control :param alg_psi: the filtered algorithmic interconnection :param P_aug: the transformed augmented generalized plant before IQC :param sol: solution structure
- Returns:
sol – solution structure
K_sub – the subcontroller
- recover_subcontroller_warp(P_trans, vars_rec, rho)#
RECOVER_SUBCONTROLLER_WARP recover the nonlinearly warped controller dynamics and indexers :param alg_psi: the filtered algorithmic interconnection :param P_trans: the transformed generalized plant before IQC :param sol: solution structure :param rho: discount rate
- Output:
K_nofeed: subcontroller without direct feedthrough Gcl: closed-loop storage matrix (original) Ycl: similarity transformation/nonlinear warping