跳转到内容

控制中的 LMI / 页面 / 切换系统 Hinf 优化

来自维基教科书,开放的书籍,为开放的世界

控制中的 LMI / 页面 / 切换系统 Hinf 优化


切换系统 优化

优化问题

[编辑 | 编辑源代码]

这个优化问题涉及使用状态反馈系统设计,不同之处在于在优化过程中优化具有“切换”属性的系统矩阵的系统。这类似于考虑具有可变不确定性的系统;一个例子是矩阵 中的多面体不确定性。无论哪个矩阵正在切换状态,都必须使用相同的变量对两种情况进行优化。

首先通过定义 9 矩阵系统如下: , , , , , , , ,以及 。使用这种类型的优化允许堆叠不同的 LMI 矩阵状态,以实现 的控制器合成。

数据取决于 9 矩阵系统状态空间表示的类型;因此,为了计算这个 LMI,必须知道以下内容:。还需要考虑的是,哪个或哪些矩阵将在优化过程中“切换”。这可以用 表示。

LMI: 切换系统 优化

[edit | edit source]

存在一个标量 ,以及矩阵 ,其中


其中 是控制器矩阵。这也假设唯一的切换矩阵是 ;然而,其他矩阵可以在状态中切换,以使控制器更加鲁棒。


结论

[edit | edit source]

这个 LMI 的结果给出了一个控制器增益,它是对切换系统优化的 的优化。


实现

[edit | edit source]
% Switched System Hinf example
% -- EXAMPLE --

clear; clc; close all;

%Given
A  = [ 1  1  0  1  0  1;
      -1 -1 -1  0  0  1;
       1  0  1 -1  1  1;
      -1  1 -1 -1  0  0;
      -1 -1  1  1  1 -1;
       0 -1  0  0 -1 -1];
  
B1 = [ 0 -1 -1;
       0  0  0;
      -1  1  1;
      -1  0  0;
       0  0  1;
      -1  1  1];

B21= [ 0  0  0;
      -1  0  1;
      -1  1  0;
       1 -1  0;
      -1  0 -1;
       0  1  1];

B22= [ 0   0   0;
      -1   0   1;
      -1   1   0;
       1   1   0;
       1   0   1;
       0  -3  -1];

C1 = [ 0  1  0 -1 -1 -1;
       0  0  0 -1  0  0;
       1  0  0  0 -1  0];

D12= [ 1    1    1;
       0    0    0;
       0.1  0.2  0.4];

D11= [ 1  2  3;
       0  0  0;
       0  0  0];
   
%Error
eta = 1E-4;

%sizes of matrices
numa  = size(A,1);    %states
numb2 = size(B21,2);  %actuators
numb1 = size(B1,2);   %external inputs
numc1 = size(C1,1);   %regulated outputs

%variables
gam = sdpvar(1);
Y   = sdpvar(numa);
Z   = sdpvar(numb2,numa,'full');

%Matrix for LMI optimization
M1 = [Y*A'+A*Y+Z'*B21'+B21*Z   B1                Y*C1'+Z'*D12';
     B1'                      -gam*eye(numb1)    D11';
     C1*Y+D12*Z                D11              -gam*eye(numc1)];

M2 = [Y*A'+A*Y+Z'*B22'+B22*Z   B1                Y*C1'+Z'*D12';
     B1'                      -gam*eye(numb1)    D11';
     C1*Y+D12*Z                D11              -gam*eye(numc1)];

%Constraints
Fc = (M1 <= 0);
Fc = [Fc; M2 <= 0];
Fc = [Fc; Y >= eta*eye(numa)];

opt = sdpsettings('solver','sedumi');

%Objective function
obj = gam;

%Optimizing given constraints
optimize(Fc,obj,opt);

%Displays output Hinf gain
fprintf('\n\nHinf for Hinf optimal state-feedback problem is: ')
display(value(gam))

F = value(Z)*inv(value(Y)); %#ok<MINV>

fprintf('\n\nState-Feedback controller F matrix')
display(F)
[edit | edit source]


返回主页

[edit | edit source]
华夏公益教科书