m (→Usage: another code update) |
(Added missing section and various fixes) |
||
Line 7: | Line 7: | ||
==Description== |
==Description== |
||
The '''Inverse Lyapunov Procedure''' (ilp) is a synthetic random linear system generator. |
The '''Inverse Lyapunov Procedure''' (ilp) is a synthetic random linear system generator. |
||
− | It is based on reversing the [[Balanced_Truncation|Balanced Truncation]] procedure and was developed in <ref name="smith03" |
+ | It is based on reversing the [[Balanced_Truncation|Balanced Truncation]] procedure and was developed in <ref name="smith03"/>, |
+ | where a description of the algorithm is given. |
||
In aggregate form, for randomly generated controllability and observability gramians, a balancing transformation is computed. |
In aggregate form, for randomly generated controllability and observability gramians, a balancing transformation is computed. |
||
− | The balanced gramian is the basis for an associated state-space system, |
+ | The balanced gramian is the basis for an associated state-space system, |
+ | which is determined by solving a [[wikipedia:Lyapunov_equation|Lyapunov equation]] and then unbalanced. |
||
A central point is the solution of the Lyapunov equations for the system matrix instead of the gramian matrix. |
A central point is the solution of the Lyapunov equations for the system matrix instead of the gramian matrix. |
||
This is feasable due to the symmetric (semi-)positive definiteness of the gramians and the requirement for a stable system, yet with a non-unique solution. |
This is feasable due to the symmetric (semi-)positive definiteness of the gramians and the requirement for a stable system, yet with a non-unique solution. |
||
+ | ===Inverse Sylvester Procedure=== |
||
− | ==Implementation== |
||
+ | A variant of the '''Inverse Lyapunov Procedure''' is the inverse Sylvester procedure <ref name="himpe17"/>. |
||
⚫ | |||
− | An efficient approach to solving the Lyapunov equation is provided by empirical gramians. |
||
+ | This benchmark is procedural and the input, state and output dimensions can be chosen. |
||
⚫ | |||
⚫ | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
<source lang="matlab"> |
<source lang="matlab"> |
||
Line 82: | Line 83: | ||
A variant of the above code using empirical Gramians instead of a matrix equation solution can be found at http://gramian.de/utils/ilp.m , which may yield preferable results. |
A variant of the above code using empirical Gramians instead of a matrix equation solution can be found at http://gramian.de/utils/ilp.m , which may yield preferable results. |
||
+ | |||
+ | ==Dimensions== |
||
+ | |||
+ | System structure: |
||
+ | :<math> |
||
+ | \begin{align} |
||
+ | \dot{x}(t) &= Ax(t) + Bu(t) \\ |
||
+ | y(t) &= Cx(t) |
||
+ | \end{align} |
||
+ | </math> |
||
+ | |||
+ | System dimensions: |
||
+ | |||
+ | <math>A \in \mathbb{R}^{N \times N}</math>, |
||
+ | <math>B \in \mathbb{R}^{N \times M}</math>, |
||
+ | <math>C \in \mathbb{R}^{Q \times N}</math>. |
||
+ | |||
+ | |||
+ | ==Citation== |
||
+ | |||
+ | |||
+ | To cite this benchmark, use the following references: |
||
+ | |||
+ | * For the benchmark itself and its data: |
||
+ | ::The MORwiki Community. '''Inverse Lyapunov Procedure'''. MORwiki - Model Order Reduction Wiki, 2018. http://modelreduction.org/index.php/Inverse_Lyapunov_Procedure |
||
+ | |||
+ | @MISC{morwiki-invlyapproc, |
||
+ | author = {The {MORwiki} Community}, |
||
+ | title = {Inverse Lyapunov Procedure}, |
||
+ | howpublished = {{MORwiki} -- Model Order Reduction Wiki}, |
||
+ | url = {<nowiki>http://modelreduction.org/index.php/Inverse Lyapunov Procedure</nowiki>}, |
||
+ | year = {2018} |
||
+ | } |
||
+ | |||
+ | * For the background on the benchmark: |
||
+ | |||
+ | @INPROCEEDINGS{SmiF03, |
||
+ | author = {Smith, S.~C. and Fisher, J.}, |
||
+ | title = {On generating random systems: a gramian approach}, |
||
+ | booktitle = {Proc. Am. Control. Conf.}, |
||
+ | volume = 3, |
||
+ | pages = {2743--2748}, |
||
+ | year = 2003, |
||
+ | doi = {10.1109/ACC.2003.1243494} |
||
+ | } |
||
+ | |||
==References== |
==References== |
||
− | <references |
+ | <references> |
+ | |||
+ | <ref name="smith03">S.C. Smith, J. Fisher, "<span class="plainlinks">[https://doi.org/10.1109/ACC.2003.1243494 On generating random systems: a gramian approach]</span>", Proceedings of the American Control Conference, 3: 2743--2748, 2003.</ref> |
||
+ | <ref name="himpe17">C. Himpe, M. Ohlberger, "<span class="plainlinks">[https://doi.org/10.1007/978-3-319-58786-8_17 Cross-Gramian-Based Model Reduction: A Comparison]</span>", In: Model Reduction of Parametrized Systems, Modeling, Simulation and Applications, vol. 17: 271--283, 2017.</ref> |
||
+ | </references> |
||
==Contact== |
==Contact== |
Revision as of 16:53, 6 March 2018
Description
The Inverse Lyapunov Procedure (ilp) is a synthetic random linear system generator. It is based on reversing the Balanced Truncation procedure and was developed in [1], where a description of the algorithm is given. In aggregate form, for randomly generated controllability and observability gramians, a balancing transformation is computed. The balanced gramian is the basis for an associated state-space system, which is determined by solving a Lyapunov equation and then unbalanced. A central point is the solution of the Lyapunov equations for the system matrix instead of the gramian matrix. This is feasable due to the symmetric (semi-)positive definiteness of the gramians and the requirement for a stable system, yet with a non-unique solution.
Inverse Sylvester Procedure
A variant of the Inverse Lyapunov Procedure is the inverse Sylvester procedure [2].
Data
This benchmark is procedural and the input, state and output dimensions can be chosen. Use the following MATLAB code to generate a random system as described above:
function [A,B,C] = ilp(M,N,Q,s,r)
% ilp (inverse lyapunov procedure)
% by Christian Himpe, 2013--2018
% released under BSD 2-Clause License
%*
if(nargin==5)
rand('seed',r);
randn('seed',r);
end;
% Gramian Eigenvalues
WC = exp(0.5*rand(N,1));
WO = exp(0.5*rand(N,1));
% Gramian Eigenvectors
[P,S,R] = svd(randn(N));
% Balancing Transformation
WC = P*diag(sqrt(WC))*P';
WO = R*diag(sqrt(WO))*R';
[U,D,V] = svd(WC*WO);
% Input and Output
B = randn(N,M);
if(nargin>=4 && s~=0)
C = B';
else
C = randn(Q,N);
end
% Scale Output Matrix
BB = sum(B.*B,2); % = diag(B*B')
CC = sum(C.*C,1)'; % = diag(C'*C)
C = bsxfun(@times,C,sqrt(BB./CC)');
% Solve System Matrix
A = -sylvester(D,D,B*B');
% Unbalance System
A = V*A*U';
B = V*B;
C = C*U';
end
The function call requires three parameters; the number of inputs , of states
and outputs
.
Optionally, a symmetric system can be enforced with the parameter
.
For reproducibility, the random number generator seed can be controlled by the parameter
.
The return value consists of three matrices; the system matrix
, the input matrix
and the output matrix
.
[A,B,C] = ilp(M,N,Q,s,r);
A variant of the above code using empirical Gramians instead of a matrix equation solution can be found at http://gramian.de/utils/ilp.m , which may yield preferable results.
Dimensions
System structure:
System dimensions:
,
,
.
Citation
To cite this benchmark, use the following references:
- For the benchmark itself and its data:
- The MORwiki Community. Inverse Lyapunov Procedure. MORwiki - Model Order Reduction Wiki, 2018. http://modelreduction.org/index.php/Inverse_Lyapunov_Procedure
@MISC{morwiki-invlyapproc, author = {The {MORwiki} Community}, title = {Inverse Lyapunov Procedure}, howpublished = {{MORwiki} -- Model Order Reduction Wiki}, url = {http://modelreduction.org/index.php/Inverse Lyapunov Procedure}, year = {2018} }
- For the background on the benchmark:
@INPROCEEDINGS{SmiF03, author = {Smith, S.~C. and Fisher, J.}, title = {On generating random systems: a gramian approach}, booktitle = {Proc. Am. Control. Conf.}, volume = 3, pages = {2743--2748}, year = 2003, doi = {10.1109/ACC.2003.1243494} }
References
- ↑ S.C. Smith, J. Fisher, "On generating random systems: a gramian approach", Proceedings of the American Control Conference, 3: 2743--2748, 2003.
- ↑ C. Himpe, M. Ohlberger, "Cross-Gramian-Based Model Reduction: A Comparison", In: Model Reduction of Parametrized Systems, Modeling, Simulation and Applications, vol. 17: 271--283, 2017.