|
1. elseif k~=0&&l~=0
temp=min(b2,max(a1,b1));
T1=normcdf(temp,0,1);
temp=max(b1,max(a2,b2)); OR temp=max(b1,min(a2,b2));是后面这个,就是您写在程序里面的那个,我当时大意了,嘿嘿!!
2.a1=(k-i-0.5)*w*(log(1+250*(m+l*q)^2+2.332.....
a2=(k-i+0.5)*w*(log(1+250*(m+l*q)^2+2.332.....
这里面涉及到adaptive CUSUM控制图改进过程中的一个公式,就是h(k)=log(1+2*k^2*ARL0+2.332*k)/(2*k)-1.166,程序里面的k=(m+l*q)/2,我令ARL0=400,我把这个2*k^2*ARL0公式中的平方提出来,稍微化简了一下,就出现了250,其实可以表示为1000*((m+l*q)/2)^2.下面我又改了一下,
我放进去的程序是
function y=ARL(w,m,q,p)
m1=17;m2=25;
R=zeros(m1*m2,m1*m2);
for i=0:1:m1-1
for j=0:1:m2-1
for k=0:1:m1-1
for l=0:1:m2-1
h=(m+l*q)/2;
aa=log10(1+2*h*h*400+2.332*h)/(2*h)-1.166;
a1=(k-i-0.5)*w*aa+h;
a2=(k-i+0.5)*w*aa+h;
b1=(m+(l-0.5)*q-(1-p)*(m+j*q))/p;
b2=(m+(l+0.5)*q-(1-p)*(m+j*q))/p;
if k==0&&l==0
temp=min(a2,b2);
T=normcdf(temp,0,1);
R(i*m2+(j+1),k*m2+(l+1))=T;
end
if k==0&&l~=0
temp=b1;
T1=normcdf(temp,0,1);
temp=max(b1,min(a2,b2));
T2=normcdf(temp,0,1);
R(i*m2+(j+1),k*m2+(l+1))=T2-T1;
end
if k~=0&&l==0
temp=a1;
T1=normcdf(temp,0,1);
temp=max(a1,min(a2,b2));
T2=normcdf(temp,0,1);
R(i*m2+(j+1),k*m2+(l+1))=T2-T1;
end
if k~=0&&l~=0
temp=min(b2,max(a1,b1));
T1=normcdf(temp,0,1);
temp=max(b1,min(a2,b2));
T2=normcdf(temp,0,1);
R(i*m2+(j+1),k*m2+(l+1))=T2-T1;
end;
end;
end;
end;
end;
PM=0*ones(1,m1*m2);
PM(212)=1;
y=PM*inv(eye(m1*m2,m1*m2)-R)*ones(m1*m2,1);
程序里面这个PM初始状态矩阵我不知道选择的对不对,我设置的参数为y=ARL(0.06455,1,0.12245,0.1)。
也就是控制限c为1.065,δmin最小值设为1,Qt的控制限L设为4,l设为0.1,
然后计算出来的 w=2*c/(2*m1-1=)0.06455;
δmin=1;
q=2*(L-δmin)/(2m2-1)=0.122245
l=0.1
算出来的结果很小,是不是漏掉了什么啊,是不是还和那个Q0有关啊,我看了关于adaptive CUSUM的那篇英文文献,也没看出哪里的问题,想麻烦您再给看一下,一直麻烦您,我都不知道说什么好了,谢谢您啦!!!
|