Etiqueta: problemas

  • Teoría de Colas - Cajeras María y Alicia

    Referencia: Ross problema 8.3 p.568

    Un administración de un supermercado puede contratar a María o Alicia.

    María atiende con una tasa de servicio exponencial de 20 clientes por hora y puede ser contratada por $3/hora.

    Alicia atiende con una tasa exponencial de 30 clientes por hora, y puede ser contradada por $C/hora.

    El administrador estima que en promedio cada cliente tiene un costo de $1 por hora y debería ser contabilizado para el modelo.

    Suponga que los clientes llegan a una tasa Poisson de 10 clientes por hora.

    a) ¿Cuál es el costo promedio por hora si María es contratada? o ¿Si Alicia es contratada?

    b) Encuentre C si el promedio de costo por hora es el mismo para María y Alicia.


    Solución:

    a) ¿Cuál es el costo promedio por hora si María es contrada? o ¿Si Alicia es contratada?

    λ = 10 clientes/hora
    
    María: 
    
    μMaría = 20 clientes/hora
    
    LMaría = λ/(μ -λ) = 10/(20-10) = 1 
    
    Costo/hora María =  $3 + ($1 * (número promedio de clientes en la cola cuando trabaja María))
          =  $3 + ($1 * LMaría)
          =  $3 + ($1 * 1) = $ 4 
    
    Alicia:
    μAlicia = 30 clientes/hora
    LAlicia = λ/(μ -λ) = 10/(30-10) = 1/2
    
    Costo/hora Alicia =  $C + ($1 * (número promedio de clientes en la cola cuando trabaja Alicia))
          =  $C + ($1 * LAlicia)
          =  $C + ($1 * 1/2) = $ (C+ 0.5)
          
    b) Encuentre C si el promedio de costo por hora es el mismo para María y Alicia.
    Costo/hora María = Costo/hora Alicia
     4 = C + 0.5
     C = 3.5 $/hora
    
     que es lo máximo que el administrador podría pagar a Alice sin incurrir en costos mayores que María, dadas las condiciones del problema.
    
  • Teoria de colas - Llegadas Esperadas

    Referencia: Ross problema 8.1 p.568

    Para una cola M/M/1, calcule

    a) el numero esperado de llegadas durante un periodo de servicio
    b) la probabilidad que no lleguen clientes durante un periodo de servicio
    pista: "condición"


    Solución:
    a) el numero esperado de llegadas durante un periodo de servicio

    E[numero de llegadas] = E[λ S] = λ[1/μ] = λ/μ
    

    b) la probabilidad que no lleguen clientes durante un periodo de servicio

    P{0 llegadas} = E[P{0 llegadas | periodo de servicio S}] =
       = E[P{N(S)=0}] = E[e-λS]
    
    E[e^{-\lambda S}] = \int_{0}^{x} e^{-\lambda S}\mu e^{-\mu S}dS = \mu \int_{0}^{\infty} e^{-\lambda S -\mu S}dS = \mu \int_{0}^{\infty} e^{-S(\lambda+\mu)}dS = \left.\frac{-\mu}{\lambda+\mu} e^{-S(\lambda+\mu)}\right|_0^{\infty} = \frac{-\mu}{\lambda+\mu}\left[ e^{-\infty(\lambda+\mu)}-e^{-0(\lambda+\mu)}\right] = \frac{-\mu}{\lambda+\mu} [0-1] = \frac{\mu}{\lambda+\mu}
  • Teoría de colas - Dos servidores en paralelo

    Referencia: Ross 8.17 p.571

    Los clientes llegan a una sucursal de dos servidores según a un proceso de Poisson con tasa de dos por hora.

    Si al llegar el cliente el servidor 1 esta libre, se atiende con éste.
    Si al llegar el cliente el servidor 1 esta ocupado y el servidor 2 esta libre, inicia con el servidor 2.
    Clientes que al llegar encuentran los dos servidores ocupados se retiran.

    Un cliente que fué atendido por el servidor 1, pasa a ser atendido por el servidor 2 siempre que esté libre, caso contrario sale de la sucursal.
    Un cliente al completar el servicio con el servidor 2 sale de la sucursal.
    Los tiempos de servicio en los servidores 1 y 2 son variables aleatorias exponenciales con tasas de cuatro y seis por hora.

    a) ¿Qué fracción de clientes no entran a la sucursal?

    b) ¿Cuál es el valor promedio de tiempo que un cliente que entra, permanece en el sistema?

    c) ¿Cuál fracción de los clientes que entraron son atendidos por el servidor 1?


    Solución:
    Se definen los estados como (servidor1,servidor2), ocupado=0, ocupado=1:

    Estado (0,0)
    Estado (0,1)
    Estado (1,0)
    Estado (1,0)
    

    con lo que se contruye el diagrama de estados y transiciones:

    Usando los valores del enunciado se ubican los valores para las tasas de llegada y atención

    El siguiente paso consiste en escribir son las ecuaciones de balanceo:

    λ P00 = μ2 P012 + λ) P01 = μ1 P10 + μ1 P111 + λ) P10 = λ P00 + μ2 P112 + μ1) P11 = λ P01 + λ P10
    1 = P00 + P01 + P10 + P11
    

    usando los valores para λ, μ1 y μ2:

    2 P00 = 6 P01
    8 P01 = 4 P10 + 4 P11
    6 P10 = 2 P00 + 6 P11
    10 P11 = 2 P01 + 2 P10
    1 = P00 + P01 + P10 + P11
    

    de la ecuación(1)

    P01 = (2/6) P00 = (1/3) P00
    P01 = (1/3) P00
    
    usando (2) (1/4) y reordenando
    2 P01 = P10 + P11
    P11 = 2 P01 - P10
    
    sumando con (4)
      P11 = 2 P01 - P10
    5 P11 =   P01 + P10
    
    6 P11 = 3 P01
    2 P11 = P01
    usando (1)
    2 P11 = (1/3) P00
      P11 = (1/6) P00
    
    usando (4)
    5 P11 =   P01 + P10
    5 (1/6) P00 = (1/3) P00 + P10
      P10 = [(5/6) - (1/3)]P00 = [(5-2)/6] P00 = (3/6) P00 = (1/2) P00
      P10 = (1/2) P00 
    
    usando (5) con los resultados dependientes de P00:
    
    1 = P00 + (1/3) P00 +(1/2) P00 + (1/6) P00
    1 = [(6+2+3+1)/6] P00 = [12/6] P00 = 2 P00
    P00 = 1/2
    
    quedando:
    P00 = 1/2
    P01 = 1/6
    P10 = 1/4
    P11 = 1/12
    

    usando numpy de python, se reorganiza las ecuaciones y se crean las matrices:

    2 P00 - 6 P01                 = 0
            8 P01 - 4 P10 - 4 P11 = 0
     2 P00        - 6 P10 + 6 P11 = 0
            2 P01 + 2 P10 - 10 P11 = 0
       P00 +  P01 +   P10 +    P11 = 1
    
    import numpy as np
    A=np.array([
        [2,-6,0,0],
        [0,8,-4,-4],
        [2,0,-6,6],
        [1,1,1,1]])
    B=np.array([0,0,0,1])
    P=np.linalg.solve(A,B)
    print(P)
    
    [ 0.5         0.16666667  0.25        0.08333333]
    

    que son los resultados anteriores encontrados:

    P00 = 0.5
    P01 = 0.16666667
    P10 = 0.25
    P11 = 0.08333333
    

    a) ¿Qué fracción de clientes no entran a la suscursal?

    solo ocurre cuando ambos servidores estan ocupados (1,1)

    P11 = 1/12 = 0.08333333

    b) ¿Cuál es el valor promedio de tiempo que un cliente que entra, permanece en el sistema?

    W = L/λ
    
      = (valor esperado)/(proporcion de los clientes que si entran)
      
      = [0*P00 + 1*P01 + 1*P10 + 2*P11]/ [λ(1-P11)]
      
      = [0*(1/2) + 1*(1/6) + 1*(1/4) + 2*(1/12)]/ [2(1-(1/12)]
      
      = [(0+3+2+2)/12]/[22/12] = (7/12)/(22/12) =  7/22 
    

    c) ¿Cuál fracción de los clientes que entraron son atendidos por el servidor 1?

    (atiende el servidor 1 cuando esta libre) / (los que entraron)
    
    [P00 + P01] / [1 - P11] = [1/2 + 1/6]/[1 - 1/12]
      
      = [(3+1)/6] / [11/12] = (4/6)/(11/12) =   8/11 
    
  • Teoría de colas - Dos Servidores en secuencia

    Referencia: Ross problema 8.15 p.570

    Considere un sistema de servicio secuencial de dos servidores A y B.
    Los clientes que llegan entran al sistema solo si el servidor A esta libre.
    Si un cliente entra, entonces es atendido inmediatamente por el servidor A.
    Cuando la atención del servidor A se completa, el cliente pasa a ser atendido por el servidor B siempre que esté libre, si B esta ocupado, el cliente sale del sistema.
    Una vez que el cliente sale del servidor B, el cliente se parte del sistema.

    Suponga que las llegadas de cientes son tipo Poisson con tasa de llegada de dos clientes por hora, y que los servidores A y B atienden a tasas exponenciales de cuatro y dos clientes por hora.

    a) ¿Cuál es la proporción de clientes que entran al sistema?

    b) ¿Cuál es la proporción de clientes que entraron al sistema son atendidos por el servidor B?

    c) ¿Cuál es el número promedio de clientes en el sistema?

    d) ¿Cuál es el monto promedio de tiempo que un cliente que entró se mantiene dentro del sistema?


    Solución

    los estados propuestos son:

    00 P00
    10 P10
    01 P01
    11 P11

    El diagrama de transición entre estados propuesto, considerando de un solo evento por unidad de tiempo:

    con lo que se puede plantear las ecuaciones de balanceo ("sale=entra"):

    2 P00 = 2 P01
    4 P10 = 2 P00 + 2 P11
    (2+2) P01 = 4 P10 + 4 P11
    (4+2) P11 = 2 P01
    P00 + P10 + P01 + P11 = 1
    

    Resolviendo:

    P00 = P01              ecuación(1)
    2 P10 = P00 + P11      (2)
    P01 = P10 + P11        (3)
    3 P11 = P01            (4)
    P00 + P10 + P01 + P11 = 1      (5)
    

    de la ecuación (2) restando la ecuación (3)

    2 P10 - P01 = P00 + P11 - P10 - P11
    2 P10 - P01 = P00 - P10
    3 P10 - P01 = P00
    

    usando la ecuación (1)

    3 P10 - P00 = P00
    3 P10 = 2 P00
    P10 = 2/3 P00
    

    usando la ecuación (4) y (1)

    P11 = (1/3) P01
    P11 = (1/3) P00
    

    usando la ecuación (5)

    P00 + P10 + P01 + P11 = 1
    P00 + P00 + (2/3) P00 + (1/3)P00 = 1
    3 P00 = 1
    P00 = 1/3
    

    y se obtienen los otros valores para p

    P01 = 1/3
    P10 = (2/3)(1/3 )= 2/9
    P11 = (1/3)(1/3) = 1/9
    

    Con lo que se puede responder:

    a) ¿Cuál es la proporción de clientes que entran al sistema?

    P00 + P01 = 1/3 + 1/3 
             = 2/3

    c) ¿Cuál es el número promedio de clientes en el sistema?

    0*P00 +  1*P10 + 1*P01 + 2*P11 = 0 + 2/9 + 1/3 + 2*1/9 = 
         = (0+2+3+2)/9 = 7/9

    d) ¿Cuál es el monto promedio de tiempo que un cliente que entró se mantiene dentro del sistema?

    W = L/λA
    W = (promedio de clientes en el sistema)/(tasa de los que entran)
    W= (7/9)/[2(2/3)] = 7/12

    Usando Numpy

    resolviendo con numpy, se convierten las ecuaciones a matrices, sustituyendo una ecuación con la última (suma de probabilidades =1), se obtiene:

    2 P00 = 2 P01
    4 P10 = 2 P00 + 2 P11
    (2+2) P01 = 4 P10 + 4 P11
    (4+2) P11 = 2 P01
    P00 + P10 + P01 + P11 = 1
    

    reorganizando:

    2 P00 -2 P01                = 0
    2 P00        - 4 P10 + 2 P11 = 0
          -4 P01 + 4 P10 + 4 P11 = 0
           2 P01        - 6 P11 = 0
      P00  +  P01 +   P10 +  P11 = 1

    se obtienen las matrices A y B para usar con la instrucción solver de numpy:

    import numpy as np
    A=np.array([
        [2,-2,0,0],
        [2,0,-4,2],
        [0,-4,4,4],
        [1,1,1,1]])
    B=np.array([0,0,0,1])
    
    p=np.linalg.solve(A,B)
    
    print(p)
    
    [ 0.33333333  0.33333333  0.22222222  0.11111111]
    

    con lo que los valores buscados son:

    P00=0.33333333
    P01=0.33333333
    P10=0.22222222
    P00=0.11111111