Beispiel #1
0
    def processa(self):
        tempoAtual = 0
        tempoOcioso = 0
        i = 0

        serv1 = Servidor()
        serv2 = Servidor()

        for c in self.clientes:
            i += 1
            print(f"Cliente num.{i}")
            print(c)

            if tempoAtual == serv1.tempoFimAtendimentoAtual:
                serv1.libera()
            if tempoAtual == serv2.tempoFimAtendimentoAtual:
                serv2.libera()

            if tempoAtual < c.t_chegada:
                if not serv1.ocupado:
                    print(
                        f"servidor 1 ficou ocioso por {c.t_chegada - tempoAtual} minutos"
                    )
                if not serv2.ocupado:
                    print(
                        f"servidor 2 ficou ocioso por {c.t_chegada - tempoAtual} minutos"
                    )
                tempoOcioso += c.t_chegada - tempoAtual
                tempoAtual = c.t_chegada

            if not serv1.ocupado:
                c.t_fila = tempoAtual - c.t_chegada
                c.t_atendimento = tempoAtual
                c.t_noSistema = c.t_atendimento + c.t_servico - c.t_chegada
                print("servidor 1 atende o cliente")
                serv1.atende(c)

            elif not serv2.ocupado:
                c.t_fila = tempoAtual - c.t_chegada
                c.t_atendimento = tempoAtual
                c.t_noSistema = c.t_atendimento + c.t_servico - c.t_chegada
                print("servidor 2 atende o cliente")
                serv2.atende(c)

            tempoAtual = min(serv1.tempoFimAtendimentoAtual,
                             serv2.tempoFimAtendimentoAtual)

            print(f"tempo de inicio do atendimento: {c.t_atendimento}")
            print(f"tempo de saida: {c.t_atendimento+c.t_servico}")
            print(f"tempo no sistema: {c.t_noSistema}\n")

        print(f"Tempo medio de ociosidade por servidor: {tempoOcioso/2.0}")
        print(
            f"Tempo medio no sistema por cliente: { mean([c.t_noSistema for c in self.clientes])}"
        )
        print(
            f"Tempo medio na fila por cliente: { mean([c.t_fila for c in self.clientes])}"
        )
        print(
            f"Tempo medio de servico por cliente: {mean([c.t_servico for c in self.clientes])}"
        )