[R-es] teoría de colas simulación

Carlos J. Gil Bellosta cgb en datanalytics.com
Sab Abr 17 15:18:37 CEST 2010


Y esto podría ser mejor, incluso, en función de los parámetros de entrada:

MM1.3 <- function( n=100, lambda=.8, mu=1 )
#n: número de saltos, lambda:
#intensidad de arribos, mu: intensidad de los tiempos de servicio
{

     quot  <- lambda/(lambda + mu)

     tjump <- rep( quot, n )

     jump    <-  sapply( runif( n ) < quot, function( x ) ifelse( x, 1, 
-1 ) )
     jump[1] <- tjump[1] <- 1

     foo <- function( x ){
         tmp <- which( x == -1 )
         if( length( tmp ) == 0 ) return( 0 )
         tmp[1]
     }

     while( primer.menos.uno <- foo( cumsum( jump ) ) ){
         jump[ primer.menos.uno - 1 ] <- tjump[ primer.menos.uno -1 ] <- 1
     }

     tjump <- cumsum( sapply( tjump, function( x ) rexp(1, x ) ) ) # 
tiempos acumulados de los saltos
     size  <- cumsum( jump )

     plot(tjump,size,pch=20,type="o")
     list(tjump=tjump,size=size) #size=tamaño del sistema
}

(Especialmente, si la cola simulada es del Ayuntamiento de Madrid).

Carlos J. Gil Bellosta
http://www.datanalytics.com

On 04/17/2010 01:14 PM, jose luis wrote:
> Buenas.
>
> Estoy intentando simular el modelo M/M/1 en R. Y he encontrado el
> siguiente código. Me gustaría saber si existe algún paquete que pueda
> hacer esto, o si no, cómo vectorizar este código para que sea más
> eficiente.
>
> Gracias
>
> MM1=function(n=100,lambda=.8,mu=1) #n: número de saltos, lambda:
> #intensidad de arribos, mu: intensidad de los tiempos de servicio
> {
> i=0
> tjump=rep(0,n)
> size=rep(0,n)
> size[1]=i
> for(k in 2:n)
> {
> if(i==0){mutemp=0}else{mutemp=mu}
> time= rexp(1,lambda/(lambda+mutemp)) #tiempos entre saltos, con
> #distribución exponencial de parámetro (lambda+mutemp)
> if(runif(1)<lambda/(lambda+mutemp)){i=i+1}else{i=i-1}
> size[k]=i
> tjump[k]=time
> }
> tjump=cumsum(tjump) #tjump=tiempos acumulados de los saltos
> plot(tjump,size,pch=20,type="o")
> out=list(tjump=tjump,size=size) #size=tamaño del sistema
> out
> }
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



Más información sobre la lista de distribución R-help-es