我使用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)
......等等
谢谢