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_interfaceOPT_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 overind (
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_interfaceOPT_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 iterationsorder (
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:
handleOPT_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