import pandas
df = pandas.read_csv('C:\\Users\\user\\Desktop\\TRABALHO-4.csv', sep=';')
df

"""
Explanation: Teoria de Filas
Marcelo Salles Olinger

Dados coletados:
End of explanation
"""


tempo_medio = 1.1558 / 30
print("O tempo médio entre as chegadas à fila é", tempo_medio*60, "minutos.")


"""
Explanation: Respostas:
a) O levantamento dos dados foi feito no domingo, dia 14/6/2016, no Cinespaço Beiramar, cinema do Beiramar Shopping.
   O início dos levantamentos foi às 19:47h, e durou 1:09h.
b) No local havia 3 atendentes.
   $$S = 3$$
c) 30 pessoas chegaram à fila durante o levantamento de 1 hora, 9 minutos e 21 segundos (1.1558 horas):
End of explanation
"""


taxa_de_chegada = 1 / tempo_medio
print(taxa_de_chegada)

"""
Explanation: d) A taxa de chegada de usuários no sistema:
End of explanation
"""


pandas.DataFrame.mean(df['SAIDA-ENTRADA (min)'])

"""
Explanation: $$\Lambda = 25.956\ clientes/hora$$
e) O tempo médio de atendimento de cada cliente foi 2,0478 minutos:
End of explanation
"""


taxa_de_atendimento = 60 / 2.0478
print(taxa_de_atendimento)

"""
Explanation: f) A taxa de atendimento dos usuários (μ):
End of explanation
"""


import math
from IPython.display import display, Math, Latex

def teoriafilas(lam, u, s=1):
    
    #calculo do \rho:
    rho = lam/(u*s) 
    
    #calculo do Pzero:
    pzero = 0
    for n in range (s):
        pzero += (((lam/u)**n)/math.factorial(n))+(((lam/u)**s)/(math.factorial(s)*(1-(lam/(s*u)))))
    pzero = pzero**(-1)
    
    #calculo do P:
    p = (((lam/u)**s)/(math.factorial(s)*(1-(lam/(s*u)))))*pzero
    
    #calculo do Lq:
    Lq = ((((lam/u)**s)*lam*u*s)/(math.factorial(s)*((u*s-lam)**2)))*pzero
    
    #calculo do L:
    L= Lq+(lam/u)
    
    #calculo do tempo medio:
    Wq = Lq/lam
    
    #calculo do tempo provavel:
    W = L/lam
    
    return (rho, pzero, p, Lq, L, Wq*60, W*60)
    

"""
Explanation: $$\mu = 29.300\ clientes/hora$$
Função:
Após definir os valores de S, lambda e μ, foi desenvolvida uma função em linguagem Python para encontrar os valores das outras variáveis:
End of explanation
"""


teoriafilas(25.956047759127877, 29.299736302373276, 3)

"""
Explanation: Para os valores de S, lambda e μ obtidos:
End of explanation
"""


teoriafilas(25.956047759127877*2, 29.299736302373276, 3)

"""
Explanation: Com a taxa de chamada duplicada:
End of explanation
"""


