Subdifferentials#
These classes describe valid relations satisfied by subdifferentials of functions in \(S_{m, L}\).
The non-causal implementations are less conservative, but are more computationally intensive as compared to the causal implementation.
The order supplied to Analysis is a single integer for causal (number of lags), and a pair of integers (number of primal lags, number of dual lags) for non-causal. Causal is equivalent a noncausal implementation with order = (number of lags, 0).
Non-causal#
- class operator.op_sml#
Bases:
operator.op_sml_interfaceOP_SML An operator which is the subdifferential of a function in SmL:
- Constructor Summary
- op_sml(m, L, c)#
OP_SML Constructor
- Method Summary
- build_X(vars, order, reps)#
BUILD_X create the terminal cost X
- Parameters:
vars – variables of the problem
order – order of the IQC [number of lags]
reps – number of repetitions of the operator (from the bind)
- Returns:
X_out – the terminal cost
- build_psi(vars, order, reps)#
BUILD_PSI construct the zames-falb filter for the SML function
- Parameters:
vars – variables of the problem
order – order of the IQC [number of lags]
reps – number of repetitions of the operator (from the bind)
- Returns:
psi1 – filter on output (causal)
psi2 – filter on input (noncausal components)
- build_psi_reduced(vars, order, reps)#
BUILD_PSI_REDUCED construct the filter for the SML function but without the identity term (second channel)
- Parameters:
vars – variables of the problem
order – order of the IQC [number of lags]
reps – number of repetitions of the operator (from the bind)
- Returns:
psi1 – filter on output (causal)
psi2 – filter on input (noncausal components)
- create_iqc_identity(reps)#
CREATE_IQC_IDENTITY form a valid IQC satisfied by the sml operator. This is used as a warm start in synthesis.
- Parameters:
reps – number of repetitions of the operator (from the bind)
- Returns:
iqc (iqc_loop_split) – a valid IQC with no dynamics
- create_vars(order, reps)#
CREATE_VARS form the variables in an IQC
- Parameters:
order – order of the IQC [number of lags]
reps – number of repetitions of the operator (from the bind)
- Returns:
vars – variables of the problem
- csum_psi(vars)#
a normalization term for the coefficients, reducing degrees of freedom in the Analysis problem
- Parameters:
vars – variables of the problem
- Returns:
cs – the sum of nonnegative variables
- dhd_lift(order, vars, iqc)#
- DHD_LIFT get the lifted system for the doubly hyperdominant
expression in Zames-Falb guarantees
- Parameters:
order – order of the IQC [number of lags]
vars – variables of the problem
iqc – the iqc under consideration
- Returns:
P – matrix that should be DHD
- filter_constraints(cons, order, vars, rho_sched, iqc)#
FILTER_CONSTRAINTS constraints on the filter coefficients Zames-Falb DHD constraints with terminal cost
- Parameters:
cons – accumulated constraints
vars – variables of the problem
rho_sched – which times should be discounted
iqc_out – the IQC under consideration
- Returns:
cons – accumulated constraint
The set of p.c.c. functions is an instance of the class \(\mathcal{S}_{0, \infty}\).
- class operator.op_pcc#
Bases:
operator.op_smlOP_PCC An operator which is the subdifferential of a proper, closed, convex function.
- Constructor Summary
- op_pcc(c)#
OP_PCC Constructor for op_sml(0, inf, c)
- Parameters:
c – coordinate dimension
Causal#
- class operator.op_sml_causal#
Bases:
operator.op_sml_interfaceOP_SML_CAUSAL An operator which is the subdifferential of a function in SmL:
- Constructor Summary
- op_sml_causal(m, L, c)#
OP_SML_Causal constructor
- Method Summary
- build_X(vars, order, reps)#
BUILD_X create the terminal cost X
- Parameters:
vars – variables of the problem
order – order of the IQC [number of lags]
reps – number of repetitions of the operator (from the bind)
- Returns:
X_out – the terminal cost (is 0 for causal)
- build_psi(vars, order, reps)#
BUILD_PSI construct the zames-falb filter for the SML function
- Parameters:
vars – variables of the problem
order – order of the IQC [number of lags]
reps – number of repetitions of the operator (from the bind)
- Returns:
psi1 – filter on output (causal)
psi2 – filter on input (noncausal components)
- create_iqc(cons, order, reps)#
CREATE_IQC_IDENTITY form a valid IQC satisfied by the sml operator. This is used as a warm start in synthesis.
- Parameters:
reps – number of repetitions of the operator (from the bind)
- Returns:
iqc (iqc_loop_split) – a valid IQC with no dynamics
- create_vars(order, reps)#
CREATE_VARS form the variables in an IQC
- Parameters:
order – order of the IQC [number of lags]
reps – number of repetitions of the operator (from the bind)
- Returns:
vars – variables of the problem
- filter_constraints(cons, order, vars, rho_sched, iqc)#
FILTER_CONSTRAINTS constraints on the filter coefficients Zames-Falb DHD constraints with terminal cost
- Parameters:
cons – accumulated constraints
vars – variables of the problem
rho_sched – which times should be discounted
iqc_out – the IQC under consideration
- Returns:
cons – accumulated constraints
Common Routines#
- class operator.op_sml_interface#
Bases:
operator.operator_interfaceOP_SML An operator which is the subdifferential of a function in SmL:
- Constructor Summary
- op_sml_interface(m, L, c)#
OP_SML_INTERFACE Constructor
- Parameters:
m – lower bound parameter
L – upper bound parameter
c – dimension of coordinate lift
- Property Summary
- ERGODIC#
function value penalties?
- L#
upper bound parameter
- L_top#
should the L term be filtered (Lz - w)?
- m#
lower bound parameter
- Method Summary
- build_loop(reps)#
BUILD_LOOP construct the signal transformation matrix
- Parameters:
reps – number of repetitions of the operator (from the bind)
- Returns:
loop_out – signal transformation matrix for the operator
- create_iqc_identity(reps)#
CREATE_IQC_IDENTITY form a valid IQC satisfied by the general operator. This is used as a warm start in synthesis.
- Parameters:
reps – number of repetitions of the operator (from the bind)
- Returns:
iqc (iqc_loop_split) – a valid IQC with no dynamics
- ergodic_supply(reps)#
ERGODIC_SUPPLY supply rate for function value decrease ergodic convergence
- Parameters:
reps – number of repetitions of the operator (from the bind)
- Returns:
M_erg – quadratic supply for function values
- get_same(reps)#
GET_SAME explicit matrix in LFT
- Returns:
sm – m==L? If so, return the explicit matrix mI.
- same()#
SAME is there any uncertainty in this oracle?
- Returns:
sm (bool) – m=L?.
- sigma()#
SIGMA used to define all IQCs
- Return:
sig – 1/(L-m)