Subdifferentials

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_interface

OP_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_sml

OP_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_interface

OP_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_interface

OP_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)