Manager#

The manager class is the highest level class in the opt-syn project. The Analysis and Synthesis problems are posed using the opt_analysis and opt_synthesis classes, respectively. The manager classes are invoked in the Problem Formulation page, and their usage is explained in the Solve page.

Both the analysis and synthesis routines inherit from opt_manager_interface, containing the common methods.

The core user-facing methods are solve_single(), bisect(), and (for Synthesis) alternate().

Analysis#

class manager.opt_analysis#

Bases: manager.opt_manager_interface

OPT_ANALYSIS analysis of optimization algorithms

iterative procedure to find a point \(\beta^*\) satisfying the fixed-point equation \(0 \in \sum_{i=1}^s F_i(\beta^*)\).

Constructor Summary
opt_analysis(sys, config)#

OPT_ANALYSIS Constructor for analysis

Parameters:
  • sys – algorithmic system

  • config – configuration options

Property Summary
order#

order of the IQCs

schedule#

when to discount (optionally used for switching)

Method Summary
build_program(specs)#

form the analysis program :param specs: performance specifications :type specs: cell

Returns:
  • vars – variables of the problem

  • cons – accumulated constraints

  • objective – single value to be minimized in inner loop (not the outer loop of bisection)

  • alg_psi – generalized plant

  • diss (diss_data) – dissipation constraints

coeff_normalize(vars, cons)#

COEFF_NORMALIZE add constraint to normalize the psi multipliers

Parameters:
  • vars – variables of the problem

  • cons – accumulated constraints

Returns:

cons – accumulated constraints

index_specs(alg_psi, iqc_data, specs)#

INDEX_SPECS index into the performance specifications and form a dissipation relation

Parameters:
  • alg_psi – generalized plant

  • iqc_data – container for the iqcs

  • specs (cell) – performance specifications

Returns:

diss (diss_data) – dissipation constraints

oracle_order(order, ind)#

ORACLE_ORDER create IQCs at the specified orders

Parameters:
  • order (cell) – orders of the iqcs to search over

  • ind (int) – which operator to create

Returns

obj: object vars: variables of the problem cons: accumulated constraints

process_argument(order)#

PROCESS_ARGUMENT assign orders to the operators/IQCs

Parameters:

order (cell) – orders of the iqcs to search over

Synthesis#

class manager.opt_synthesis#

Bases: manager.opt_manager_interface

OPT_SYNTHESIS synthesis of optimization algorithms

iterative procedure to find a point \(\beta^*\) satisfying the fixed-point equation \(0 \in \sum_{i=1}^s F_i(\beta^*)\), in which the oracles \(F_i\) are interfaced over a dynamical network

Constructor Summary
opt_synthesis(sys, config, iqc_op)#

OPT_SYNTHESIS Constructor for synthesis :param sys: algorithmic system :param config: configuration options :param iqc_op: of IQCs for the operators :type iqc_op: cell

Property Summary
iqc_op_ana#

warm start IQC from analysis

Method Summary
alternate(Niter, order, iqc_init, specs, b_opts)#
ALTERNATE alternating synthesis and analysis.

use bisection in analysis and synthesis if rho is minimized.

Parameters:
  • Niter (int) – number of alternation iterations

  • order (cell) – orders of the operators (for analysis)

  • iqc_init (cell) – initial IQCs for the operators (for synthesis)

  • specs (cell) – performance specifications (for both)

Returns:
  • sol_history (cell) – cell of solutions, first row is Synthesis, second row is analysis.

  • vr_history (cell) – lower and upper bound of parameter

  • success (bool) – success of alternation method

index_specs(alg_psi, iqc_data, specs)#

INDEX_SPECS index into the performance specifications and form a dissipation relation

Parameters:
  • alg_psi – generalized plant

  • iqc_data – container for the iqcs

  • specs (cell) – performance specifications

Returns:

diss (diss_data) – dissipation constraints

make_blank_iqc()#

if no IQCs are provided, make identity IQCs

Returns:

iqc_op (cell) – IQCs for the operators

process_argument(iqc_op)#

PROCESS_ARGUMENT assign orders to the operators/IQCs :param iqc_rob: IQCs representing the robust uncertainties

