linearizebmi & solvebmi
Introduction,
Download,
Manuals,
Examples,
About Overbounding Approximation.
[ English / Japanese ]
- solvebmi
- solvebmiOptions
- linearizebmi
- linearizebmiOptions
Syntax
[gg,variables,outopts] = solvebmi(Fstr,{'X','Y'},options)
Description
solvebmi obtains approximate solutions for the given BMI and LMI constraints.
Arguments:
Name |
Type |
Description |
Flist |
string in cell |
description of BMIs and LMIs in YALMIP format |
vlist |
string in cell |
names of decision variable in blinear term (declared by sdpvar) |
g |
sdpvar |
objective function (declared by sdpvar) |
options |
struct |
Options.
See solvebmiOptions .
|
Return values:
Name |
Type |
Description |
gg |
numeric |
achieved objective value |
variables |
struct |
data of optimal solution for all decision variables |
outopts |
struct |
optimization history |
Example
Let us consider the following BMI problems.
\[
\begin{array}{ll}
\underset{\gamma,P,K}{\mathrm{minimize}} & \gamma \\
\mathrm{subject~to} & P \succ O, \\
~ &
\left[
\begin{array}{ccc}
\mathrm{He}(P(A+B_{2}KC_{2})) & P(B_{1} + B_{2}KD_{21}) & (C_{1} + D_{12}KC_{2})^\mathrm{T} \\
(B_{1} + B_{2}KD_{21})^\mathrm{T}P & -\gamma I & (D_{11} + D_{12}KD_{21})^\mathrm{T} \\
C_{1} + D_{12}KC_{2} & D_{11} + D_{12}KD_{21} & -\gamma I
\end{array}
\right] \prec O.
\end{array}
\]
-
Define data matrices and their size in the problem.
n = ...;
m = ...;
a = ...;
b1 = ...;
.
.
.
-
Define the decision matrices \(P\), \(K\) and the objective function \(\gamma\).
P = sdpvar(n,n);
K = sdpvar(m,m);
g = sdpvar(1,1);
-
(Optional) Assign initial values for decision matrices if you know some feasible solutions.
For example, if \(P=I, K=O\) are feasible solutions,
you can assign them as below.
assign(P,eye(n,n));
assign(K,zeros(n,n));
-
Describe the BMI and LMI constraints as strings.
Fstr1 = "-P";
Fstr2 = "[P*(a+b2*K*c2)+(P*(a+b2*K*c2))', P*(b1+b2*K*d21), (c1+d12*K*c2)';" +...
"(P*(b1+b2*K*d21))', -g*eye(nw,nw), (d11+d12*K*d21)';" +...
"c1+d12*K*c2, d11+d12*K*d21, -g*eye(nz)]";
Flist = {Fstr1,Fstr2};
-
Use solvezebmi to solve the BMI problem.
[gg,vars] = solvebmi(Flist,{'P','K'},g,options);
solvezebmi can use different dilation types (with options
) to solve the BMI problem.
See examples in detail.
-
Get optimal solutions for decision matrices.
vars.P
vars.K
vars.g
In this problem, vars.g
is same as gg
.
Syntax
opts = solvebmiOptions
opts = solvebmiOptions('NAME1',VALUE1,'NAME2',VALUE2,...)
opts = solvebmiOptions(OLDOPTIONS,'NAME1',VALUE1,'NAME2',VALUE2,...)
Description
solvebmiOptions sets up various parameters for
solvebmi
.
The fields of the returned value
opts
are summarized below.
Fields of struct
opts
:
Field name |
Type |
Description |
yalmip |
struct |
YALMIP options passed to optimize |
method |
int |
type of extended LMI that approximates BMI |
lcmax |
int |
maximun number of iteration |
stoptol |
double |
Threshold for stopping criteria.
If the improvement of the objective function is
less than stoptol , the iteration stops. |
penalty |
double |
Constant weight \(\lambda\) for the regularization term
\(\lambda\cdot\)||\(X\)||\({}_F\),
which is added to the objective function.
|
regterm |
logical |
Flag to use variable regularization term
\(\dfrac{\lambda}{\ell c}\cdot\)||\(X\)||\({}_F\).
(\(\ell c\) is the number of iteration)
|
Example
yalmipopts = sdpsettings;
yalmipopts = sdpsettings(yalmipopts,'solver','mosek');
opts = solvebmiOptions;
opts = solvebmiOptions(opts,'lcmax',1e3);
opts = solvebmiOptions(opts,'yalmip',yalmipopts);
Syntax
LMI = linearizebmi(Fstr,{'X','Y'},{'X0','Y0'})
LMI = linearizebmi(Fstr,{'X','Y'},{'X0','Y0'},'G')
LMI = linearizebmi(Fstr,{'X','Y'},{'X0','Y0'},'G',opts)
[LMI, LMIstr] = linearizebmi(Fstr,{'X','Y'},{'X0','Y0'},'G',opts)
Description
linearizebmi generates a sufficient Linear Matrix Inequality (LMI) constraint
from the given Bilinear Matrix Inequality (BMI) constraint.
Auguments:
Name | Type | Description |
Fstr | string | description of BMI in YALMIP format |
{'X','Y'} |
string in cell | names of decision variable (declared by sdpvar) |
{'X0','Y0'} |
string in cell | names of current feasible solutions (sdpvar or constant matrix) |
'G' |
string | name of decompsition matrix (constant matrix) (default: identity matrix) |
options |
struct |
Options. See
linearizebmiOptions .
|
Return values:
Name | Type | Description |
LMI | sdpvar | dilated LMI variable
|
Lstr | string | string description of dilated LMI |
Lstr'+Lstr
corresponds to the left-hand side of the dilated LMI.
Example
Let us consider a BMI constraint
$P(A+BKC)+(A+BKC)^\mathrm{T}P\prec O$,
where $P$ and $K$ are the decision matices.
- Problem definition
n = 4;
m = 2;
A = rand(n,n);
B = rand(n,m);
C = rand(m,n);
- Define the decision matrices $P$, $K$
and the constant decomposition matrix $G$.
% decision matrices
P = sdpvar(n,n);
K = sdpvar(m,m);
% current feasible solutions
P0 = zeros(n,n);
K0 = zeros(m,m);
% constant decomposition matrix
G = eye(m,m);
In case of using linearizebmi in a iteration loop,
one can pass sdpvar object as current feasible solutions.
See
examples in detail.
-
Describe the BMI constraint $P(A+BKC)+(A+BKC)^\mathrm{T}\prec O$
by a character string.
Fstr = "P*(A+B*K*C)+(A+B*K*C)'*P";
-
Use linearizebmi to generate a dilated LMI.
% matrix sdp variable
[LMI,Lstr] = linearizebmi(Fstr,{'P','K'},{'P0','K0'},'G');
% constraint in YALMIP format
constraints = [LMI <= 0];
-
Return values of linearizebmi.
LMI
Linear matrix variable 6x6 (symmetric, real, 13 variables)
Coeffiecient range: 0.043024 to 3.4622
Lstr
LMI:
"(P-P0)*A+comp*C" "(P-P0)*B"
"G*(K-K0)*C" "-G"
comp:
"P0*B*K0+(P-P0)*B*K0+P0*B*(K-K0)"
Lstr'+Lstr
corresponds to the left-hand side of the dilated LMI.
Syntax
opts = linearizebmiOptions
opts = linearizebmiOptions('NAME1',VALUE1,'NAME2',VALUE2,...)
opts = LinearizebmiOptions(OLDOPTIONS,'NAME1',VALUE1,'NAME2',VALUE2,...)
Description
linearizebmiOptions sets up parameters for
linearizebmi
.
The fields of the returned value
opts
are summarized below.
Fields of struct
opts
:
Field name |
Type |
Description |
method |
int |
type of extended LMI that approximates BMI
0: Sebe (2007)
1: Sebe (2018)
2: Shimomura & Fujii (2005)
3: Lee & Hu (2016)
4: Ren et al. (2021)
|
References:
- N. Sebe, A New Dilated LMI Characterization
and Iterative Control System Synthesis,
11th IFAC/IFORS/IMACS/IFIP Symposium on Large Scale Systems:
Theory and Applications (LSS 2007),
6 pages, 2007.
(IFAC Proceedings Volumes, 40-9, pp. 250-255, 2007)
doi:10.3182/20070723-3-PL-2917.00040
- N. Sebe,
Sequential Convex Overbounding Approximation Method
for Bilinear Matrix Inequality Problems,
9th IFAC Symposium on Robust Control Design (ROCOND'18),
pp. 175-182, 2018.
(IFAC-PapersOnLine, 51-25, pp. 102-109, 2018)
doi:10.1016/j.ifacol.2018.11.089
- T. Shimomura and T. Fujii,
Multiobjective control via successive over-bounding of quadratic terms,
International Journal of Robust and Nonlinear Control,
15-8, pp. 363-381, 2005.
doi:10.1002/rnc.997
- D. Lee and J. Hu,
A sequential parametric convex approximation method
for solving bilinear matrix inequalities,
2016 IEEE 55th Conference on Decision and Control (CDC),
pp. 1965-1970, 2016.
doi: 10.1109/CDC.2016.7798552
- Y. Ren, Q. Li, K.-Z. Liu, D.-W. Ding,
A successive convex optimization method
for bilinear matrix inequality problems
and its application to static output-feedback control,
International Journal of Robust and Nonlinear Control,
31-18, pp. 9709-9730, 2021.
doi:10.1002/rnc.5796
Example
opts = solvebmiOptions;
opts = solvebmiOptions(opts,'method',1);
Return to Sebe's home page
Last modified: Mon Mar 7 23:58:08 JST 2022