📄 hll.m
字号:
MAXGEN=10; %代数
NIND=50; %个体数
NVAR=1; %变量个数
PRECI=10; %变量精度
chrom=crtbp(NIND,NVAR*PRECI);
%FieldD=[rep([10],[1,1]);rep([0;1023],[1,1]);rep([0;0;1;1],[1,1])];
FieldD=[10;0;1;0;0;1;1]
phen=bs2rv(chrom,FieldD);
for i=1:1:NIND
x(i,1)=1*(phen(i,1)/1023)+0.3;
x1=x(i,1);
A1=[-0.2 0 0 0 0 0 0 -4;
4.75 -5 0 0 0 0 0 0;
0 0.16667 -0.16667 0 0 0 0 0;
0 0 2 -2 0 0 0 0;
0 -0.08 -0.0747 -0.112 -3.994 10 -0.928 -9.1011;
0 0 0 0 0.2 -0.5 0 0;
0 0 0 0 1.3194 0 -1.3889 -0.2778;
0 0.01 0.0093 0.014 -0.0632 0 0.116 -0.1124];
A2=[-0.2 0 0 0 0 0 0 -4;
4.75 -5 0 0 0 0 0 0;
0 0.16667 -0.16667 0 0 0 0 0;
0 0 2 -2 0 0 0 0;
0 -0.1 -0.0933 -0.14 -4.096 10 -0.7442 -9.1079;
0 0 0 0 0.2 -0.5 0 0;
0 0 0 0 1.3194 0 -1.3889 -0.2778;
0 0.0125 0.0117 0.0175 -0.0506 0 0.0928 -0.1115];
at1=[0 0 0 0 0.6667 0 0 -0.0833]';at2=at1;
d1=[0 0 0 0 0 0 0 10]';d2=d1;
m12=[0 0 0 0 0 0 0 22.2144]';m21=m12;
b1=[1.6 0 0 0 6 0 0 0]';
b2=[2 0 0 0 5 0 0 0]';
f1=at1;f2=at1;A12=[at1;1];A22=0;A32=[-1;-at2];C22=1;A21=[m12' 0];A23=[0 -m21'];
A=[A1 zeros(8,1) at1 zeros(8,9);d1' 0 1 0 zeros(1,8);m12' 0 0 0 -m12';zeros(1,8) 0 -1 0 d2';zeros(8,9) -at2 zeros(8,1) A2];
F=[f1 zeros(8,1);zeros(3,2);zeros(8,1) f2];
B=[b1 zeros(8,1);0 0;0 0;0 0;zeros(8,1) b2];
c1=[0 0.3 0.28 0.42 0 0 0 0;0 0 0 0 -1.52 0 2.78 0.217;0 0 0 0 0 0 0 1];c2=c1;
C=[c1 zeros(3,11); zeros(1,8) 1 0 0 zeros(1,8); zeros(1,9) 1 0 zeros(1,8); zeros(1,10) 1 zeros(1,8);zeros(3,11) c2];
D=zeros(9,2);
q=4;
Wq=[zeros(7,19);zeros(1,7) q zeros(1,11);zeros(1,8) q zeros(1,10); zeros(1,9) q zeros(1,9);zeros(1,10) q zeros(1,8);zeros(7,19);zeros(1,18) q];
Wr=[1 0;0 1];
%The system is expanded based on the inclusion principle.
V=[eye(9) zeros(9,10);zeros(1,9) 1 zeros(1,9);zeros(1,9) 1 zeros(1,9);zeros(9,10) eye(9)];
U=[eye(9) zeros(9,11);zeros(1,9) x1 1-x1 zeros(1,9);zeros(9,11) eye(9)];
Ma=[zeros(9,9) zeros(9,1) zeros(9,1) zeros(9,9);zeros(1,9) (1-x1)*A22 -(1-x1)*A22 zeros(1,9);zeros(1,9) x1*A22 -x1*A22 zeros(1,9);zeros(9,9) zeros(9,1) zeros(9,1) zeros(9,9)];
Mc=[zeros(4,20);zeros(1,9) (1-x1)*C22 -(1-x1)*C22 zeros(1,9);zeros(1,9) -x1*C22 x1*C22 zeros(1,9);zeros(4,20)];
T=[eye(4) zeros(4,5);zeros(1,4) 1 zeros(1,4);zeros(1,4) 1 zeros(1,4);zeros(4,5) eye(4)];
S=[eye(4) zeros(4,6);zeros(1,4) x1 1-x1 zeros(1,4);zeros(4,6) eye(4)];Q=eye(2);
Ak=V*A*U+Ma;Bk=V*B*Q;Ck=T*C*U+Mc;Wqk=V*Wq*U;Wrk=Wr;
Ak1=Ak(1:10,1:10);Ak2=Ak(11:20,11:20);
Bk1=Bk(1:10,1);Bk2=Bk(11:20,2);
Wqk1=Wqk(1:10,1:10);Wqk2=Wqk(11:20,11:20);
Wrk1=1;Wrk2=1;
[K1,P1,E1]=lqr(Ak1,Bk1,Wqk1,Wrk1);
[K2,P2,E2]=lqr(Ak2,Bk2,Wqk2,Wrk2);
Kk=[K1 zeros(1,10);zeros(1,10) K2];
K1=Q*Kk*V;
AA=(A-B*K1)';
BB=A-B*K1;
C=K1'*Wr*K1+Wq;
H=LYAP(AA,BB,C);
J(i,1)=abs(trace(H));
end
Objv=J;
x
gen=0;
while gen<MAXGEN;
FitnV=ranking(Objv);
Selch=Select('sus',chrom,FitnV);
Selch=recombin('xovsp',Selch,0.8);
Selch=mut(Selch,0.001);
for i=1:1:NIND
x(i,1)=1*(phen(i,1)/1023)+0.3;
x1=x(i,1);
A1=[-0.2 0 0 0 0 0 0 -4;
4.75 -5 0 0 0 0 0 0;
0 0.16667 -0.16667 0 0 0 0 0;
0 0 2 -2 0 0 0 0;
0 -0.08 -0.0747 -0.112 -3.994 10 -0.928 -9.1011;
0 0 0 0 0.2 -0.5 0 0;
0 0 0 0 1.3194 0 -1.3889 -0.2778;
0 0.01 0.0093 0.014 -0.0632 0 0.116 -0.1124];
A2=[-0.2 0 0 0 0 0 0 -4;
4.75 -5 0 0 0 0 0 0;
0 0.16667 -0.16667 0 0 0 0 0;
0 0 2 -2 0 0 0 0;
0 -0.1 -0.0933 -0.14 -4.096 10 -0.7442 -9.1079;
0 0 0 0 0.2 -0.5 0 0;
0 0 0 0 1.3194 0 -1.3889 -0.2778;
0 0.0125 0.0117 0.0175 -0.0506 0 0.0928 -0.1115];
at1=[0 0 0 0 0.6667 0 0 -0.0833]';at2=at1;
d1=[0 0 0 0 0 0 0 10]';d2=d1;
m12=[0 0 0 0 0 0 0 22.2144]';m21=m12;
b1=[1.6 0 0 0 6 0 0 0]';
b2=[2 0 0 0 5 0 0 0]';
f1=at1;f2=at1;A12=[at1;1];A22=0;A32=[-1;-at2];C22=1;A21=[m12' 0];A23=[0 -m21'];
A=[A1 zeros(8,1) at1 zeros(8,9);d1' 0 1 0 zeros(1,8);m12' 0 0 0 -m12';zeros(1,8) 0 -1 0 d2';
zeros(8,9) -at2 zeros(8,1) A2];
F=[f1 zeros(8,1);zeros(3,2);zeros(8,1) f2];
B=[b1 zeros(8,1);0 0;0 0;0 0;zeros(8,1) b2];
c1=[0 0.3 0.28 0.42 0 0 0 0;0 0 0 0 -1.52 0 2.78 0.217;0 0 0 0 0 0 0 1];c2=c1;
C=[c1 zeros(3,11);zeros(1,8) 1 0 0 zeros(1,8); zeros(1,9) 1 0 zeros(1,8);zeros(1,10) 1 zeros(1,8);zeros(3,11) c2];
D=zeros(9,2);
q=4;b=0.5;
Wq=[zeros(7,19);zeros(1,7) q zeros(1,11);zeros(1,8) q zeros(1,10); zeros(1,9) q zeros(1,9);zeros(1,10) q zeros(1,8);zeros(7,19);zeros(1,18) q];
Wr=[1 0;0 1];
%The system is expanded based on the inclusion principle.
V=[eye(9) zeros(9,10);zeros(1,9) 1 zeros(1,9);zeros(1,9) 1 zeros(1,9);zeros(9,10) eye(9)];
U=[eye(9) zeros(9,11);zeros(1,9) x1 1-x1 zeros(1,9);zeros(9,11) eye(9)];
Ma=[zeros(9,9) zeros(9,1) zeros(9,1) zeros(9,9);zeros(1,9) (1-x1)*A22 -(1-x1)*A22 zeros(1,9);zeros(1,9) x1*A22 -x1*A22 zeros(1,9);zeros(9,9) zeros(9,1) zeros(9,1) zeros(9,9)];
Mc=[zeros(4,20);zeros(1,9) (1-x1)*C22 -(1-x1)*C22 zeros(1,9);zeros(1,9) -x1*C22 x1*C22 zeros(1,9);zeros(4,20)];
T=[eye(4) zeros(4,5);zeros(1,4) 1 zeros(1,4);zeros(1,4) 1 zeros(1,4);zeros(4,5) eye(4)];
S=[eye(4) zeros(4,6);zeros(1,4) x1 1-x1 zeros(1,4);zeros(4,6) eye(4)];Q=eye(2);
Ak=V*A*U+Ma;Bk=V*B*Q;Ck=T*C*U+Mc;Wqk=V*Wq*U;Wrk=Wr;
Ak1=Ak(1:10,1:10);Ak2=Ak(11:20,11:20);
Bk1=Bk(1:10,1);Bk2=Bk(11:20,2);
Wqk1=Wqk(1:10,1:10);Wqk2=Wqk(11:20,11:20);
Wrk1=1;Wrk2=1;
[K1,P1,E1]=lqr(Ak1,Bk1,Wqk1,Wrk1);
[K2,P2,E2]=lqr(Ak2,Bk2,Wqk2,Wrk2);
Kk=[K1 zeros(1,10);zeros(1,10) K2];
Ka=Q*Kk*V;
AAa=(A-B*Ka)';
BBa=A-B*Ka;
Ca=Ka'*Wr*Ka+Wq;
HH=LYAP(AAa,BBa,Ca);
for m=1:19
if HH(m,m)>=0
JJ(i,1)=abs(trace(HH));
else JJ(i,1)=1000000;
end
end
end
Objvsel=JJ;
[chrom,Objv]=reins(chrom,Selch,1,1,Objv,Objvsel);
gen=gen+1;
end
%x
JJ1 = min(Objv)
for ttt=1:1:size(Objv)
if Objv(ttt)<=JJ1
T11=ttt;break;
end
end
x1=x(T11,1)
t=0:0.01:60;i=length(t);
w1=1*ones(1,i);w2=1*ones(1,i);w=[w1;w2];
sys0=ss(A-B*Ka,F,C,D);
[y0,Ts0,x0]=lsim(sys0,w,t);
%没有对M阵进行寻优的情况:
A1=[-0.2 0 0 0 0 0 0 -4;
4.75 -5 0 0 0 0 0 0;
0 0.16667 -0.16667 0 0 0 0 0;
0 0 2 -2 0 0 0 0;
0 -0.08 -0.0747 -0.112 -3.994 10 -0.928 -9.1011;
0 0 0 0 0.2 -0.5 0 0;
0 0 0 0 1.3194 0 -1.3889 -0.2778;
0 0.01 0.0093 0.014 -0.0632 0 0.116 -0.1124];
A2=[-0.2 0 0 0 0 0 0 -4;
4.75 -5 0 0 0 0 0 0;
0 0.16667 -0.16667 0 0 0 0 0;
0 0 2 -2 0 0 0 0;
0 -0.1 -0.0933 -0.14 -4.096 10 -0.7442 -9.1079;
0 0 0 0 0.2 -0.5 0 0;
0 0 0 0 1.3194 0 -1.3889 -0.2778;
0 0.0125 0.0117 0.0175 -0.0506 0 0.0928 -0.1115];
at1=[0 0 0 0 0.6667 0 0 -0.0833]';at2=at1;
d1=[0 0 0 0 0 0 0 10]';d2=d1;
m12=[0 0 0 0 0 0 0 22.2144]';m21=m12;
b1=[1.6 0 0 0 6 0 0 0]';
b2=[2 0 0 0 5 0 0 0]';
f1=at1;f2=at1;A12=[at1;1];A22=0;A32=[-1;-at2];C22=1;
A=[A1 zeros(8,1) at1 zeros(8,9);d1' 0 1 0 zeros(1,8);m12' 0 0 0 -m12';zeros(1,8) 0 -1 0 d2';zeros(8,9) -at2 zeros(8,1) A2];
F=[f1 zeros(8,1);zeros(3,2);zeros(8,1) f2];
B=[b1 zeros(8,1);0 0;0 0;0 0;zeros(8,1) b2];
c1=[0 0.3 0.28 0.42 0 0 0 0;0 0 0 0 -1.52 0 2.78 0.217;0 0 0 0 0 0 0 1];c2=c1;
C=[c1 zeros(3,11);zeros(1,8) 1 0 0 zeros(1,8); zeros(1,9) 1 0 zeros(1,8);zeros(1,10) 1 zeros(1,8);zeros(3,11) c2];
D=zeros(19,2);
q=4;
Wq=[zeros(7,19);zeros(1,7) q zeros(1,11);zeros(1,8) q zeros(1,10); zeros(1,9) q zeros(1,9);zeros(1,10) q zeros(1,8);zeros(7,19);zeros(1,18) q];
Wr=[1 0;0 1];
%The system is expanded based on the inclusion principle.
V=[eye(9) zeros(9,10);zeros(1,9) 1 zeros(1,9);zeros(1,9) 1 zeros(1,9);zeros(9,10) eye(9)];
b=0.5;
U=[eye(9) zeros(9,11);zeros(1,9) b 1-b zeros(1,9);zeros(9,11) eye(9)];
Ma=[zeros(9,9) zeros(9,1) zeros(9,1) zeros(9,9);zeros(1,9) (1-b)*A22 -(1-b)*A22 zeros(1,9);zeros(1,9) b*A22 -b*A22 zeros(1,9);zeros(9,9) zeros(9,1) zeros(9,1) zeros(9,9)];
Mc=[zeros(4,20);zeros(1,9) (1-b)*C22 -(1-b)*C22 zeros(1,9); zeros(1,9) -b*C22 b*C22 zeros(1,9);zeros(4,20)];
T=[eye(4) zeros(4,5);zeros(1,4) 1 zeros(1,4); zeros(1,4) 1 zeros(1,4);zeros(4,5) eye(4)];
S=[eye(4) zeros(4,6);zeros(1,4) b 1-b zeros(1,4);zeros(4,6) eye(4)];
Q=eye(2);
Ak=V*A*U+Ma;
Bk=V*B*Q;
Ck=T*C*U+Mc;
Wqk=V*Wq*U;
Wrk=Wr;
Ak1=Ak(1:10,1:10);Ak2=Ak(11:20,11:20);
Bk1=Bk(1:10,1);Bk2=Bk(11:20,2);
Wqk1=Wqk(1:10,1:10);Wqk2=Wqk(11:20,11:20);
Wrk1=1;Wrk2=1;
[K1,P1,E1]=lqr(Ak1,Bk1,Wqk1,Wrk1);
[K2,P2,E2]=lqr(Ak2,Bk2,Wqk2,Wrk2);
Kk=[K1 zeros(1,10);zeros(1,10) K2];
eig(Ak-Bk*Kk);
K=Q*Kk*V;
AA=(A-B*K)';
BB=A-B*K;
C=K'*Wr*K+Wq;
H=LYAP(AA,BB,C);
J=abs(trace(H))
t=0:0.01:60;i=length(t);
w1=1*ones(1,i);w2=1*ones(1,i);w=[w1;w2];
sys00=ss(A-B*K,F,C,D);
[y00,Ts00,x00]=lsim(sys00,w,t);
subplot(221),plot(Ts0,x0(:,10),'m',Ts00,x00(:,10),':b'),
title('Pe'),xlabel('t/s');
subplot(222),plot(Ts0,x0(:,8),'m',Ts00,x00(:,8),':b'),
title('f1'),xlabel('t/s');
subplot(223),plot(Ts0,x0(:,19),'m',Ts00,x00(:,19),':b'),
title('f2'),xlabel('t/s');
% subplot(221),plot(Ts0,x0(:,10),'b'),title('Pe'),xlabel('t/s');
% subplot(222),plot(Ts0,x0(:,8),'b'),title('f1'),xlabel('t/s');
% subplot(223),plot(Ts0,x0(:,19),'b'),title('f2'),xlabel('t/s');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -