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