Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- queue<-function(l,u,T){
- lleg=0
- serv=0
- tlleg=0
- iserv=0
- tserv=0
- tfila=0
- i=1
- repeat{
- tlleg[i]=-log(runif(1))/l #CDF de la distribución Exponencial para llegadas.
- serv[i]=-log(runif(1))/u #CDF de la distribución Exponencial para servicios.
- if(i==1){ #valores para el primer cliente.
- lleg[i]=0
- tserv[i]=serv[i]
- iserv[i]=0
- }#if
- else{
- lleg[i]=lleg[i-1]+tlleg[i]#suma el intervalo de llegada al anterior.
- iserv[i]=max(tserv[i-1],lleg[i])#entrar al servicio de inmediato si no hay fila o esperar.
- tserv[i]=iserv[i]+serv[i]#termino del servicio.
- }#else
- if(min(lleg[i],iserv[i])>T){#el proceso continua hasta que el tiempo de llegada y atención alcanzan T.
- break
- }#if
- i=i+1
- }#repeat
- lleg=lleg[which(lleg<T)]#la simulación sigue para el proceso que corta antes, asi que es necesario quitar los terminos restantes.
- iserv=iserv[which(iserv<T)]
- tserv=tserv[which(tserv<T)]
- tfila=iserv-lleg[1:length(iserv)]#tiempo en fila es la diferencia entre el instante en que llega y en el que es atendido.
- 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))
- return(res)
- }#function
- queue(0.2,0.6,150)
Add Comment
Please, Sign In to add comment