使用YALMIP和Sedumi解决大量约束

时间:2017-05-12 11:46:55

标签: matlab

我有以下问题需要解决: enter image description here

我使用YALMIP以下列方式定义约束:

C = [7.8*10^5 0 ; 0 6.3*10^7];
D = [62500 0 ; 0 62500];

tf1 = 15;
tf2 = 15;
T = 10;

X{1} = sdpvar(2,2);
Constraints=[X{1} >= inv(C)];

for k = 1:1:T/dt

    L{k} = sdpvar(1,2);
    X{k} = sdpvar(2,2);
    X{k+1} = sdpvar(2,2);

    A{k} = [2/(tf1-t) 0 ; 0 2/(tf2-t)]; 
    B{k} = [-1/(tf1-t);-1/(tf2-t)];

    Constraints = [Constraints, -X{k+1}+X{k}+dt*(X{k}*A{k}'+B{k}*L{k})<0, X{k} < inv(D)];
    t=t+dt;

end

options = sdpsettings('Solver','Sedumi');
solvesdp(Constraints,[],options);

我所做的基本上是一个for循环,这将使我有大量的约束。 我得到的最终结果是2001年约束的列表(X(0))和每个循环中的另外2000个2。

我的问题是如何检查我的LMI,看看matlab如何使用YALMIP生成它们?

我希望能够使用类似info的内容来查看以下内容:

Constraints{1} : X{1} >= inv(C)

Constraints{2} : -X{2}+X{1}+dt*(X{1}*A{k}'+B{1}*L{1})<0

Constraints{3} : X{2} < inv(D)

Constraints{4} : -X{3}+X{2}+dt*(X{2}*A{2}'+B{2}*L{2})<0

Constraints{5} : X{3} < inv(D) ......等等

谢谢

0 个答案:

没有答案