###### WYsYl.TMV ######
###### Test - Junio 2018 ######
source('~/Doctorado-EyO/Tesis Doctorado/Script R/GaugeSPCFunctions.R', encoding = 'UTF-8')
### Optimización esquemas wYsYl (FSS-VSS-DS-EWMA)
# Parametros del proceso bajo control
mu<-10; sig<-1; skew<-0; dist<-"norm"
#Parametros diseño Grafico de Control
n<-7; delta<-0.6; r=1; ARL0obj=370
#Parametro Adicionales para VSS - DS -EWMA.
n.max<-2*n; opt=1; m.max=1000
ARL.ref=ARLXS(n,1/ARL0obj,delta,r)
#Parametors para algoritmo genetico.
w1<-1 ; w2 <-200; w3<-100 # pesos de las 3 componentes de la funcion fitness
pm<-2;pmix<-3;pd<-1
q.min<-0.01
if(delta==0){q.max<-0.30}else{q.max=0.65}
w.min<-(-2);w.max<-1
###Optimización
Opt.YsYl(n,delta,r,ARL0obj,"YT",mu,sig,dist,skew)
Opt.YsYl(n,delta,r,ARL0obj,"Ys-Yl",mu,sig,dist,skew)
Opt.YsYl(n,delta,r,ARL0obj,"YsYl",mu,sig,dist,skew)
Opt.YsYl(n,delta,r,ARL0obj,"wYsYl",mu,sig,dist,skew)
Opt.MDYsYl(n,delta,r,ARL0obj,"wYsYl",mu,sig,dist,skew,pm,pmix,pd)
Opt.MDYsYl(n,delta,r,ARL0obj,"DSYsYl",mu,sig,dist,skew,pm,pmix,pd)
GA.D2YsYl(n,delta,r,ARL0obj,mu,sig,dist,skew,mobj=F)
#Opt.wYSYL.TMV(n,delta,r,ARL0obj,n.max,mu,sig,dist,skew)
#Opt.wYSYL.DS(n,delta,r,ARL0obj,F.w=NA,n.max,mu,sig,dist,skew)
GA.wYsYlTMV(n,delta,r,ARL0obj,mu,sig,dist,skew,maxiter=800,n2.max=n.max,F.Lc1=1.05,F.w=-1,F.n1=NA,fit=2)
GA.wYsYlDS(n,delta,r,ARL0obj,mu,sig,dist,skew,maxiter=800,n.max=n.max,F.Lc1=T,F.w=NA,F.n1=NA,fit=2)
GA.wYsYlEWMA(n,delta,r,ARL0obj,mu,sig,dist,skew,100,F.w=-1,fit=2)
############Verificación de un plan , simulación vs calculo###########
it<-50000
####Comparacion wYSYL
n<-10 ; LC<-4 ; w=-1; q=0.5710;
c(ARLwYsYl(n,LC,w,q/2,q/2),ARLwYsYl(n,LC,w,qd[1],qd[2]))
c(SARLwYsYl(n,LC,w,q,0,1,mu,sig,dist,skew,it)[1],SARLwYsYl(n,LC,w,q,delta,r,mu,sig,dist,skew,it)[1])
####Comparacion wYSYL.TMV- stady state
n1=5; n2=15; Lc1=1.09; Lw=0.3; Lc2=0.5; w=-1; q=0.5710
ARLwYsYl.TMV(n1,n2,Lc1,Lw,Lc2,w,q,delta,r,mu,sig,dist,skew)
c(SARLwYsYl.TMV(n1,n2,Lc1,Lw,Lc2,w,q,0,1,mu,sig,dist,skew,it)[1:2],SARLwYsYl.TMV(n1,n2,Lc1,Lw,Lc2,w,q,delta,r,mu,sig,dist,skew,it)[c(1,4)])
####Comparacion wYSYL.DS -steady state
n0=5;
n1=3; n2=10; Lw=2; Lc1=2; Lc2=7.41;w=-0.35;
q=Root.wYSYL.DS(w, n1, n2, n0, Lw, Lc1, tol=0.001,maxiter=100)[1]
ARLwYsYl.DS(n1,n2,Lc1,Lw,Lc2,w,q,delta,r,mu,sig,dist,skew)
c(SARLwYsYl.DS(n1,n2,Lc1,Lw,Lc2,w,q,0,1,mu,sig,dist,skew,it)[1:2],SARLwYsYl.DS(n1,n2,Lc1,Lw,Lc2,w,q,delta,r,mu,sig,dist,skew,it))
####Comparacion wYSYL.EWMA - Zero state
Lim=2.878;w=-1;lambda=0.17;q=0.36302
ARLwYsYl.EWMA(n,Lim,w,lambda,q,delta,r,opt,mu,sig,dist,skew,image=T)
c(SARLwYsYl.EWMA(n,Lim,w,lambda,q,0,1,opt,mu,sig,dist,skew,it)[1],SARLwYsYl.EWMA(n,Lim,w,lambda,q,delta,r,opt,mu,sig,dist,skew,it)[1])
####Comparacion wYSYL.EWMA - Zero state
n=3; Lim=0.312 ;w=0.71;lambda=0.05;q=0.00309;delta=0.2;r=1;mu=10;sig=1;dist="norm";skew=0;opt=1;
it=10
ARLwYsYl.EWMA(n,Lim,w,lambda,q,delta,r,opt,mu,sig,dist,skew,image=F)
c(SARLwYsYl.EWMA(n,Lim,w,lambda,q,0,1,opt,mu,sig,dist,skew,it)[1],SARLwYsYl.EWMA(n,Lim,w,lambda,q,delta,r,opt,mu,sig,dist,skew,it)[1])
##############################################################################
# Prueba Algortimo Búsqueda Total wYsYl.TMV - Febrero 2017
##############################################################################
h<-function(ARL0,w,n0, n1, n2, LW1, LW2, LC1, LC2,q){
fact.n1<-factorial(n1)
fact.n2<-factorial(n2)
qs<-q/2; ql<-q/2
p11=0; p12=0
for (s in 0:n1){
fact.s<-factorial(s)
for (l in 0:(n1-s)){
cte<-(fact.n1/(fact.s*factorial(l)*factorial(n1-s-l)))
if (((w*s+l)<LW1)&((s+w*l)<LW1)){p11 = p11 + cte*(qs^s)*(ql^l)*((1-qs-ql)^(n1-s-l))}
else if(((w*s+l)<LC1)&((s+w*l)<LC1)){p12 = p12 + cte*(qs^s)*(ql^l)*((1-qs-ql)^(n1-s-l))}
}
}
p21=0; p22=0
for (s in 0:n2){
fact.s<-factorial(s)
for (l in 0:(n2-s)){
cte<-(fact.n2/(fact.s*factorial(l)*factorial(n2-s-l)))
if (((w*s+l)<LW2)&((s+w*l)<LW2)){p21 = p21 + cte*(qs^s)*(ql^l)*((1-qs-ql)^(n2-s-l))}
else if(((w*s+l)<LC2)&((s+w*l)<LC2)){p22 = p22 + cte*(qs^s)*(ql^l)*((1-qs-ql)^(n2-s-l))}
}
}
p1= (1-p22)/(1-p22+p12)
n=p1*n1+(1-p1)*n2
ARL=(1-p11+p21+p1*(p11+p12-p21-p22))/((1-p11)*(1-p22)-p21*p12)
f.p1= ((n/n0)-1)^2
f.ARL<-((ARL/ARL0)-1)^2
f.glob<-f.p1+f.ARL
return(c(f.glob,f.p1,f.ARL))
}
Root.wYSYL.TMV<-function(ARL0, w, n0, n1, n2, LW1, LW2, LC1, LC2,tol=0.001,maxiter=100){
R=(sqrt(5)-1)/2; qmin=0.01;qmax=0.7 #Golde search, busca el minimo de la funcion de perdida (restricciones)
k=0
repeat{
k=k+1
hmax=h(ARL0,w, n0, n1, n2, LW1, LW2, LC1, LC2,qmax)[1]
if(hmax<0.7|k==7){qmax=qmax+0.1;break}else{qmax=qmax-0.1}
}
q1=qmax-R*(qmax-qmin);q2=qmin +R*(qmax-qmin)
h1=h(ARL0,w, n0, n1, n2, LW1, LW2, LC1, LC2,q1)[1]
h2=h(ARL0,w, n0, n1, n2, LW1, LW2, LC1, LC2,q2)[1]
hmin=h(ARL0, w,n0, n1, n2, LW1, LW2, LC1, LC2,qmin)[1]
if((hmin<h1)&(hmax<h2)){qopt=NA;hopt=NA}
else{
repeat{
k=k+1
if(h1<h2){
hopt=h1
qopt=q1
qmax=q2
q2=q1;h2=h1
q1=qmax-R*(qmax-qmin)
h1=h(ARL0,w, n0, n1, n2, LW1, LW2, LC1, LC2,q1)[1]
}
else{
hopt=h2
qopt=q2
qmin=q1
q1=q2;h1=h2
q2=qmin +R*(qmax-qmin)
h2=h(ARL0,w, n0, n1, n2, LW1, LW2, LC1, LC2,q2)[1]
}
if ((R*(qmax-qmin)/qopt)<=tol|k>=maxiter){break}
}}
return(c(qopt,hopt,k,(R*(qmax-qmin)/qopt)))
}
Opt.wYSYL.TMV<-function(n0,delta,r,ARLdes,n.max=4*n0,mu=10,sig=1,dist="norm",skew=0){
t <- proc.time()
par<-c(n,delta,r,ARL0obj)
names(par)<-c("n","delta","r","ARL.0 deseado")
prec.w<-0.1; w.min<-(-2.0)
Omega.w<-c(1,-1,0,seq(1-prec.w,prec.w,-prec.w),seq(-prec.w,-1+prec.w,-prec.w),seq(-1-prec.w,w.min,-prec.w)) #k
ARL1.min=ARLdes
delta.ARL1<-2 ; delta.n<-0.1
cr<-0 #cuenta el número de raices halladas, soluciones factibles.
for(w in Omega.w){
for (n1 in (1:(n0-1))){
Omega.Lw1<-(Genera.LC(w,n1)-0.001)/n1
for(n2 in ((n0+1):n.max)){
Omega.Lw2<-(Genera.LC(w,n2)-0.001)/n2
L<-sort(unique(c(Omega.Lw1,Omega.Lw2)))
Omega.Lw<-L[L<1]
for(Lw in Omega.Lw){#no puede lw=1,1.05
Omega.Lc1<- c(Omega.Lw[Omega.Lw>Lw],1,1.05)
for(Lc1 in Omega.Lc1){##desde el proximo valor a lw hasta 1.05
Omega.Lc2<-Omega.Lc1[-length(Omega.Lc1)]
for(Lc2 in Omega.Lc2){##desde el proximo valor a lw hasta 1. 1.05 solo para n1
Root<-Root.wYSYL.TMV(ARLdes,w,n0, n1, n2, Lw*n1, Lw*n2, Lc1*n1, Lc2*n2)
if(is.na(Root[1])==F&&Root[2]<=(0.05^2)){
sol<-ARLwYsYl.TMV(n1,n2,Lc1,Lw,Lc2,w,Root[1],delta,r)
if((sol[1]> (ARLdes-delta.ARL1))&(sol[2]<=(n0+delta.n))){
cr<-cr+1 #Solucion factible
# print(c(cr,Root[1],w,n1,n2,Lc1,Lw,Lc2,sol[1:3])) Imprime la solucion factible
if(sol[4]<ARL1.min){
ARL1.min<-sol[4]
Opt<-c(n1,n2,Lc1,Lw,Lc2,w,Root[1],sol)
}}
}
}
}
}
}
}
}
t <- proc.time()-t
print(par)
print("_________________________________")
print(paste("Tiempo de ejecucion: ", round(t[3],2), " Segundos"))
Opt[8:12]<-ARLwYsYl.TMV(Opt[1],Opt[2],Opt[3],Opt[4],Opt[5],Opt[6],Opt[7],delta,r,mu,sig,dist,skew)
salida<-c(Opt,cr)
names(salida)<-c("n1","n2","Lc1","Lw","Lc2","w","q","ARL0","E(n)0","ANOS0","ARL1","ANOS1","#sol")
return(salida)
}
#####Grafico prueba para verificar que la raiz es hallada
q<-seq(0.01,6,0.005)
prueb=0
for(i in 1:length(q)){
prueb[i]<- h(ARL0,w, n0, n1, n2, LW1, LW2, LC1, LC2,q[i])[1]
}
x11()
plot(q,prueb,type="l",xlim=c(0.01,1),ylim=c(0,2))
abline(h=0)
abline(v=2.997874e-01)
q[prueb==min(prueb)]
###################################################################
#####grafico de la de distribución de wYSYL
###################################################################
w=0.33
n=30
q=0.3
delta=0.5; r=1
qs=ql=q/2
x11()
#○par(mfrow=c(2,1))
Dist<-pwYSYL(w,n,q/2,q/2)
plot(Dist[,1],Dist[,2],type="h", xlab=expression(w*Y[S]*Y[L]),ylab="Probabilidad")
text(0.8*n, 0.8*max(Dist[,2]),paste("(n = ",n, "; w = ",w,"q = ",qs+ql,")"),cex=1.3)
qd=convnorm(delta,r,q)
Dist<-pwYSYL(w,n,qd[1],qd[2])
points(Dist[,1],Dist[,2],type="h", col="red")
##########################Validación óptimos con genético########################
##se alimenta con tabla de parametros xls
###verificando arl0 y nprom, se toman 12 columnas
param<-read.table("clipboard",header=F,sep="\t",dec=",")
res<-matrix(0,ncol=6,nrow=nrow(param))
for (i in 1:nrow(param)){
n1<-param[i,11]; n2<-param[i,12]
Lc1<-param[i,7];Lc2<-param[i,8];LW<-param[i,9];
w<-param[i,10];q<-param[i,6]
delta<-param[i,5];r<-param[i,4];
res[i,]<-ARLwYsYl.DS(n1,n2,Lc1,LW,Lc2,w,q,delta,r,mu=10,sig=1,dist="norm")
}
res
write.table(res,"res.txt")
#######################probando óptimo entre filas
res<-matrix(0,ncol=nrow(param),nrow=nrow(param))
for (i in 1:nrow(param)){
n1<-param[i,11]; n2<-param[i,12]
Lc1<-param[i,7];Lc2<-param[i,8];LW<-param[i,9];
w<-param[i,10];q<-param[i,6]
for(j in 1:nrow(param)){
delta<-param[j,5];r<-param[j,4];
res[j,i]<-ARLwYsYl.DS(n1,n2,Lc1,LW,Lc2,w,q,delta,r,mu=10,sig=1,dist="norm")[4]
}
}
ind<-1:ncol(res)
res<-cbind(res,rep(0,nrow(res)))
for(i in 1:nrow(res)){
res[i,ncol(res)]<-min(ind[min(res[i,-ncol(res)])==res[i,-ncol(res)]])
}
res
#########################Calculando los ARL1 optimos para wYSYL, para contraste
param<-read.table("clipboard",header=F,sep="\t",dec=",")
ARL1<-0
for(i in 1:nrow(param)){
n<-param[i,3];ARLdes<-param[i,2]
delta<-param[i,5];r<-param[i,4];
ARL1[i] <-Opt.YSYL(n,delta,r,ARLdes,"wYSYL",mu=10,sig=1,gam=0,dist="norm")[5]
}
param<-cbind(param,ARL1)
write.table(param,"ARL.txt")
####dibujando ARL1 para los esquema óptimos
n<-10; ARLdes<-370
param<-read.table("clipboard",header=F,sep="\t",dec=",")
delta<-seq(0,2.5,0.05)
r<-seq(1,2.5,0.02)
curv="mean"
x11()
par(mfrow=c(1,2))
tit<-paste("n1","n2","Lc1","LW","Lc2","q","w",collapse=",",sep=" ; ")
leg<-"a"
parwYsYl<-Opt.YsYl(n,delta[2],r[2],ARLdes,"wYsYl",mu=10,sig=1,gam=0,dist="norm")[2:4]
for (i in 1:nrow(param)){#Escala Original ARL
q<-param[i,1]
Lc1<-param[i,2];Lc2<-param[i,3];LW<-param[i,4];
w<-param[i,5];
n1<-param[i,6]; n2<-param[i,7]
CARL<-CARLwYsYl.TMV(n1,n2,Lc1,LW,Lc2,w,q,delta,r,curve=curv,mu=10,sig=1,gamma=0,dist="norm")
leg[i]<-paste(n1,n2,Lc1,LW,Lc2,q,w,collapse=",",sep=" ; ")
if(i==1){
plot(CARL[,1],CARL[,2],type="l",axes=F,xlab="",ylab="",ylim=c(0,max(CARL[,2])),lwd=2)
axis(1,at=seq(min(CARL[,1]),max(CARL[,1]),0.2),labels=seq(min(CARL[,1]),max(CARL[,1]),0.2),pos=0,cex.axis=1.5)
axis(2,c((0:5)*100),c((0:5)*100), pos=min(CARL[,1]),cex.axis=1.5)
mtext("ARL",2,line=1.5,cex=1.5)
if (curv=="mean"){mtext(expression(delta),1,line=1,cex=1.5)}else{mtext(expression(italic("r")),1,line=1.5,cex=1.5)}
}
else{
lines(CARL[,1],CARL[,2],lty=i,lwd=2)
}
}
legend(min(CARL[,1])+0.4,200,leg,bty="n",lty=1:nrow(param),lwd=2,title=tit,title.adj=0.25,cex=1)
CARL<-CARLwYsYl(n,parwYsYl[1],parwYsYl[2],parwYsYl[3],delta,r,curve=curv,mu=10,sig=1,gamma=0,dist="norm")
lines(CARL[,1],CARL[,2],lty=1,lwd=2, col="red")
for (i in 1:nrow(param)){ #Escala Logaritmica
q<-param[i,1]
Lc1<-param[i,2];Lc2<-param[i,3];LW<-param[i,4];
w<-param[i,5];
n1<-param[i,6]; n2<-param[i,7]
CARL<-CARLwYsYl.TMV(n1,n2,Lc1,LW,Lc2,w,q,delta,r,curve=curv,mu=10,sig=1,gamma=0,dist="norm")
if(i==1){
plot(CARL[,1],log(CARL[,2]),type="l",axes=F,xlab="",ylab="",ylim=c(0,log(max(CARL[,2]))),lwd=2)
axis(1,at=seq(min(CARL[,1]),max(CARL[,1]),0.2),labels=seq(min(CARL[,1]),max(CARL[,1]),0.2),pos=0,cex.axis=1.5)
axis(2,-1:10,-1:10, pos=min(CARL[,1]),cex.axis=1.5)
mtext("Log(ARL)",2,line=1.5,cex=1.5)
if (curv=="mean"){mtext(expression(delta),1,line=1,cex=1.5)}else{mtext(expression(italic("r")),1,line=1.5,cex=1.5)}
}
else{
lines(CARL[,1],log(CARL[,2]),lty=i,lwd=2)
}
}
legend(min(CARL[,1])+0.4,200*log(max(CARL[,2]))/max(CARL[,2]),leg,bty="n",lty=1:nrow(param),lwd=2,title=tit,title.adj=0.25,cex=1)
CARL<-CARLwYsYl(n,parwYsYl[1],parwYsYl[2],parwYsYl[3],delta,r,curve=curv,mu=10,sig=1,gamma=0,dist="norm")
lines(CARL[,1],log(CARL[,2]),lty=1,lwd=2, col="red")
###########grafico de control wYSYL - DS --- esquema general
CL1=5.5; CL2=7.5 ; WL=3
X1=c(2, 3, 7, 5)
X2=c(NA,6,NA,9)
#jpeg("Figure1.jpeg")
x11()
plot(-1,-1,ylim=c(0,15),xlim=c(0.5,4),yaxt="n",xaxt="n",ylab="", xlab=expression("Time"),cex.axis=1.2,cex.lab=1.4)
points(1:length(X1),X1,pch=c(20,1,15,1),cex=1.7)
lines(1:length(X1),X1,lw=2)
points(c(2,4),X2[c(2,4)],pch=c(20,15),cex=1.7)
abline(h=c(WL,CL1,CL2),lty=c(2,1,1),lw=3)
lines(c(2,2),c(X1[2],X2[2]),lty=2,lwd=2)
lines(c(4,4),c(X1[4],X2[4]),lty=2,lwd=2)
text(0.65,CL1+0.5,expression(italic("UCL")^"I"),cex=1.3)
text(0.65,CL2+0.5,expression(italic("UCL")^"II"),cex=1.3)
text(0.65,WL+0.5,expression(italic("WL")),cex=1.3)
mtext(expression(italic("Max")(italic("wY")[S]+italic("Y")[L],italic("Y")[S]+italic("wY")[L])),2,line=1.5,cex=1.4,las=0)
axis(1,at=1:4,labels=c("A","B","C","D"),cex=1.4)
legend(2.5,14,c("In control"," 2nd Stage Required","Out of control"),title=expression(bold("Process Diagnosis")),pch=c(20,1,15),bty="n")
###########grafico de control wYSYL - DS --- ejemplo
n1=5; n2= 7 ; w=0; q= 0.1630; CL1=5.5; CL2=5 ; WL=2
mu<-4
sigma<-0.3; delta=1.0 ; r=1.4
k = -qnorm(q/2)
S=mu-k*sigma; L=mu+k*sigma
q1= c(pnorm((-k-delta)/r),1-pnorm((-k+delta)/r))
#X0<-matrix(rnorm(10*(n1+n2),mu,sigma),nrow=n1+n2,ncol=10)
#X1<-matrix(rnorm(1*(n1+n2),mu+delta*sigma,sigma*r),nrow=n1+n2,ncol=1)
#X<-cbind(X0,X1)
#write.table(X,"Xsample.txt") guardado en carpeta del articulo
setwd("~/Doctorado-EyO/Tesis Doctorado/2. Grafico wYSYL-TMV/Articulo -versiones")
X<-read.table("Xsample.txt")
X[,4]<-X[,1]
X[,1]<-X[,3]
X[,7]<-X[,2]
YS1<-0 ;YL1<-0
YST<-0 ;YLT<-0
WYSYL1<-0; WYSYLT<-0
pc=c(4,13,19)
pc=c(20,1,15)
#jpeg("Figure3.jpeg")
x11()
plot(-1,-1,ylim=c(0,n1+n2),xlim=c(1,ncol(X)),yaxt="n",ylab="", xlab=expression("Time"),cex.axis=1.2,cex.lab=1.4)
abline(h=c(WL,CL2),lty=c(2,1),lw=3)
for(j in 1:ncol(X)){
YS1[j]<-sum(X[1:n1,j]<S) ;YL1[j]<-sum(X[1:n1,j]>L)
WYSYL1[j]<-max(w*YS1[j]+YL1[j],YS1[j]+w*YL1[j])
pc1=pc[1]
if(WYSYL1[j]<WL){WYSYLT[j]<-NA}
else{
pc1=pc[2]
pc2=pc[1]
YST[j]<-sum(X[,j]<S) ;YLT[j]<-sum(X[,j]>L)
WYSYLT[j]<-max(w*YST[j]+YLT[j],YST[j]+w*YLT[j])
if(WYSYLT[j]>=CL2){pc2=pc[3]}
points(j,WYSYLT[j],pch=pc2,cex=1.7)
lines(c(j,j),c(WYSYL1[j],WYSYLT[j]),lty=2,lwd=2)
}
points(j,WYSYL1[j],pch=pc1,cex=1.7)
}
lines(1:ncol(X),WYSYL1,lw=2)
text(2,CL2+0.5,expression(italic("UCL")^"II" == 5),cex=1.3)
text(2,WL+0.5,expression(italic("WL") == 2),cex=1.3)
mtext(expression(italic("Max")(italic("Y")[S],italic("Y")[L])),2,line=1.5,cex=1.7,las=0)
legend(7.5,11,c("In control"," 2nd Stage Required","Out of control"),title=expression(bold("Process Diagnosis")),pch=pc,bty="n")
dev.off()
#########################EWMA WYSYL ############################################
ARLs<-c(SARLwYsYl.EWMA(n,LC,w,lambda,q,0,1,opt,mu,sig,dist,skew,it=30000)[1],SARLwYsYl.EWMA(n,LC,w,lambda,q,delta,r,opt,mu,sig,dist,skew,it=30000)[1])
mp=c(10,20,30,50,75,100,150,200,250,300,400,450,500,550,600,800,1000,2000,4000,6000,8000)
ARLc<-matrix(0,ncol=2,nrow=length(mp))
i=0
for(m in mp){
i=i+1
if(opt==2){madj=ceiling(sqrt(m))}else{madj=m}
ARLc[i,]<-ARLwYsYl.EWMA(n,LC,w,lambda,q,delta,r,madj,opt,mu,sig,dist,skew)[1:2]
}
x11()
plot(mp,ARLc[,1],type="l",lty=1,ylim=c(0,400))
abline(h=ARLs,col=c("Black","Gray"),lty=2)
lines(mp,ARLc[,2],col="Gray",lty=2)
#####Steiner comparacion
n=1
mu=0; sig=1; J=0.5
w=-1; q=pnorm(-1)*2; lambda=0.2045; Lim=2.78
dist="norm"
delta=J/sqrt(n); r=1;opt=1
(ARL<-ARLwYsYl.EWMA(n,Lim,w,lambda,q,delta,r,opt))
#####################
# print everything after loop is finished
for (i in 0:101) {
print(i)
Sys.sleep(0.01)
}
# simplist way to print within loop
for (i in 0:101) {
print(i)
Sys.sleep(0.01)
flush.console()
}
# fancier text progress
# install.packages("svMisc")
require(svMisc)
for (i in 0:101) {
progress(i)
Sys.sleep(0.01)
if (i == 101) cat("Done!\n")
}
# fancier text progress with bar
# install.packages("svMisc")
require(svMisc)
for (i in 0:101) {
progress(i, progress.bar = TRUE)
Sys.sleep(0.01)
if (i == 101) cat("Done!\n")
}
#####Prueba EWMA sobre 50 casos aleatorios.
n.casos=50
m.n<-sample(c(5,10,15,20),n.casos,replace=T)
m.Lim<-round(runif(n.casos,0.05,3.2),3)
m.w<-round(runif(n.casos,-2,1),2)
m.lambda<-round(runif(n.casos,0.05,1),2)
m.q<-round(runif(n.casos,0.05,0.50),5)
m.delta<-round(runif(n.casos,0.5, 1.5),2)
m.r<-round(runif(n.casos,1.2, 2),2)
res<-matrix(0, nrow=n.casos,ncol=17)
colnames(res)<-c("n","Lim","w","Lambda","q","delta","r","Time.O1.C","A0.O1C","A1.O1C","A0.O1S","A1.O1S","Time.O2.C","A0.O2C","A1.O2C","A0.O2S","A1.O2S")
for(i in 1:n.casos){
n=m.n[i]; Lim=m.Lim[i];w=m.w[i];lambda=m.lambda[i];q=m.q[i]; delta=m.delta[i]; r=m.r[i];
res[i,1:7] <-c(n,Lim,w,lambda,q,delta,r)
opt=1
res[i,8] <-system.time(ARL<-ARLwYsYl.EWMA(n,Lim,w,lambda,q,delta,r,opt))[3]
res[i,9:10] <-ARL[1:2]
res[i,11:12] <-c(SARLwYsYl.EWMA(n,Lim,w,lambda,q,0,1,opt,it=50000)[1],SARLwYsYl.EWMA(n,Lim,w,lambda,q,delta,r,opt,it=10000)[1])
opt=2
res[i,13] <-system.time(ARL<-ARLwYsYl.EWMA(n,Lim,w,lambda,q,delta,r,opt))[3]
res[i,14:15] <-ARL[1:2]
res[i,16:17] <-c(SARLwYsYl.EWMA(n,Lim,w,lambda,q,0,1,opt,it=50000)[1],SARLwYsYl.EWMA(n,Lim,w,lambda,q,delta,r,opt,it=10000)[1])
}
###Comparacion casos opcin 2 con m=4000
casos<- read.table("clipboard", header=T,dec=",")
opt=2
res<-matrix(0, nrow=nrow(casos),ncol=3)
colnames(res)<-c("Time.O2.C","A0.O2S","A1.O2S")
for(i in 1:nrow(casos)){
n=casos$n[i]; Lim=casos$L[i];w=casos$w[i];lambda=casos$l[i];q=casos$q[i]; delta=casos$delta[i]; r=casos$r[i];
res[i,1] <-system.time(ARL<-ARLwYsYl.EWMA(n,Lim,w,lambda,q,delta,r,m,opt))[3]
res[i,2:3] <-ARL[1:2]
}
# Parametros del proceso bajo control
mu<-10; sig<-1; skew<-0; dist<-"norm"
#Parametors para algoritmo genetico.
w1<-1
w.min<-(-2);w.max<-1
casos<-read.table("clipboard", header=T,dec=",")
opt=1;w2=200;
res<-matrix(0,nrow=nrow(casos),ncol=10)
colnames(res)<-c("n","Lim","w","Lambda","q","ARLo.opt","ARL1.opt","ARL1.alt","tiempo.opt","tiempo.alt")
for(i in 1:nrow(casos)){
n=casos$n0[i]; delta=casos$d[i]; r=casos$r[i]; ARL0obj=casos$ARL0[i];cambio=casos$Tcambio[i]
#ARL.ref=ARLXS(n,1/ARL0obj,delta,r)
ARL.ref=casos$ARL.WYSYL.DS[i]
if(n<=3){q.min<-0.002}else{q.min<-0.001}
if(delta==0){q.max<-0.30}else{q.max=0.65}
time<-system.time(sol1<-GA.wYsYlEWMA(n,delta,r,ARL0obj,mu,sig,dist,skew,50,F.w=NA,fit=2))[3]
if(cambio=="Media"){Fw=-1}else if(cambio=="Varianza"){Fw=1}else{Fw=0}
timef<-system.time(sol2<-GA.wYsYlEWMA(n,delta,r,ARL0obj,mu,sig,dist,skew,50,F.w=Fw,fit=2))[3]
if(sol1[7]<sol2[7]){sol<-sol1}else{sol<-sol2}
res[i,1:7] <-sol
res[i,8] <-max(sol1[7],sol2[7])
res[i,9:10]<-c(time,timef)
write.table(res,"res.txt")
}
library(doParallel)
library(parallel)
library(foreach)
library(iterators)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.