Guest User

Untitled

a guest
Sep 15th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 1.26 KB | None | 0 0
  1. queue<-function(l,u,T){
  2. lleg=0
  3. serv=0
  4. tlleg=0
  5. iserv=0
  6. tserv=0
  7. tfila=0
  8. i=1
  9. repeat{
  10.     tlleg[i]=-log(runif(1))/l #CDF de la distribución Exponencial para llegadas.
  11.     serv[i]=-log(runif(1))/u #CDF de la distribución Exponencial para servicios.
  12.     if(i==1){ #valores para el primer cliente.
  13.         lleg[i]=0
  14.         tserv[i]=serv[i]
  15.         iserv[i]=0
  16.         }#if
  17.     else{
  18.         lleg[i]=lleg[i-1]+tlleg[i]#suma el intervalo de llegada al anterior.
  19.         iserv[i]=max(tserv[i-1],lleg[i])#entrar al servicio de inmediato si no hay fila o esperar.
  20.         tserv[i]=iserv[i]+serv[i]#termino del servicio.
  21.         }#else
  22.     if(min(lleg[i],iserv[i])>T){#el proceso continua hasta que el tiempo de llegada y atención alcanzan T.
  23.         break      
  24.         }#if   
  25.     i=i+1
  26.     }#repeat
  27. lleg=lleg[which(lleg<T)]#la simulación sigue para el proceso que corta antes, asi que es necesario quitar los terminos restantes.
  28. iserv=iserv[which(iserv<T)]
  29. tserv=tserv[which(tserv<T)]
  30. tfila=iserv-lleg[1:length(iserv)]#tiempo en fila es la diferencia entre el instante en que llega y en el que es atendido.
  31. res<-list(TiempoSimulado=max(tserv),Llegadas=lleg,IServicios=iserv,TServicios=tserv,PromLlegadas=1/mean(tlleg),TasaLlegada=l,PromAtencion=1/mean(serv),TasaAtencion=u,Espera=tfila,PromEspera=mean(tfila))
  32. return(res)
  33. }#function
  34. queue(0.2,0.6,150)
Add Comment
Please, Sign In to add comment