资源简介

用MATLAB编写的云模型,结合PID控制比较,证明方法的有效性

资源截图

代码片段和文件信息

 function [sysx0strtssimStateCompliance] = cloud2013(txuflag)

switch flag
% Initialization %
  case 0
    [sysx0strtssimStateCompliance]=mdlInitializeSizes;
% Derivatives %
  case 1
    sys=mdlDerivatives(txu);
% Update %
  case 2
    sys=mdlUpdate(txu);
% Outputs %
  case 3
    sys=mdlOutputs(txu);
% GetTimeOfNextVarHit %
  case 4
    sys=mdlGetTimeOfNextVarHit(txu);
% Terminate %
  case 9
    sys=mdlTerminate(txu);
% Unexpected flags %
  otherwise
    DAStudio.error(‘Simulink:blocks:unhandledFlag‘ num2str(flag));
end

function [sysx0strtssimStateCompliance]=mdlInitializeSizes %case 0
sizes = simsizes;

sizes.NumContStates  = 0;   %连续状态的数量
sizes.NumDiscStates  = 0;   %离散状态的数量
sizes.NumOutputs     = 1;   %输出的数量
sizes.NumInputs      = 1;   %输入的数量
sizes.DirFeedthrough = 1;   %直接贯通标志
sizes.NumSampleTimes = 1;   % 采样时间的数量
sys = simsizes(sizes);
x0  = [];
str = [];%总是空
ts  = [-1 0];
simStateCompliance = ‘UnknownSimState‘;
function sys=mdlDerivatives(txu) %case 1

sys = [];
function sys=mdlUpdate(txu) %case 2

sys = [];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
function sys=mdlOutputs(txu) %case 3
%%  一维前件云发生器
% 输入:(期望Ex,熵En,超熵He,特定值a)
% 输出:(特定值a的确定度,即云滴a纵坐标对应的确定度)
% u=0.1;

ap=u;aq=u;am=u;
Exp=-1;Enp=1/3;Hep=0.01;
En1p=norm(EnpHep^2);                  %第一条云曲线
uoutp=exp(-((ap-Exp)^2)/(2*(En1p)^2));

Exq=0;Enq=1/4;Heq=0.01;
En1q=norm(EnqHeq^2);                 %第二条云曲线
uoutq=exp(-((aq-Exq)^2)/(2*(En1q)^2));

Exm=1;Enm=1/3;Hem=0.01;
En1m=norm(EnmHem^2);                 %第三条云曲线
uoutm=exp(-((am-Exm)^2)/(2*(En1m)^2));

temp_uout=[uoutp uoutq uoutm];
% temp_uout2=sort(temp_uout);            %将三个确定度排序,选出最大的确定度
uouta=temp_uout(1);
uoutb=temp_uout(2);
uoutc=temp_uout(3);
%% 后件云发生器
% 输入:(期望值Ex熵En,超熵He,确定度uout)
% 输出: 具有确定度u的云滴b
Ex_x=-1;En_x=1/3;He_x=0.01;%uouta=uouta;
En1_x=norm(En_xHe_x^2);
temp0=log(uouta);                         %第a条云曲线
temp1=sqrt(-2*temp0);
b0_x=Ex_x-En1_x*temp1;
b1_x=Ex_x+En1_x*temp1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Ex_y=0;En_y=1/4;He_y=0.01;%uouta=uouta;
En1_y=norm(En_yHe_y^2);
temp0=log(uoutb);                        %第b条云曲线
temp1=sqrt(-2*temp0);
b0_y=Ex_y-En1_y*temp1;
b1_y=Ex_y+En1_y*temp1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Ex_z=1;En_z=1/3;He_z=0.01;%uouta=uouta;
En1_z=norm(En_zHe_z^2);
temp0=log(uoutc);                        %第c条云曲线
temp1=sqrt(-2*temp0);
b0_z=Ex_z-En1_z*temp1;
b1_z=Ex_z+En1_z*temp1;

ccc=[uouta b0_x b1_x;
     uoutb b0_y b1_y;
     uoutc b0_z b1_z;];
ccc=sortrows(ccc);
cccx1=[ccc(22) ccc(23)];
% cccx1=sort(cccx1);
cccx2=[ccc(32) ccc(33)];
% cccx2=sort(cccx2);
drop_x1=[cccx1(1) ccc(21)];
drop_x2=[cccx2(2) ccc(31)];
Ex_out_fenzi=drop_x1(1)*sqrt(-2*log(drop_x2(2)))+drop_x2(1)*sqrt(-2*log(drop_x1(2)));
Ex_out_fenmu=sqrt(-2*log(drop_x1(2)))+sqrt(-2*log(drop_x2(2)));
Ex_out=(Ex_out_fenzi)/(Ex_out_fenmu)

sys = Ex_out;

%%%%%%%%%%%%%%

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3413  2013-06-16 20:29  yun\cloud2013.m

     文件      39619  2013-06-16 22:03  yun\cloud_pid_meng.mdl

     文件      39684  2013-06-16 20:33  yun\cloud_pid_meng.mdl.autosave

     目录          0  2014-03-13 20:30  yun

----------- ---------  ---------- -----  ----

                82716                    4


评论

共有 条评论