Esempio n. 1
0
        public void TestMethodNodosAlgoritmo()
        {
            //Preparación
            Ciudad madrid    = CrearCiudad(1, "MADRID");
            Ciudad zaragoza  = CrearCiudad(2, "ZARAGOZA");
            Ciudad lleida    = CrearCiudad(3, "LLEIDA");
            Ciudad tarragona = CrearCiudad(5, "TARRAGONA");
            Ciudad teruel    = CrearCiudad(4, "TERUEL");

            Nodo nodo1 = CrearNodo(madrid.Id, zaragoza.Id, 3, 300);
            Nodo nodo2 = CrearNodo(zaragoza.Id, lleida.Id, 2, 150);
            Nodo nodo3 = CrearNodo(lleida.Id, tarragona.Id, 1.16, 90);

            Nodo nodo4 = CrearNodo(madrid.Id, teruel.Id, 3.5, 350);
            Nodo nodo5 = CrearNodo(teruel.Id, tarragona.Id, 2.33, 220);

            List <Nodo> nodosRutas = new List <Nodo>
            {
                nodo1,
                nodo2,
                nodo3,
                nodo4,
                nodo5
            };

            List <List <Nodo> > listaFinal         = new List <List <Nodo> >();
            List <int>          ciudadesExpandidas = new List <int>();
            List <Nodo>         rutaActual         = new List <Nodo>();

            //Actuación
            listaFinal = AlgoritmoTodasRutas.algoritmoRutas(listaFinal, madrid.Id, tarragona.Id, ciudadesExpandidas, rutaActual, nodosRutas);

            //Validación
            Assert.IsTrue(listaFinal[0].Count == 3 && listaFinal[1].Count == 2);
        }
Esempio n. 2
0
        /// <summary>
        /// Método para calcular el total de ruta entre dos ciudades
        /// </summary>
        /// <param name="ruta">IdOrigen, IdDestino</param>
        /// <param name="listaRutas">Todas las rutas disponibles</param>
        /// <returns></returns>
        public static List <List <Ruta> > ListaFinalRutas(Ruta ruta, List <Ruta> listaRutas)
        {
            List <int> ciudadesExp = new List <int>();

            int idDestino = ruta.Origen;
            int idOrigen  = ruta.Destino;

            ciudadesExp.Add(idOrigen);

            List <Nodo> listaNodos = new List <Nodo>();

            foreach (var r in listaRutas)
            {
                Nodo n = new Nodo(r.Origen, r.Destino)
                {
                    CosteDecimal = r.Km
                };
                listaNodos.Add(n);
            }

            List <List <Nodo> > listaFinalNodos = new List <List <Nodo> >();

            listaFinalNodos = AlgoritmoTodasRutas.algoritmoRutas(listaFinalNodos, idOrigen, idDestino, ciudadesExp,
                                                                 new List <Nodo>(), listaNodos);

            List <List <Ruta> > listaFinalRutas = new List <List <Ruta> >();

            foreach (var vru in listaFinalNodos)
            {
                var listaInterna = new List <Ruta>();

                foreach (var vru2 in vru)
                {
                    Ruta r = listaRutas.Select(x => x).First(x => x.Origen == vru2.IdOrigen && x.Destino == vru2.IdDestino);
                    listaInterna.Add(r);
                }
                listaInterna.Reverse();
                listaFinalRutas.Add(listaInterna);
            }

            return(listaFinalRutas);
        }