[R-es] teoría de colas simulación
jose luis
canadasreche en gmail.com
Sab Abr 17 15:49:54 CEST 2010
Gracias Carlos. Eres un crack.
Carlos J. Gil Bellosta escribió:
> 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
>>
>
> _______________________________________________
> 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