process_recovery(sol, lmi_out, alg_psi, diss)#

PROCESS_RECOVERY recover the IQCs from the solution of the synthesis program

Parameters:
  • sol – solution structure

  • lmi_out – output of solver routines

  • alg_psi – generalized plant

  • diss (diss_data) – dissipation constraints

Returns:

sol – solution structure

Common Routines#

class manager.opt_manager_interface#

Bases: handle

OPT_MANAGER_INTERFACE interface for the analysis and synthesis of optimization/inclusion algorithms

Constructor Summary
opt_manager_interface(sys, config)#

OPT_MANAGER_INTERFACE Constructor :param sys: algorithmic system :param config: configuration options

Property Summary
config#

configuration options (opt_config)

cons#

accumualted constraints

iqc_op#

iqcs for the operators

lmi#

(lmi_dispatch) the lmi handler

specs#

performance specifications

sys#

system (opt_system type)

sys_orig#

(opt_system) original system, before any performance-based modifications

task#

other options

vars#

variables of the problem.

Method Summary
LMILAB()#

is LMILAB used? :Returns: verdict (bool)

bisect(arg, specs)#

BISECT: perform bisection on a parameter to minimize an objective.

Parameters:
  • arg – arguments for the routine (order for analysis, iqcs for synthesis)

  • specs – (cell) performance specifications

Returns:
  • sol_best – the best solution

  • vr – the range of the value at the optimal bisection

bisect_inner(pcurr, vars, cons, spec, b_opts)#

BISECT_INNER: inner loop for bisection run the program and process the solution :param pcurr: current value of the parameter to set :param vars: variables of problem :param cons: accumulated constraints :param spec: specifications

Returns:

sol – solution structure

build_program(specs)#

BUILD_PROGRAM set up the algorithm analysis or synthesis problem :param specs: specifications

Returns:
  • vars – variables of the problem

  • cons (lmibl) – accumulated constraints

  • objective – objective to minimize

  • alg_psi (genplant/genplantpoly) – generalized plant,

  • before internal model

  • diss – current dissipation inequality

cons_dynamic(vars, cons, alg_psi, iqc_data, specs)#

CONS_DYNAMIC: form the dynamical dissipation relations for the system (at the current set of specifications)

Returns:
  • vars – variables of the problem

  • cons – accumulated constraints

  • objective – single value to be minimized in inner loop (not the outer loop of bisection)

get_common_rho(specs)#

GET_COMMON_RHO get the common rho in the case of the same rho in all performance specifications. required to use noncausal multipliers

Parameters:

specs (cell) – array of specifications

Returns:

rho (double) – the common rho

iqc_op_all(iqc_op)#

IQC_OP_ALL: all iqcs for the operators

Returns:

iqc_data (iqc_data_container) – information for the iqcs

modify_spec(pcurr, spec_old, b_opts)#

MODIFY_SPEC modify a specification in the bisection loop

Parameters:
  • pcurr – current value of the parameter to set

  • spec_old – specification to update

Returns:

spec_new – updated specification

perf_specs(specs)#

PERF_SPECS index the performance specifications

Parameters:

specs (cell) – performance specifications

Returns:
  • sperf – the specification cell

  • ERGODIC – is ergodic convergence required

run(vars, cons, objective)#

RUN: run the program :param vars: variables of the problem :param cons: accumulated constraints :param objective: target to minimize

Returns

sol: solution structure

scan_specifications(varargin)#

concatenate the new performance specifications :param varargin: new specifications to add

select_lmi(sys)#

SELECT_LMI select the lmi routines based on the system type

Parameters:
  • sys – type of system (e.g. opt_system_switched)

  • routine – ‘analysis’ or ‘synthesis’

Returns:

lmi_handler – the lmi object for the specific dynamics

set_tol(key, val)#

SET_TOL set the tolerance of the LMI routines

Example: obj = obj.set_tol(‘G_max’, 10)

solve_single(arg, specs)#

SOLVE_SINGLE Solve the program once

Parameters:
  • arg – order (analysis) or iqc (synthesis)

  • specs – specification cell