function [sys,x0,str,ts] = controller_four(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case {2,4,9}
sys=[];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 6*3^4+7;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 2;
sizes.NumInputs = 8;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 0;
sys = simsizes(sizes);
for i=1:6*3^4
x0(i) = 0;
end
for i=6*3^4+1:6*3^4+2 %ep_f
x0(i)=0;
end
for i=6*3^4+3:6*3^4+6 %ep_g
x0(i)=0;
end
%for i=8*3^4+7:8*3^4+8 %ep_p
% x0(i)=0;
%end
x0(6*3^4+7)=5.0; %delta
str = [];
ts = [];
function sys=mdlDerivatives(t,x,u)
global uc ur
yd1=u(1);
yd2=u(2);
dyd1=0.1*cos(t);
dyd2=0.1*cos(t);
ddyd1=-0.1*sin(t);
ddyd2=-0.1*sin(t);
x1=u(3);x2=u(4);
x3=u(5);x4=u(6);
e1=x1-yd1;
e2=x3-yd2;
de1=x2-dyd1;
de2=x4-dyd2;
nmn1=80;nmn2=40;
beta11=nmn1;beta21=nmn2;
v1=beta11*de1-ddyd1;
v2=beta21*de2-ddyd2;
v=[v1 v2]';
xs1=500;
s1=de1+nmn1*e1;
s2=de2+nmn2*e2;
s=[s1 s2]';
%Control law (26)
umm=1;
ungg=0.2;
u1(1)=exp(-1/2*((x(1)+umm)/ungg)^2);
u1(2)=exp(-1/2*(x(1)/ungg)^2);
u1(3)=exp(-1/2*((x(1)-umm)/ungg)^2);
u2(1)=exp(-1/2*((x(2)+umm)/ungg)^2);
u2(2)=exp(-1/2*(x(2)/ungg)^2);
u2(3)=exp(-1/2*((x(2)-umm)/ungg)^2);
u3(1)=exp(-1/2*((x(3)+umm)/ungg)^2);
u3(2)=exp(-1/2*(x(3)/ungg)^2);
u3(3)=exp(-1/2*((x(3)-umm)/ungg)^2);
u4(1)=exp(-1/2*((x(4)+umm)/ungg)^2);
u4(2)=exp(-1/2*(x(4)/ungg)^2);
u4(3)=exp(-1/2*((x(4)-umm)/ungg)^2);
%u5(1)=lishuduhs(s(1),0.6,0.2);
%u5(2)=lishuduhs(s(1),0,0.2);
%u5(3)=lishuduhs(s(1),-0.6,0.2);
%u6(1)=lishuduhs(s(2),0.6,0.2);
%u6(2)=lishuduhs(s(2),0,0.2);
%u6(3)=lishuduhs(s(2),-0.6,0.2);
%u7(1)=lishuduhs(u(7),5,2);
%u7(2)=lishuduhs(u(7),0,2);
%u7(3)=lishuduhs(u(7),-5,2);
%u8(1)=lishuduhs(u(8),5,2);
%u8(2)=lishuduhs(u(8),0,2);
%u8(3)=lishuduhs(u(8),-5,2);
FS1=0;
FS2=zeros(3^4,1);
for L1=1:3
for L2=1:3
for L3=1:3
for L4=1:3
FS2(3^3*(L1-1)+3^2*(L2-1)+3*(L3-1)+L4)=u1(L1)*u2(L2)*u3(L3)*u4(L4);
FS1=FS1+u1(L1)*u2(L2)*u3(L3)*u4(L4);
end
end
end
end
FS=FS2/FS1;
%FS3=0;
%FS4=zeros(3^4,1);
%for L1=1:3
% for L2=1:3
% for L3=1:3
% for L4=1:3
% FS4(3^3*(L1-1)+3^2*(L2-1)+3*(L3-1)+L4)=u5(L1)*u6(L2)*u7(L3)*u8(L4);
% FS3=FS3+u5(L1)*u6(L2)*u7(L3)*u8(L4);
% end
% end
% end
%end
%FS5=FS4/FS3;
w_f1=FS;w_f2=FS;
w_g11=FS;w_g12=FS;
w_g21=FS;w_g22=FS;
%w_p1=FS;w_p2=FS;
thtaf1=x(1:3^4);
thtaf2=x(3^4+1:3^4*2);
thtag11=x(3^4*2+1:3^4*3);
thtag12=x(3^4*3+1:3^4*4);
thtag21=x(3^4*4+1:3^4*5);
thtag22=x(3^4*5+1:3^4*6);
%thtap1=x(3^4*6+1:3^4*7);
%thtap2=x(3^4*7+1:3^4*8);
f1=w_f1'*thtaf1;
f2=w_f2'*thtaf2;
g11=w_g11'*thtag11;
g12=w_g12'*thtag12;
g21=w_g21'*thtag21;
g22=w_g22'*thtag22;
%p1=w_p1'*thtap1;
%p2=w_p2'*thtap2;
ep_f=x(3^4*6+1:3^4*6+2);
ep_g11=x(6*3^4+3);
ep_g12=x(6*3^4+4);
ep_g21=x(6*3^4+5);
ep_g22=x(6*3^4+6);
ep_g=[ep_g11 ep_g12;ep_g21 ep_g22];
%ep_p=x(3^4*8+7:3^4*8+8);
delta=x(3^4*6+7);
F=[f1 f2]';
%P=[p1 p2]';
G=[g11 g12;g21 g22];
k1=100;
k11=100;
b=[0.1 0.1]';
uc=G*(-F-v-k11*s);
ur=s*(abs(s')*(ep_f+ep_g*abs(uc)))/(norm(s)^2+delta);
xite_f1=0.5;
xite_f2=0.5;
xite_g11=0.5;
xite_g12=0.5;
xite_g21=0.5;
xite_g22=0.5;
%xite_p1=0.6;
%xite_p2=0.6;
xite0=0.0001;
%F
for i=1:1:3^4
sys(i)=-xite_f1*w_f1(i)*s(1);
end
for i=3^4+1:1:2*3^4
sys(i)=-xite_f2*w_f2(i-3^4)*s(2);
end
%G
for i=2*3^4+1:1:3*3^4
sys(i)=-xite_g11*w_g11(i-2*3^4)*s(1)*(uc(1)-k1*s(1));
end
for i=3*3^4+1:1:4*3^4
sys(i)=-xite_g12*w_g12(i-3*3^4)*s(1)*(uc(2)-k1*s(2));
end
for i=4*3^4+1:1:5*3^4
sys(i)=-xite_g21*w_g21(i-4*3^4)*s(2)*(uc(1)-k1*s(1));
end
for i=5*3^4+1:1:6*3^4
sys(i)=-xite_g22*w_g22(i-5*3^4)*s(2)*(uc(2)-k1*s(2));
end
%for i=6*3^4+1:1:7*3^4
% sys(i)=-xite_p1*w_p1(i-6*3^4)*s(1);
%end
%for i=7*3^4+1:1:8*3^4
% sys(i)=-xite_p2*w_p1(i-7*3^4)*s(2);
%end
gama0=0.001;
%ep_f
sys(6*3^4+1)=gama0*(abs(s(1))); %ep_f1
sys(6*3^4+2)=gama0*(abs(s(2))); %ep_f2
%ep_g
sys(6*3^4+3)=gama0*(abs(s(1)))*abs(uc(1)); %ep_g11
sys(6*3^4+4)=gama0*(abs(s(1)))*abs(uc(2)); %ep_g12
sys(6*3^4+5)=gama0*(abs(s(2)))*abs(uc(1)); %ep_g21
sys(6*3^4+6)=gama0*(abs(s(2)))*abs(uc(2)); %ep_g22
%ep_p
%sys(8*3^4+7)=gama0*(abs(s(1))); %ep_p1
%sys(8*3^4+8)=gama0*(abs(s(2))); %ep_p2
%delta
%ace=norm(s)^2+delta;
sys(6*3^4+7)=-xite0*(abs(s')*(ep_f+ep_g*abs(uc)))/(norm(s)^2+delta);
function sys=mdlOutputs(t,x,u)
global uc ur
if t==0
uc=zeros(2,1);
ur=zeros(2,1);
end
ut=uc+ur;
sys(1)=ut(1);
sys(2)=ut(2);
matlab_模糊控制技术轨迹跟踪问题,利用simulink搭建仿真系统进行了仿真
版权申诉
5星 · 超过95%的资源 118 浏览量
2022-06-14
08:23:54
上传
评论 3
收藏 11KB ZIP 举报
wouderw
- 粉丝: 278
- 资源: 2959
最新资源
- ZPM vscode 插件
- 员工注册登录原型集(xmind书写)
- SM2302NSAC-TRG-VB一款SOT23封装N-Channel场效应MOS管
- 用于订阅 google reader 的 rss 的 Chrome 扩展程序
- 电脑端浏览器插件-车牌号自编助手
- 北京邮电大学计网实验-模拟数据链路层的滑动窗口协议源码+文档说明.zip
- Java经典面试 100问,可以给面试党们去背,里面答案都是经过反复查询和推敲的 希望能帮到你们
- [练习题+答案]Harmony OS应用开发者高级认证
- WPS2019专业增强版-v11.8.2.10972-中石油定制版
- SI9959DY-T1-E3-VB一款SOP8封装2个N-Channel场效应MOS管
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