est # Empirical System Theory (Reference Tree)
System # System argument of type struct(ure)
"Vector field = @(x,u,p,t)" # Vector field function handle
"Output functional = @(x,u,p,t)" # Output functional function handle
"Adjoint Vector field = @(x,u,p,t)" # Adjoint vector field function handle
"Number of Inputs" # Integer
"Number of States" # Integer
"Number of Outputs" # Integer
"Time step width" # The time-step for the training (and test) simulations, Float
"Time horizon" # The final time of for the training simulations, Float
Task # Task argument of type struct(ure)
"Singular Values = 'singular_values'" # Return singular values of empirical Gramian
Method
"Controllability Gramian = 'controllability'"
"Observability Gramian = 'observability'"
"Cross Gramian = 'minimality'"
"Model Reduction = 'model_reduction'" # Dimension reduction of state-space
Method
"Poor Man = 'poor_man'" # aka POD
"Dominant Subspaces = 'dominant_subspaces'" # aka DSPMR
"Approximate Balancing = 'approx_balancing'" # aka Modified POD
"Balanced Truncation = 'balanced_truncation'" # via Balanced POD
Variant
"Controllability Gramian only = 'controllability'"
"(Controllability and) Observability Gramian = 'observability'"
"Cross Gramian = 'minimality'"
"Parameter Reduction = 'parameter_reduction'"
Methods
"Identifiability Gramian = 'observability'"
"Cross-Identifiability Gramian = 'minimality'"
"Combined State and Parameter Reduction = 'combined_reduction'" # Combines a parameter reduction method with model reduction method
Method
"Poor Man = 'poor_man'"
"Dominant Subspaces = 'dominant_subspaces'"
"Approximate Balancing = 'approx_balancing'"
"Balanced Truncation = 'balanced_truncation'"
Variant
"Controllability, Observability, and Identifiability Gramian = 'observability'"
"Cross and Cross-Identifiability Gramian = 'minimality'"
"Decentralized Control = 'decentralized_control'"
Method
"Relative Gain Array = 'relative_gain_array'"
"Input-Output Coherence = 'input_output_coherence'"
"Input-Output Pairing = 'input_output_pairing'"
"Hardy-2 Norm Based = 'hardy_2'"
"Hardy-Infinity Norm Based = 'hardy_inf'"
"Participation Matrix = 'participation_matrix'"
"Hankel Interaction Array = 'hankel_interaction'"
"Hilbert-Schmidt-Hankel Nrom Based = 'rms_hsv'"
"State Sensitivity = 'state_sensitivity'"
Method
"Controllability-Based = 'controllability'"
"Observability-Based = 'observability'"
"Minimality-Based = 'minimality'"
"Parameter Sensitivity = 'parameter_sensitivity'"
Method
"Controllability-Based = 'controllability'"
"Observability-Based = 'observability'"
"Minimality-Based = 'minimality'"
"Parameter Identifiability = 'parameter_identifiability'" # Structural identifiability quantification
Method
"Observability-Based = 'observability'"
"Minimality-Based = 'minimality'"
"Uncertainty Quantification = 'uncertainty_quantification'"
Method
"Controllability-Based = 'controllability'"
"Observability-Based = 'observability'"
"Nonlinearity Quantification = 'nonlinearity_quantification'" # Compare system behavior to reference system via parametrization of the nonlinearity
Method
"Controllability-Based = 'controllability'" # Input-to-State nonlinearity
"Observability-Based = 'observability'" # State-to-Output nonlinearity
"Minimality-Based = 'minimality'" # Gain-based
"Correlation-Based = 'correlation'" # Combines controllability, observability and minimality measures
"Gramian Index = 'gramian_index'" # Evaluate Gramian index behavior under projection-based model reduction
Method
"Minimal Singular Value = 'sigma_min'" # -∞ Generalized mean
"Harmonic Mean of Singular Values = 'harmonic_mean'" # -1 Generalized mean
"Geometric Mean of Singular Values = 'geometric_mean'" # 0 Generalized mean
"Relative Nuclear Norm (Trace Norm) = 'energy_fraction'" # 1 Generalized mean
"Relative Operator Norm (Hilbert-Schmidt Norm) = 'operator_norm'" # 2 Generalized mean
"Maximal Singular Value = 'sigma_max'" # ∞ Generalized mean
"Energy Storage Efficiency = 'storage_efficiency'"
"Performance Index = 'performance_index'"
"System Index = 'system_index'" # Evaluate system index behavior under projection-based model reduction
Method
"Cauchy Index = 'cauchy_index'" # Discrete
"System Entropy = 'system_entropy'" # Linear
"Gramian Distance = 'gramian_distance'" # Linear
"System Symmetry = 'system_symmetry'" # Logarithmic
"Input-Output Coherence = 'io_coherence'" # Logarithmic
"System Gain = 'system_gain'" # Logarithmic
"Network Sensitivity = 'network_sensitivity'" # Logarithmic
"Geometric Mean of Hankel singular values = 'geometric_mean_hsv'" # Logarithmic
"RV Coefficient = 'rv_coefficient'" # Logarithmic
"Approximate System Norm = 'system_norm'" # Evaluate system norm behavior under projection-based model reduction
Method
"Hardy-Infinity Norm = 'hardy_inf_norm'" # Schatten-1 norm of HSVs
"Hilbert-Schmidt-Hankel Norm = 'hilbert_schmidt_hankel_norm'" # Schatten-2 norm of HSVs
"Hankel Norm = 'hankel_norm'" # Schatten-∞ norm of HSVs
"Hardy-2 Norm = 'hardy_2_norm'" # Via Output controllability Gramian
"Tau Function = 'tau_function'" # Inverse spectral problem for Schrödinger's equation
Config # Confi(guration) Argument
"Solver = 'solver'" # Integrator for simulation of training and test trajectories
"1st-Order Explicit Runge-Kutta = 'rk1ex'" # Euler method
"2nd-Order Explicit Runge-Kutta = 'rk2ex'" # Heun method (DEFAULT)
"4th/5th-Order Explicit Runge-Kutta = 'rk45ex'" # Dormand-Prince method
"Custom solver = @(f,g,t,x0,u,p)" # Custom solver function handle
"Inner Product Kernel = 'kernel'" # Kernel used for the Gramian computation
"Sum Pseudo Kernel = 'sum'" # Pseudo kernel for computing the sum of all empirical Gramian elements
"Trace Pseudo Kernel = 'trace'" # Pseudo kernel for computing the trace of an empirical Gramian
"Diagonal Pseudo Kernel = 'diagonal'" # Pseudo kernel for computing only the diagonal of an empirical Gramian
"Position Pseudo Kernel = 'position'" # Pseudo kernel for computing only the upper left diagonal block of half the state-space dimension
"Velocity Pseudo Kernel = 'velocity'" # Pseudo kernel for computing only the lower right diagonal block of half the state-space dimension
"Linear Kernel = 'linear'" # Linear standard L2 inner product (unit) kernel (DEFAULT)
"Quadratic Polynomial Kernel = 'quadratic'" # Second order polynomial kernel with unit shift
"Cubic Polynomial Kernel = 'cubic'" # Third order polynomial kernel with unit shift
"Sigmoid Kernel = 'sigmoid'" # Sigmoid kernel with unit shift
"Mercer Sigmoid Kernel = 'mercersigmoid'" # Mercer variant of Sigmoid kernel with unit shifts
"Logarithmic Kernel = 'logarithmic'" # Logarithmic kernel with unit shift
"Exponential Kernel = 'exponential'" # Exponential kernel
"Gauss Kernel = 'gauss'" # Gaussian kernel with unit covariance
"Custom kernel = @(x,y)" # Custom kernel function handle
"Training Input = 'training'" # Input used for training trajectories
"Delta Impulse = 'impulse'" # (DEFAULT)
"Step Input = 'step'" # Constant input / load vector
"Decaying Exponential Chirp = 'chirp'" # Exponential chirp with highest frequency 1/dt
"Sinc = 'sinc'" # Cardinal sine input
"Pseudo-Random Binary = 'random'" # (unseeded) once-sampled scalar {0,1}-sequence
"Trajectory Weighting = 'weighting'" # Scale or normalize discrete trajectory
"No weighting = 'none'" # (DEFAULT)
"Linear Time Weighting = 'linear'" # Scale each trajectory column by the square-root of its time
"Quadratic Time Weighting = 'quadratic'" # Scale each trajectory column by its time
"Per-State Weighting = 'state'" # Normalize each trajectory column by its 2-norm
"Max-Per-Component Weighting = 'scale'" # Normalize each trajectory row by its inf-norm
"Trajectory Centering = 'centering' # Center or shift discrete trajectory
"No centering = 'none'" # (DEFAULT)
"Steady-State = 'steady'" # Center (output) trajectory around steady-state (output)
"Final State = 'final'" # Center (output) trajectory around last state / output
"Arithmetic Mean = 'mean'" # Center (output) trajectory around temporal arithmetic mean
"Root-Mean-Square = 'rms'" # Center (output) trajectory around temporal quadratic mean
"Mid-Range" = 'midrange'" # Center (output) trajectory around temporal midrange
"Perturbation Scales = 'scales'" # Subdivision of perturbation
"Single scale = 'single'" # (DEFAULT)
"Linear Scaling = 'linear'" # [0.25,0.50,0.75,1.0] * max_perturbation
"Geometric Scaling = 'geoemtric'" # [0.125,0.25,0.5,1.0] * max_perturbation
"Logarithmic Scaling = 'logarithmic'" # [0.001,0.01,0.1,1.0] * max_perturbation
"Sparse-Grid Scaling = 'sparse'" # [0.01,0.50,0.99,1.0] * max_perturbation
"Direction Rotations = 'rotations'" # Perturbation rotations
"Positive and Negative = 'posneg'" # Unit and negatve unit rotation (DEFAULT)
"Only Positive = 'single'" # Only unit rotation
"Gramian Normalization = 'normalization'" # Improve numerical behavior by scaling
"No Normalization = 'none'" # (DEFAULT)
"Steady-State = 'steady'" # Normalizes vector field argument and value with steady states
"Jacobi Preconditioner = 'jacobi'" # Normalizes vector field argument and value with Gramian diagonal
"State-Space Gramian Variant = 'stype'" # Special Gramian variants
"Regular = 'standard'" # (DEFAULT)
"Generic Special = 'special'" # Use generic special Gramian variant (for automation purposes)
"Output Controllability Gramian = 'output_controllability'" # Use with controllability and sensitivity Gramians
"Average Observability Gramian = 'average_observability'" # Use with observablity and identifiability Gramians
"Non-Symmetric Cross Gramian = 'nonsymmetric_minimality'" # Use with (linear) cross and joint Gramians
"Control Explicit Observability = 'extra_input'" # Additional input for observability (initial-state perturbation) simulations
"No Extra Input = 'none'" # (DEFAULT)
"Use Extra Input = 'yes'"
"Parameter Centering = 'pcentering'" # Center parameter and generate parameter perturbations
"No Centering = 'none'" # Minimal parameter is used as center, scaled linear perturbations (DEFAULT)
"Linear = 'linear'" # Center at arithmetic mean, linear scaled perturbations
"Logarithmic = 'logarithmic'" # Center at logarithmic mean, logarithmic scaled perturbations (Requires all strictly positive parameter components)
"Parameter-Space Gramian Variant = 'ptype'" # Special parameter Gramian variants
"Regular = 'standard'" # Regular parameter Gramian (DEFAULT)
"Generic Special = 'special'" # Use generic special Gramian variant (for automation purposes)
"Input-Output Sensitivity Gramian = 'io_sensitivity'" # Input-output sensitivity Gramian
"Coarse Schur Complement = 'coarse_schur'" # Coarse Schur complement computation for empirical identifiability and joint Gramian
"System Linearity = 'linearity'" # Assign system linearity
"Nonlinear System = 'nonlinear'" # The system is nonlinear (DEFAULT)
"Linear System = 'linear'" # The system is linear, which requires an adjoint vector field