Ejemplo n.º 1
0
        private void GeradoraVeiculos()
        {
            if (ImprimirLogTela)
            {
                Console.WriteLine("Iniciando rotina de geração de veículos");
            }
            int n = grafo.NumeroVertices;

            for (int i = 0; i < n; i++)
            {
                if (RoletaSorteio.ExecutaRoleta(TaxaGeracao[i]))
                {
                    Veiculo veiculoAdicionar = geradorVeiculos.GeraVeiculoAleatorio(IdVeiculo, grafo, i);
                    veiculoAdicionar.LogVeiculo = new LogVeiculo()
                    {
                        IdVeiculo       = veiculoAdicionar.Id,
                        InstanteCriacao = SegundoSimulacao,
                        VerticeOrigem   = i,
                        VerticeDestino  = veiculoAdicionar.PercursoVeiculo.Last()
                    };
                    VeiculosEsperaVertice[i].Enqueue(veiculoAdicionar);
                    if (ImprimirLogTela)
                    {
                        Console.WriteLine($"Realizado inserção de veículo no vértice {i}.");
                    }

                    #region TratativaLogs
                    LogGeracaoVeiculos.Add(new LogGeracaoVeiculo()
                    {
                        VerticeIncersao  = i,
                        IdVeiculo        = IdVeiculo,
                        SegundoSimulacao = SegundoSimulacao
                    });
                    LogTrajetos.Add(new LogTrajetosVeiculos {
                        IdVeiculo       = IdVeiculo,
                        PercursoVeiculo = veiculoAdicionar.PercursoVeiculo
                    });
                    #endregion TratativaLogs
                    IdVeiculo++;
                }
            }
            #region TratativaLogs
            for (int i = 0; i < n; i++)
            {
                LogQtdVeiculosEsperaTempo.Add(
                    new LogQtdVeiculosEsperaVertice()
                {
                    InstanteTempo = SegundoSimulacao,
                    QtdVeiculos   = VeiculosEsperaVertice[i].Count
                });
            }
            #endregion TrativaLogs
        }
Ejemplo n.º 2
0
        private void GeradoraVeiculos()
        {
            if (ImprimirLogTela)
            {
                Console.WriteLine("Iniciando rotina de geração de veículos");
            }
            int n = grafo.NumeroVertices;

            for (int i = 0; i < n; i++)
            {
                //se a taxa de geração da rotina do vertice atual
                if (RoletaSorteio.ExecutaRoleta(TaxaGeracao[i]))
                {
                    // gera veiculo e inicializa log de veiculos
                    Veiculo veiculoAdicionar = geradorVeiculos.GeraVeiculoAleatorio(IdVeiculo, grafo, i);

                    veiculoAdicionar.LogVeiculo = new LogVeiculo()
                    {
                        IdVeiculo       = veiculoAdicionar.Id,
                        InstanteCriacao = SegundoSimulacao,
                        VerticeOrigem   = i,
                        VerticeDestino  = veiculoAdicionar.PercursoVeiculo.Last()
                    };
                    // veiculo no vertice aguardando para começar a trafegar
                    VeiculosEsperaVertice[i].Enqueue(veiculoAdicionar);

                    #region TratativaLogs
                    if (ImprimirLogTela)
                    {
                        Console.WriteLine($"Realizado inserção de veículo no vértice {i}.");
                    }
                    LogGeracaoVeiculos.Add(new LogGeracaoVeiculo()
                    {
                        VerticeIncersao  = i,
                        IdVeiculo        = IdVeiculo,
                        SegundoSimulacao = SegundoSimulacao
                    });
                    LogTrajetos.Add(new LogTrajetosVeiculos
                    {
                        IdVeiculo       = IdVeiculo,
                        PercursoVeiculo = veiculoAdicionar.PercursoVeiculo
                    });
                    #endregion TratativaLogs

                    //adiciona na coleção de veículos
                    VeiculosSimulacao.Add(veiculoAdicionar);
                    IdVeiculo++;
                }
            }
            #region TratativaLogs

            for (int i = 0; i < n; i++)
            {
                LogQtdVeiculosEsperaTempo.Add(
                    new LogQtdVeiculosEsperaVertice()
                {
                    InstanteTempo = SegundoSimulacao,
                    QtdVeiculos   = VeiculosEsperaVertice[i].Count,
                    Vertice       = i,
                    EspacoOcupado = VeiculosEsperaVertice[i].Sum(x => x.Comprimento)
                });
            }
            #endregion TrativaLogs
        }