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(); } }
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 }
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 }