private void Troca(int primeiroIndice, int segundoIndice) { Caminho temp = _elementos[primeiroIndice]; _elementos[primeiroIndice] = _elementos[segundoIndice]; _elementos[segundoIndice] = temp; }
/// <summary> /// Função principal de busca /// </summary> /// <returns></returns> private int[] FindSolution() { Node inicio = new Node(null, initState, 0, null); PQ open = new PQ(); List <Caminho> closed = new List <Caminho>(); int euristicaInicio = Euristica(inicio); Caminho n = new Caminho(inicio, euristicaInicio, 0); open.Add(n); closed.Add(n); while (!open.EstaVazio()) { foreach (Caminho m in GetSucessors(n.N, euristicaInicio)) { if (!closed.Contains(m)) { open.Add(m); } } n = open.Pop(); closed.Add(n); if (TargetFound(n.N)) { break; } } return(BuildAnswer(n.N));; }
public void DesenharCaminho(Caminho caminho, Color cor) { using (var paint = new SKPaint()) { paint.Color = cor.ToSKColor(); paint.Style = SKPaintStyle.Fill; paint.IsAntialias = true; using (var path = new SKPath()) { foreach (var acao in caminho.Acoes) { if (acao is Mover mover) { path.MoveTo(mover.Posicao.X, mover.Posicao.Y); } else if (acao is Arco arco) { path.ArcTo(arco.Raio, new SKPoint(arco.Posicao.X, arco.Posicao.Y)); } else if (acao is Fechar) { path.Close(); } } _canvas.DrawPath(path, paint); } } }
public void Add(Caminho elemento) { More(); _elementos[size] = elemento; size++; HeapUp(); }
public JsonResult Edit(Foto Foto, HttpPostedFileBase file) { var Retorno = new RetornoJson(); if (Foto.NomeFoto == null) { Retorno.Mensagem += "<span> Digite o Nome</span>"; } //editar staus , categoria foto e funcionario if (Retorno.Mensagem != "") { return(Json(Retorno, JsonRequestBehavior.AllowGet)); } if (file != null) { string nome = "Foto-" + NomeArquivo.GerarNomeArquivo(file.FileName); string path = Path.Combine(Server.MapPath(Caminho.Foto()), Path.GetFileName(nome)); file.SaveAs(path); Foto.Imagem = nome; } var bdFoto = new FotoRepositorioEF(contexto); bdFoto.Atualizar(Foto); bdFoto.SalvarTodos(); Retorno.Mensagem += "<span> Editado com sucesso</span>"; Retorno.Sucesso = true; Retorno.Redirecionar = true; Retorno.Link = "/Admin/Foto/Index"; return(Json(Retorno, JsonRequestBehavior.AllowGet)); }
private void AdicionarCaminho(Caminho c) { if (c.Origem != c.Destino) { _caminhos.Add(c); } }
/** * Método recursivo que retorna todos os caminhos entre as cidades que possuem o Id equivalentes aos parâmetros. * Cada passo do caminho em questão é armazenado na pilhaDeMovimentos de movimentos "pilhaMovimento". * Por fim, se chegou ao destino, a pilhaDeMovimentos é armazenada na variável "caminhosEncontrados", representando um dos caminhos possíveis * O método acaba quando todos os caminhos possíveis são percorridos. */ public List <Caminho> BuscarCaminhos(int idCidadeOrigem, int idCidadeDestino) { for (int i = 0; i < QtdCidades; i++) { if ((MatrizAdjacencia[idCidadeOrigem, i] != null) && (!jaPassou[i])) { pilhaMovimento.Empilhar(new Movimento(idCidadeOrigem, i)); jaPassou[i] = true; if (i == idCidadeDestino) // se chegou ao destino { Caminho novoCaminho = new Caminho(); novoCaminho.Movimentos = pilhaMovimento.Clone(); caminhosEncontrados.Add(novoCaminho); pilhaMovimento.Desempilhar(); // busca novos caminhos jaPassou[i] = false; } else { BuscarCaminhos(i, idCidadeDestino); // backtracking } } } if (!pilhaMovimento.EstaVazia) { pilhaMovimento.Desempilhar(); jaPassou[idCidadeOrigem] = false; } return(caminhosEncontrados); }
public void More() { if (size == tamanhoTotal) { tamanhoTotal *= 2; Caminho[] temp = new Caminho[tamanhoTotal]; _elementos.CopyTo(temp, 0); _elementos = temp; } }
public void CriarOuAlterarTabela(List <Ponto> ListPonto, string NomeArquivo) { XmlSerializer parse = new XmlSerializer(typeof(Ponto[])); using (var writer = new StreamWriter(Caminho.CaminhoXML(NomeArquivo))) { parse.Serialize(writer, ListPonto.ToArray()); writer.Close(); } }
private void Caminho_Leave(object sender, EventArgs e) { if (!Directory.Exists(Caminho.Text)) { Caminho.Select(0, Caminho.Text.Length); Caminho.Focus(); MessageBox.Show("Caminho inválido.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
static void Main(string[] args) { Rua r1 = new Rua("Rua 1", 10000); Rua r2 = new Rua("Rua 2", 10000); Rua r3 = new Rua("Rua 3", 10000); Rua r4 = new Rua("Rua 4", 10000); Caminho caminho1 = new Caminho(); caminho1.Add(r1); caminho1.Add(r2); Caminho caminho2 = new Caminho(); caminho2.Add(r1); caminho2.Add(r4); Cruzamento cz1 = new Cruzamento(r1, r2, r3, r4); Controlador ct1 = new Controlador(cz1); Carro c1 = new Carro("Carro 1", caminho1); c1.Velocidade = 180; c1.TrocaDeRua += new Carro.CarroTrocaHandler(c1_TrocaDeRua); c1.TerminoCaminho += new Carro.CarroTerminoHandler(c1_TerminoCaminho); c1.AguardandoSemaforo += new Carro.CarroAguardandoHandler(c1_AguardandoSemaforo); c1.ImpedimentoDeProgresso += new Carro.CarroImpedidoHandler(c1_ImpedimentoDeProgresso); c1.InicioCaminho += new Carro.CarroInicioHandler(c1_InicioCaminho); Carro c2 = new Carro("Carro 2", caminho2); c2.Velocidade = 360; c2.TrocaDeRua += new Carro.CarroTrocaHandler(c1_TrocaDeRua); c2.TerminoCaminho += new Carro.CarroTerminoHandler(c1_TerminoCaminho); c2.AguardandoSemaforo += new Carro.CarroAguardandoHandler(c1_AguardandoSemaforo); c2.ImpedimentoDeProgresso += new Carro.CarroImpedidoHandler(c1_ImpedimentoDeProgresso); c2.InicioCaminho += new Carro.CarroInicioHandler(c1_InicioCaminho); c1.Iniciar(); while (carros > 0) { ct1.Avancar(); if (tempo == 26) { c2.Iniciar(); } c1.Mover(); c2.Mover(); tempo++; } Console.ReadLine(); }
/// <summary> /// Separa nomes dos diretórios /// </summary> private void SepararNomesDiretorios() { Diretorios = Caminho.Split('/'); foreach (var var in Diretorios) { Caminho = DiretorioCompleto + DiretorioParametrizado + AuxDiretorio + var; //Serve para auxiliar a colocar um diretorio dentro do outro AuxDiretorio += var + "\\"; } }
public GrafoCaminhoViewModel(Grafo grafo, double escala, string origem, string destino) : base(grafo, escala) { _origem = origem; _destino = destino; Dijkstra dijkstra = new Dijkstra(); dijkstra.Monta(grafo, origem); Caminho caminho = new Caminho(); _listaCaminho = caminho.calcula_caminho(grafo.get_vertice(destino)); _custo = grafo.get_vertice(destino).get_distancia().ToString("0.00"); }
public Caminho Pop() { if (EstaVazio()) { throw new IndexOutOfRangeException(); } Caminho result = _elementos[0]; _elementos[0] = _elementos[size - 1]; size--; HeapDown(); return(result); }
private void AddTrecho(string origem, string destino, decimal tempo) { var x2 = _caminhos.Where(x => x.Steps.Any(y => y.Destino == origem || y.Origem == destino)).ToList(); var caminho = new Caminho(); caminho.AddStep(origem, destino, tempo); AdicionarCaminho(caminho); // existem caminhos que podem começar antes, depois ou "no meio" destes caminhos já criados foreach (var x in x2) { MontarTodosCaminhos(x, origem, destino, tempo); } }
static void Main() { if (!Directory.Exists(Caminho.PastaXML)) { Directory.CreateDirectory(Caminho.PastaXML); } if (!File.Exists(Caminho.CaminhoXML())) { (new Ponto_BLL()).CriarTabela(); } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.ThreadException += Application_ThreadException; Application.Run(new frmPonto()); }
/// <summary> /// Se posição é maior que -1 é porque tem "!" e portando tem arquivo txt para criar e não é um link. Senão é um link. /// </summary> private void VerificarTextoLink() { //Recupera o nome do arquivo TXT na Tag e retira ele da variavel caminho Posicao = Caminho.IndexOf("!"); if (Posicao > -1) { NovoArquivoTxt = Caminho.Substring(Posicao + 1); Caminho = Caminho.Substring(0, Posicao); NomearExtencaoDiretorio(ConfigurationManager.AppSettings["ExtencaoTXT"], ConfigurationManager.AppSettings["RaizDiretorioParametrizado"]); } else { NovoArquivoTxt = Arquivo.ReadLine(); NomearExtencaoDiretorio(ConfigurationManager.AppSettings["ExtencaoURL"], ConfigurationManager.AppSettings["RaizDiretorioLinksParametrizado"]); } }
private void MontarTodosCaminhos(Caminho caminhoBase, string origem, string destino, decimal tempo) { // fazer analise combinatoria mesclando os itens. foreach (var item in caminhoBase.Steps.OrderBy(x => x.Order)) { if (item.Origem == destino) { var t = caminhoBase.Steps.Where(x => x.Order >= item.Order).ToList(); // t = temp; CriarComNovaOrigem(t, origem, tempo); } if (item.Destino == origem) { var t = caminhoBase.Steps.Where(x => x.Order <= item.Order).ToList(); // t = temp; // Ampliando a rota CriarComNovaDestino(t, destino, tempo); } } }
static void PrepararMapa() { Rua rua_a = new Rua("A", 2 * tamanho_bloco); Rua rua_b = new Rua("B", 3 * tamanho_bloco); Rua rua_c = new Rua("C", 4 * tamanho_bloco); Rua rua_d = new Rua("D", 4 * tamanho_bloco); Rua rua_e = new Rua("E", 3 * tamanho_bloco); Rua rua_f = new Rua("F", 3 * tamanho_bloco); Rua rua_g = new Rua("G", 4 * tamanho_bloco); Rua rua_h = new Rua("H", 2 * tamanho_bloco); Rua rua_i = new Rua("I", 5 * tamanho_bloco); Rua rua_j = new Rua("J", 1 * tamanho_bloco); Rua rua_k = new Rua("K", 5 * tamanho_bloco); Rua rua_l = new Rua("L", 5 * tamanho_bloco); Cruzamento cruzamento_1 = new Cruzamento(rua_a, rua_d, rua_b, rua_c, true); Cruzamento cruzamento_2 = new Cruzamento(rua_d, rua_f, rua_e, rua_g, true); Cruzamento cruzamento_3 = new Cruzamento(rua_c, rua_l, rua_h, null, false); Cruzamento cruzamento_4 = new Cruzamento(rua_h, rua_j, rua_i, null, false); Cruzamento cruzamento_5 = new Cruzamento(rua_g, rua_k, rua_j, null, true); Controlador controlador_1 = new Controlador(cruzamento_1); Controlador controlador_2 = new Controlador(cruzamento_2); Controlador controlador_5 = new Controlador(cruzamento_5); Caminho caminho_a = new Caminho("A", rua_b, rua_d, rua_e); Caminho caminho_b = new Caminho("B", rua_b, rua_c, rua_h, rua_i); Caminho caminho_c = new Caminho("C", rua_a, rua_c, rua_h, rua_i); Caminho caminho_d = new Caminho("D", rua_k, rua_g, rua_e); mapa = new Mapa(cruzamento_1, cruzamento_2, cruzamento_3, cruzamento_4, cruzamento_5); mapa.Controladores.Add(controlador_1); mapa.Controladores.Add(controlador_2); mapa.Controladores.Add(controlador_5); mapa.Caminhos.Add(caminho_a); mapa.Caminhos.Add(caminho_b); mapa.Caminhos.Add(caminho_c); mapa.Caminhos.Add(caminho_d); }
public List <Ponto> CarregaRegistro(string NomeArquivo) { XmlSerializer ser = new XmlSerializer(typeof(Ponto[])); List <Ponto> ListPontos = new List <Ponto>(); if (File.Exists(Caminho.CaminhoXML(NomeArquivo))) { using (XmlReader reader = XmlReader.Create(Caminho.CaminhoXML(NomeArquivo))) { foreach (Ponto Item in (Ponto[])ser.Deserialize(reader)) { Item.Ferias = Item.Ferias != 0 ? Item.Ferias : 'N'; Item.Folga = Item.Folga != 0 ? Item.Folga : 'N'; ListPontos.Add(Item); } } } return(ListPontos); }
private void CriarComNovaDestino(List <Step> list, string destino, decimal tempo) { if (list.Any(x => x.Destino == destino)) { return; } for (int i = 0; i <= list.Count - 1; i++) { var c = new Caminho(); for (int y = 0; y <= list.Count - 1; y++) { c.AddStep(list[y].Origem, list[y].Destino, list[y].Tempo); } c.AddStep(list[i].Destino, destino, tempo); AdicionarCaminho(c); } }
private void CriarComNovaOrigem(List <Step> list, string origem, decimal tempo) { if (list.Any(x => x.Origem == origem)) { return; } for (int i = 0; i <= list.Count - 1; i++) { var c = new Caminho(); c.AddStep(origem, list[i].Destino, list[i].Tempo); for (int y = 0; y < i; y++) { c.AddStep(list[i].Destino, list[y].Origem, list[y].Tempo); } AdicionarCaminho(c); } }
public JsonResult Create(Foto Foto, HttpPostedFileBase file) { var Retorno = new RetornoJson(); if (Foto.NomeFoto == null) { Retorno.Mensagem += "<span> Digite o Nome</span>"; } //validar status , categoria e funcionario if (Retorno.Mensagem != "") { return(Json(Retorno, JsonRequestBehavior.AllowGet)); } if (file != null) { string nome = "Foto-" + NomeArquivo.GerarNomeArquivo(file.FileName); string path = Path.Combine(Server.MapPath(Caminho.Foto()), Path.GetFileName(nome)); file.SaveAs(path); Foto.Imagem = nome; } try { Foto.DataFoto = DateTime.Now; var bdFoto = new FotoRepositorioEF(contexto); bdFoto.Adicionar(Foto); bdFoto.SalvarTodos(); Retorno.Mensagem += "<span> Cadastrado com sucesso</span>"; Retorno.Sucesso = true; Retorno.Redirecionar = true; Retorno.Link = "/Admin/Foto/Index"; }catch (Exception e) { Retorno.Mensagem += "<span> Foto não cadastrado.</span>"; } return(Json(Retorno, JsonRequestBehavior.AllowGet)); }
public void Teste_Caminho() { //arrange: string pastaArquivo = @"C:\Trabalho\TestePromob\JSONs"; string nomeArquivo = "Grafo1.json"; Grafo grafo = new Grafo(false, pastaArquivo + @"\" + nomeArquivo); string origem = "A"; string destino = "C"; Dijkstra dijkstra = new Dijkstra(); dijkstra.Monta(grafo, origem); string dist = "30"; //act: Caminho caminho = new Caminho(); List <string> listaCaminho = caminho.calcula_caminho(grafo.get_vertice(destino)); //assert: Assert.IsNotNull(listaCaminho); Assert.AreEqual(grafo.get_vertice(destino).get_distancia().ToString("0"), "30"); }
public ItemTabela(string nomeDoVector, Caminho vetor, int minimaDistancia) { this.NomeDoVector = nomeDoVector; this.Vetor = vetor; this.MinimaDistancia = minimaDistancia; }
static void MainOld(string[] args) { Rua r1 = new Rua("Rua 1", 10000); Rua r2 = new Rua("Rua 2", 10000); Rua r3 = new Rua("Rua 3", 10000); Rua r4 = new Rua("Rua 4", 10000); Caminho caminho1 = new Caminho(); caminho1.Add(r1); caminho1.Add(r2); Caminho caminho2 = new Caminho(); caminho2.Add(r1); caminho2.Add(r4); Cruzamento cz1 = new Cruzamento(r1, r2, r3, r4); Controlador ct1 = new Controlador(cz1); Carro c1 = new Carro("Carro 1", caminho1, 0.05f, 80); /*c1.TrocaDeRua += new Carro.CarroTrocaHandler(c1_TrocaDeRua); * c1.AguardandoSemaforo += new Carro.CarroAguardandoHandler(c1_AguardandoSemaforo); * c1.ImpedimentoDeProgresso += new Carro.CarroImpedidoHandler(c1_ImpedimentoDeProgresso);*/ c1.TerminoCaminho += new Carro.CarroTerminoHandler(c1_TerminoCaminho); c1.InicioCaminho += new Carro.CarroInicioHandler(c1_InicioCaminho); Carro c2 = new Carro("Carro 2", caminho2, 0.055f, 120); /*c2.TrocaDeRua += new Carro.CarroTrocaHandler(c1_TrocaDeRua); * c2.AguardandoSemaforo += new Carro.CarroAguardandoHandler(c1_AguardandoSemaforo); * c2.ImpedimentoDeProgresso += new Carro.CarroImpedidoHandler(c1_ImpedimentoDeProgresso);*/ c2.TerminoCaminho += new Carro.CarroTerminoHandler(c1_TerminoCaminho); c2.InicioCaminho += new Carro.CarroInicioHandler(c1_InicioCaminho); c1.Iniciar(); carros = 1; while (carros > 0) { ct1.Atuar(); if (TempoDoSistema.Valor == 20) { c2.Iniciar(); } c1.Mover(); c2.Mover(); Console.Clear(); ExibeCarros(c1, c2); ExibeSemaforos(cz1); //ExibeSensores(cz1); TempoDoSistema.Incrementar(); Thread.Sleep(100); } //DesenhaMapa(); Console.ReadLine(); }
private List <Caminho> GetSucessors(Node n, int valorInicio) { List <Caminho> sucessores = new List <Caminho>(); //tamanho de cada linha do quebra-cabeça int lateral = (int)Math.Sqrt(target.Length); //posicao atual que pode ser colocada uma peca int posicao = Array.IndexOf(n.Info, 0), gcost, hcost; int[] sup; Caminho c; Node a; //top if (posicao > lateral) { sup = (int[])n.Info.Clone(); sup[posicao] = sup[posicao - lateral]; sup[posicao - lateral] = 0; if (n.Nivel > 0 && !Compare(sup, n.Parent.Info)) { a = new Node(sup[posicao].ToString(), sup, n.Nivel + 1, n); gcost = Euristica(a); hcost = valorInicio - gcost; c = new Caminho(a, gcost, hcost); sucessores.Add(c); } else if (n.Nivel == 0) { a = new Node(sup[posicao].ToString(), sup, n.Nivel + 1, n); gcost = Euristica(a); hcost = valorInicio - gcost; c = new Caminho(a, gcost, hcost); sucessores.Add(c); } } //left if (posicao % lateral != 0) { sup = (int[])n.Info.Clone(); sup[posicao] = sup[posicao - 1]; sup[posicao - 1] = 0; if (n.Nivel > 0 && !Compare(sup, n.Parent.Info)) { a = new Node(sup[posicao].ToString(), sup, n.Nivel + 1, n); gcost = Euristica(a); hcost = valorInicio - gcost; c = new Caminho(a, gcost, hcost); sucessores.Add(c); } else if (n.Nivel == 0) { a = new Node(sup[posicao].ToString(), sup, n.Nivel + 1, n); gcost = Euristica(a); hcost = valorInicio - gcost; c = new Caminho(a, gcost, hcost); sucessores.Add(c); } } //right if (posicao % lateral != lateral - 1) { sup = (int[])n.Info.Clone(); sup[posicao] = sup[posicao + 1]; sup[posicao + 1] = 0; if (n.Nivel > 0 && !Compare(sup, n.Parent.Info)) { a = new Node(sup[posicao].ToString(), sup, n.Nivel + 1, n); gcost = Euristica(a); hcost = valorInicio - gcost; c = new Caminho(a, gcost, hcost); sucessores.Add(c); } else if (n.Nivel == 0) { a = new Node(sup[posicao].ToString(), sup, n.Nivel + 1, n); gcost = Euristica(a); hcost = valorInicio - gcost; c = new Caminho(a, gcost, hcost); sucessores.Add(c); } } //bottom if (posicao < target.Length - lateral) { sup = (int[])n.Info.Clone(); sup[posicao] = sup[posicao + lateral]; sup[posicao + lateral] = 0; if (n.Nivel > 0 && !Compare(sup, n.Parent.Info)) { a = new Node(sup[posicao].ToString(), sup, n.Nivel + 1, n); gcost = Euristica(a); hcost = valorInicio - gcost; c = new Caminho(a, gcost, hcost); sucessores.Add(c); } else if (n.Nivel == 0) { a = new Node(sup[posicao].ToString(), sup, n.Nivel + 1, n); gcost = Euristica(a); hcost = Math.Abs(valorInicio - gcost); c = new Caminho(a, gcost, hcost); sucessores.Add(c); } } return(sucessores); }
public List <Caminho> BuscarCaminhos(int idCidadeOrigem, int idCidadeDestino) { int idCidadeAtual, idSaidaAtual; bool achouCaminho = false, naoTemSaida = false; bool[] jaPassou = new bool[QtdCidades]; for (int indice = 0; indice < QtdCidades; indice++) { jaPassou[indice] = false; } idCidadeAtual = idCidadeOrigem; idSaidaAtual = 0; while (!naoTemSaida) { naoTemSaida = (idCidadeAtual == idCidadeOrigem && idSaidaAtual == QtdCidades && pilhaAuxiliar.EstaVazia); if (!naoTemSaida) { while ((idSaidaAtual < QtdCidades) && !achouCaminho) { if (MatrizAdjacencia[idCidadeAtual, idSaidaAtual] == null) { idSaidaAtual++; } else if (jaPassou[idSaidaAtual]) { idSaidaAtual++; } else if (idSaidaAtual == idCidadeDestino) { Movimento movimento = new Movimento(idCidadeAtual, idSaidaAtual); pilhaAuxiliar.Empilhar(movimento); achouCaminho = true; } else { Movimento movimento = new Movimento(idCidadeAtual, idSaidaAtual); pilhaAuxiliar.Empilhar(movimento); jaPassou[idCidadeAtual] = true; idCidadeAtual = idSaidaAtual; idSaidaAtual = 0; } } } if (!achouCaminho) { if (!pilhaAuxiliar.EstaVazia) { jaPassou[idCidadeAtual] = false; Movimento ultimoMovimento = pilhaAuxiliar.Desempilhar(); idSaidaAtual = ultimoMovimento.IdCidadeDestino; idCidadeAtual = ultimoMovimento.IdCidadeOrigem; idSaidaAtual++; } } if (achouCaminho) { Caminho novoCaminho = new Caminho(); novoCaminho.Movimentos = pilhaAuxiliar.Clone(); caminhosEncontrados.Add(novoCaminho); achouCaminho = false; pilhaAuxiliar.Desempilhar(); for (int i = 0; i < QtdCidades; i++) { jaPassou[i] = false; } idSaidaAtual++; } } return(caminhosEncontrados); }
public Rota(int peso, Caminho localDeChegada) { this.Peso = peso; this.LocalDeChegada = localDeChegada; }
public CursoController() { bdCurso = CursoAplicacaoConstrutor.CursoAplicacaoEF(); bdCorpo = CorpoDocenteAplicacaoConstrutor.CorpoDocenteAplicacaoEF(); caminhoArquivo = Caminho.Curso(); }