import simpy import random # Parâmetros TAXA_CHEGADA = 1/7 # clientes por minuto TEMPO_ATENDIMENTO = 30 # minutos NUM_SERVIDORES = 5 TEMPO_SIMULACAO = 6*60 # 6 horas em minutos # Variáveis de estado total_clientes = 0 tempos_espera = [] def cliente(env, servidor): global total_clientes, tempos_espera chegada = env.now total_clientes += 1 with servidor.request() as req: yield req espera = env.now - chegada tempos_espera.append(espera) yield env.timeout(random.expovariate(1/TEMPO_ATENDIMENTO)) def source(env, servidor): while True: yield env.timeout(random.expovariate(TAXA_CHEGADA)) env.process(cliente(env, servidor)) # Configuração e início da simulação env = simpy.Environment() servidor = simpy.Resource(env, NUM_SERVIDORES) env.process(source(env, servidor)) env.run(until=TEMPO_SIMULACAO) # Métricas tempo_medio_espera = sum(tempos_espera)/len(tempos_espera) tempo_maximo_espera = max(tempos_espera) clientes_medios_espera = len(tempos_espera)/TEMPO_SIMULACAO taxa_ocupacao = len(tempos_espera) * TEMPO_ATENDIMENTO / (NUM_SERVIDORES * TEMPO_SIMULACAO) nivel_servico = (1 - taxa_ocupacao) * 100 print("Total de clientes:", total_clientes) print("Tempo médio de espera (min):", tempo_medio_espera) print("Tempo máximo de espera (min):", tempo_maximo_espera) print("Clientes médios na espera:", clientes_medios_espera) print("Taxa de ocupação do sistema:", taxa_ocupacao) print("Nível de serviço (%):", nivel_servico)