Advertisement
Guest User

Untitled

a guest
Nov 28th, 2015
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. import random
  2. import sys
  3.  
  4. '''
  5. random.expovariate(lambd), distribución exponencial
  6. random.gauss(mean, mu), distribución normal
  7.  
  8. TLL: Momento en que llega un cliente.
  9. IA: Intervalo entre arribos de elementos (aleatorio).
  10.  
  11. TS: Momento en que terminan de atender a un cliente.
  12. TAT: Tiempo de atención a un elemento (aleatorio).
  13.  
  14. TEC: Momento en que un cliente recibe su orden y sale del sistema.
  15.  
  16. T: Reloj del sistema (tiempo actual).
  17. NC: Número  de  elementos en la caja 1 (incluyendo al que esta enfrente)
  18. NC2: Número  de  elementos en la caja 2 (incluyendo al que esta enfrente).
  19. TF: Tiempo de finalización de la ejecución.
  20. '''
  21.  
  22. try:
  23. tasa_llegadas = 1 / float(sys.argv[1])
  24. tasa_servicio = float(sys.argv[2]) # tasa en que atienden a alguien
  25. desvstd_servicio = float(sys.argv[3])
  26. tasa_preparacion = float(sys.argv[4]) # tasa en que preparan una hamburguesa
  27. desvstd_preparacion = float(sys.argv[5])
  28. #tiempo_simulacion = float(sys.argv[6])
  29. except IndexError:
  30. print("Uso: python sim-v2.py [tasa_llegadas] [tasa_atencion] [desvstd_atencion] [tasa_preparacion] [desvstd_preparacion]")
  31. exit(1)
  32.  
  33. t = tll = ia = ts = tat = ts = tec = nc = nc2 = 0
  34. #tf = tiempo_simulacion
  35.  
  36. # Se inicializa tll con un valor y ts y tec con inf para que el
  37. # primer evento en llevarse acabo sea la llegada de un cliente
  38. tll = t + random.expovariate(tasa_llegadas)
  39. ts = float('inf')
  40. tec = float('inf')
  41.  
  42. print("Comienza simulacion con tiempo:", t)
  43. print("Primera llegada sera en:", tll)
  44. print("")
  45.  
  46. # Se simulan solo la llegada de 7 clientes
  47. for i in range(7):
  48. if min(tll, ts, tec) == tll:
  49. t = tll
  50. ia = random.expovariate(tasa_llegadas)
  51. tll = t + ia
  52. nc = nc + 1
  53. if nc == 1:
  54. tat = random.gauss(tasa_servicio, desvstd_servicio)
  55. ts = t + tat
  56. pass # sale del if
  57. elif nc > 1:
  58. pass # sale del if
  59. elif min(tll, ts, tec) == ts:
  60. t = ts
  61. nc = nc - 1
  62. nc2 = nc2 + 1
  63. if nc == 0:
  64. tat = random.gauss(tasa_servicio, desvstd_servicio)
  65. ts = float('inf')
  66. pass # sale del if
  67. elif nc > 0:
  68. tat = random.gauss(tasa_servicio, desvstd_servicio)
  69. ts = t + tat
  70. pass # sale del if
  71. if nc2 == 1:
  72. tec = t + random.gauss(tasa_preparacion, desvstd_preparacion)
  73. pass
  74. elif nc2 > 1:
  75. pass
  76. elif min(tec, tll, tec) == tec:
  77. t = tec
  78. nc2 = nc2 - 1
  79. if nc2 == 0:
  80. tec = float('inf')
  81. pass
  82. elif nc2 > 0:
  83. tec = t + random.gauss(tasa_preparacion, desvstd_preparacion)
  84. pass
  85.  
  86. # Imprime resultados por cada evento
  87. print("Tiempo:", t)
  88. print("Personas en el sistema a:", nc)
  89. print("Personas en el sistema b:", nc2)
  90. print("Tiempo en que terminaran de atender al sig. en caja a:", ts)
  91. print("Tiempo en que le entregaran su orden al sig. en caja b:", tec)
  92. print("Tiempo de la sig. llegada:", tll)
  93. print("")
  94. exit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement