コード例 #1
0
        public void SalvarLogsGeracaoVeiculos(string caminhoVeiculosVertice, string CaminhoVeiculoPorTempo)
        {
            List <string> LogSalvar = new List <string>();

            for (int i = 0; i < grafo.NumeroVertices; i++)
            {
                LogSalvar.Add($"{i};{LogGeracaoVeiculos.Where((x) => x.VerticeIncersao == i).Sum((x) => 1)}");
            }
            using (StreamWriter file = new StreamWriter(caminhoVeiculosVertice))
            {
                if (file == null)
                {
                    throw new Exception("arquivo não encontrao");
                }
                file.Write(string.Join("\n", LogSalvar));
                file.Close();
            }
            LogSalvar.Clear();
            foreach (var item in LogGeracaoVeiculos)
            {
                LogSalvar.Add($"{item.SegundoSimulacao};{LogGeracaoVeiculos.Where((x) => x.SegundoSimulacao == item.SegundoSimulacao).Sum((x) => 1)}");
            }
            using (StreamWriter file = new StreamWriter(CaminhoVeiculoPorTempo))
            {
                if (file == null)
                {
                    throw new Exception("arquivo não encontrao");
                }
                file.Write(string.Join("\n", LogSalvar));
                file.Close();
            }
        }
コード例 #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++)
            {
                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
        }
コード例 #3
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
        }