Esempio n. 1
0
 private void Escenario1()
 {
     grafo = new GrafoMatriz<int>();
     grafo.AgregarVertice(1);
     grafo.AgregarVertice(2);
     grafo.AgregarVertice(3);
 }
Esempio n. 2
0
 public void Run(int duracion, int tiempo, GrafoMatriz <Estacion> estaciones)
 {
     while (tiempo != duracion)
     {
         AtiendeBus(tiempo, estaciones);
     }
 }
Esempio n. 3
0
        /// <summary>
        /// Permite verificar si un pasajero se ha de bajar en la estación actual o continuar en su bus.
        /// Precondición: El bus del pasajero se encuentra en una estación.
        /// </summary>
        /// <param name="idEst"></param>
        /// <param name="actual"></param>
        /// <param name="grafo"></param>
        /// <returns int name = "Estado"></returns>
        public int EsMiEstacion(int idEst, Bus actual, GrafoMatriz <Estacion> grafo)
        {
            int parada          = actual.EstacionAct();
            int proximaEstacion = actual.EstacionAct();

            if (parada + 1 < actual.DarRuta().DarParadas().Count)
            {
                proximaEstacion = actual.DarRuta().DarParadas()[parada + 1][0];

                int paradaActual = actual.DarRuta().DarParadas()[parada][0];
                double[,] matrizGrafo = grafo.DarMatriz();
                if (matrizGrafo[paradaActual, EstDestinoId] == 0)
                {
                    Estado = 4;
                }
                if (matrizGrafo[paradaActual, EstDestinoId] >= matrizGrafo[proximaEstacion, EstDestinoId])
                {
                    Estado = 2;
                }
                else
                {
                    Estado = 1;
                }
            }
            else
            {
                Estado = 4;
            }
            return(Estado);
        }
Esempio n. 4
0
 private void Escenario1()
 {
     grafo = new GrafoMatriz <int>();
     grafo.AgregarVertice(1);
     grafo.AgregarVertice(2);
     grafo.AgregarVertice(3);
 }
Esempio n. 5
0
 /// <summary>
 /// Permite verificar si un pasajero se ha de bajar en la estación actual o continuar en su bus.
 /// Precondición: El bus del pasajero se encuentra en una estación.
 /// </summary>
 /// <param name="idEst"></param>
 /// <param name="actual"></param>
 /// <param name="grafo"></param>
 /// <returns int name = "Estado"></returns>
 public int EsMiEstacion(int idEst, Bus actual, GrafoMatriz<Estacion> grafo)
 {
     int parada = actual.EstacionAct();
     int proximaEstacion = actual.EstacionAct();
     if (parada + 1 < actual.DarRuta().DarParadas().Count)
     {
          proximaEstacion = actual.DarRuta().DarParadas()[parada + 1][0];
    
     int paradaActual = actual.DarRuta().DarParadas()[parada][0];
     double[,] matrizGrafo = grafo.DarMatriz();
     if (matrizGrafo[paradaActual, EstDestinoId] == 0)
     {
         Estado = 4;
     }
     if (matrizGrafo[paradaActual, EstDestinoId] >= matrizGrafo[proximaEstacion, EstDestinoId])
     {
         Estado = 2;
     }
     else
     {
         Estado = 1;
     }
     }
     else
     {
         Estado = 4;
     }
     return Estado;
 }
Esempio n. 6
0
        private void Escenario1(){
            c = new CargadoraInformacion(@"..\\..\\..\\SimulacionSistemaTransporteMasivoMio\Almacenamiento\Base de datos\");
            matriz = new GrafoMatriz<Stop>();
            c.AlmacenarInformacion("TRIPTYPES.txt");
            c.AlmacenarInformacion("SCHEDULETYPES.txt");
            c.AlmacenarInformacion("DATAPLAN.txt");
            c.AlmacenarInformacion("ARCS.txt");
            c.AlmacenarInformacion("CALENDAR.txt");
            c.AlmacenarInformacion("LINES.txt");
            c.AlmacenarInformacion("LINESARCS.txt");
            c.AlmacenarInformacion("LINESTOPS.txt");
            c.AlmacenarInformacion("PLANVERSIONS.txt");
            c.AlmacenarInformacion("SCHEDULEPROFILES.txt");
            c.AlmacenarInformacion("STOPS.txt");
            c.AlmacenarInformacion("TASKS.txt");
            c.AlmacenarInformacion("TRIPS.txt");

            for (int i = 0; i < c.STOPS.Count; i++)
            {
                try
                {
                    matriz.AgregarVertice(c.STOPS[i]);
                }
                catch (Exception)
                {

                }
            }
            for (int i = 0; i < c.ARCS.Count; i++)
            {
                int inicio = -1;
                int fin = -1;
                for (int j = 0; j < c.STOPS.Count; j++)
                {
                    if (c.ARCS[i].StopIdStart == c.STOPS[j].StopId)
                    {
                        inicio = j;
                    }
                    if (c.STOPS[j].StopId == c.ARCS[i].StopIdEnd)
                    {
                        fin = j;
                    }
                }
                
                    //try
                    //{
                        matriz.AgregarArista(inicio, fin, c.ARCS[i].ArcLenght);
                    //}
                    //catch (Exception)
                    //{

                    //}
               
              
            }

        }
Esempio n. 7
0
 private void Escenario2()
 {
     Console.WriteLine("Prueba escenario 2");
     grafo = new GrafoMatriz <int>();
     grafo.AgregarVertice(1);
     grafo.AgregarVertice(2);
     grafo.AgregarVertice(3);
     grafo.AgregarArista(0, 2, 2.0);
     grafo.AgregarArista(0, 1, 3.0);
 }
Esempio n. 8
0
 private void Escenario3()
 {
     grafo = new GrafoMatriz <int>();
     grafo.AgregarVertice(1);
     grafo.AgregarVertice(2);
     grafo.AgregarVertice(3);
     grafo.AgregarArista(1, 3, 2.0);
     grafo.AgregarArista(1, 2, 3.0);
     grafo.AgregarArista(2, 1, 1.0);
 }
Esempio n. 9
0
 public Simulacion()
 {
     Estaciones  = new GrafoMatriz <Estacion>();
     Pasajeros   = new List <Pasajero>();
     Buses       = new List <Bus>();
     Rutas       = new List <Ruta>();
     viajes      = new List <Trip>();
     Timer       = 0;
     UnidadReloj = 1000;
     //CargarBuses();
 }
Esempio n. 10
0
        private void Escenario2()
        {
            Console.WriteLine("Prueba escenario 2");
            grafo = new GrafoMatriz<int>();
            grafo.AgregarVertice(1);
            grafo.AgregarVertice(2);
            grafo.AgregarVertice(3);
            grafo.AgregarArista(0, 2, 2.0);
            grafo.AgregarArista(0, 1, 3.0);

        }
Esempio n. 11
0
        private void Escenario3()
        {
            grafo = new GrafoMatriz<int>();
            grafo.AgregarVertice(1);
            grafo.AgregarVertice(2);
            grafo.AgregarVertice(3);
            grafo.AgregarArista(1, 3, 2.0);
            grafo.AgregarArista(1, 2, 3.0);
            grafo.AgregarArista(2, 1, 1.0);

        }
Esempio n. 12
0
 public Simulacion()
 {
     Estaciones = new GrafoMatriz<Estacion>();
     Pasajeros = new List<Pasajero>();
     Buses = new List<Bus>();
     Rutas = new List<Ruta>();
     viajes = new List<Trip>();
     Timer = 0;
     UnidadReloj = 1000;
     //CargarBuses();
 }
Esempio n. 13
0
        private void Escenario1()
        {
            c      = new CargadoraInformacion(@"..\\..\\..\\SimulacionSistemaTransporteMasivoMio\Almacenamiento\Base de datos\");
            matriz = new GrafoMatriz <Stop>();
            c.AlmacenarInformacion("TRIPTYPES.txt");
            c.AlmacenarInformacion("SCHEDULETYPES.txt");
            c.AlmacenarInformacion("DATAPLAN.txt");
            c.AlmacenarInformacion("ARCS.txt");
            c.AlmacenarInformacion("CALENDAR.txt");
            c.AlmacenarInformacion("LINES.txt");
            c.AlmacenarInformacion("LINESARCS.txt");
            c.AlmacenarInformacion("LINESTOPS.txt");
            c.AlmacenarInformacion("PLANVERSIONS.txt");
            c.AlmacenarInformacion("SCHEDULEPROFILES.txt");
            c.AlmacenarInformacion("STOPS.txt");
            c.AlmacenarInformacion("TASKS.txt");
            c.AlmacenarInformacion("TRIPS.txt");

            for (int i = 0; i < c.STOPS.Count; i++)
            {
                try
                {
                    matriz.AgregarVertice(c.STOPS[i]);
                }
                catch (Exception)
                {
                }
            }
            for (int i = 0; i < c.ARCS.Count; i++)
            {
                int inicio = -1;
                int fin    = -1;
                for (int j = 0; j < c.STOPS.Count; j++)
                {
                    if (c.ARCS[i].StopIdStart == c.STOPS[j].StopId)
                    {
                        inicio = j;
                    }
                    if (c.STOPS[j].StopId == c.ARCS[i].StopIdEnd)
                    {
                        fin = j;
                    }
                }

                //try
                //{
                matriz.AgregarArista(inicio, fin, c.ARCS[i].ArcLenght);
                //}
                //catch (Exception)
                //{

                //}
            }
        }
Esempio n. 14
0
 private void EscenarioMuchosVertices()
 {
     grafo = new GrafoMatriz <int>();
     for (int i = 0; i < 1001; i++)
     {
         grafo.AgregarVertice(i);
     }
     for (int i = 0; i < 1000; i++)
     {
         grafo.AgregarArista(i, i + 1, 5);
     }
 }
Esempio n. 15
0
        private void EscenarioDijkstra()
        {
            grafo = new GrafoMatriz<int>();
            grafo.AgregarVertice(1);
            grafo.AgregarVertice(2);
            grafo.AgregarVertice(3);
            grafo.AgregarVertice(4);
            grafo.AgregarVertice(5);
            grafo.AgregarVertice(6);
            grafo.AgregarVertice(7);
            grafo.AgregarVertice(8);
            grafo.AgregarVertice(9);
            grafo.AgregarVertice(10);
            grafo.AgregarVertice(11);
            grafo.AgregarVertice(12);
            grafo.AgregarVertice(13);
            grafo.AgregarArista(0, 1, 2.0);
            grafo.AgregarArista(1, 0, 2.0);
            grafo.AgregarArista(1, 2, 1.0);
            grafo.AgregarArista(2, 1, 1.0);
            grafo.AgregarArista(2, 3, 1.0);
            grafo.AgregarArista(3, 2, 1.0);
            grafo.AgregarArista(3, 4, 2.0);
            grafo.AgregarArista(4, 3, 2.0);
            grafo.AgregarArista(2, 5, 2.0);
            grafo.AgregarArista(5, 2, 2.0);
            grafo.AgregarArista(5, 6, 2.0);
            grafo.AgregarArista(6, 5, 2.0);
            grafo.AgregarArista(6, 7, 2.0);
            grafo.AgregarArista(7, 6, 2.0);
            grafo.AgregarArista(7, 8, 1.0);
            grafo.AgregarArista(8, 9, 1.0);
            grafo.AgregarArista(7, 11, 1.0);
            grafo.AgregarArista(11, 7, 1.0);
            grafo.AgregarArista(7, 10, 1.0);
            grafo.AgregarArista(10, 7, 1.0);
            grafo.AgregarArista(9, 10, 1.0);
            grafo.AgregarArista(10, 9, 1.0);
            grafo.AgregarArista(11, 12, 1.0);
            grafo.AgregarArista(12, 11, 1.0);

        }
Esempio n. 16
0
 private void EscenarioDijkstra()
 {
     grafo = new GrafoMatriz <int>();
     grafo.AgregarVertice(1);
     grafo.AgregarVertice(2);
     grafo.AgregarVertice(3);
     grafo.AgregarVertice(4);
     grafo.AgregarVertice(5);
     grafo.AgregarVertice(6);
     grafo.AgregarVertice(7);
     grafo.AgregarVertice(8);
     grafo.AgregarVertice(9);
     grafo.AgregarVertice(10);
     grafo.AgregarVertice(11);
     grafo.AgregarVertice(12);
     grafo.AgregarVertice(13);
     grafo.AgregarArista(0, 1, 2.0);
     grafo.AgregarArista(1, 0, 2.0);
     grafo.AgregarArista(1, 2, 1.0);
     grafo.AgregarArista(2, 1, 1.0);
     grafo.AgregarArista(2, 3, 1.0);
     grafo.AgregarArista(3, 2, 1.0);
     grafo.AgregarArista(3, 4, 2.0);
     grafo.AgregarArista(4, 3, 2.0);
     grafo.AgregarArista(2, 5, 2.0);
     grafo.AgregarArista(5, 2, 2.0);
     grafo.AgregarArista(5, 6, 2.0);
     grafo.AgregarArista(6, 5, 2.0);
     grafo.AgregarArista(6, 7, 2.0);
     grafo.AgregarArista(7, 6, 2.0);
     grafo.AgregarArista(7, 8, 1.0);
     grafo.AgregarArista(8, 9, 1.0);
     grafo.AgregarArista(7, 11, 1.0);
     grafo.AgregarArista(11, 7, 1.0);
     grafo.AgregarArista(7, 10, 1.0);
     grafo.AgregarArista(10, 7, 1.0);
     grafo.AgregarArista(9, 10, 1.0);
     grafo.AgregarArista(10, 9, 1.0);
     grafo.AgregarArista(11, 12, 1.0);
     grafo.AgregarArista(12, 11, 1.0);
 }
Esempio n. 17
0
        public static List<Ruta> GenerarRutas(List<LineStop> paradas, List<Line> ruts, GrafoMatriz<Estacion> est)
        {
            List<Ruta> rutas = new List<Ruta>();
            Estacion[] esta = est.DarVertices();

            return rutas;
        }
Esempio n. 18
0
        public static List <Ruta> GenerarRutas(List <LineStop> paradas, List <Line> ruts, GrafoMatriz <Estacion> est)
        {
            List <Ruta> rutas = new List <Ruta>();

            Estacion[] esta = est.DarVertices();

            return(rutas);
        }
Esempio n. 19
0
        /// <summary>
        /// Permite generar los pasajeros de la estación y agregarlos a la lista de pasajeros de la estación, desde donde son enviados a la cola de su ruta correspondiente.
        /// Precondición: Lista de eventos futuros de pasajeros existe.
        /// </summary>
        /// <param name="tiempo"></param>
        /// <param name="grafo"></param>
        /// <returns></returns>
        public void AtiendeEstacion(int tiempo, GrafoMatriz<Estacion> grafo)
        {

            LeerPasajeros(tiempo);

            for (int i = 0; i < Pasajeros.Count; i++)
            {
                int dest = Pasajeros[i].GetEstacionDestinoId();
                //bool encontro = true;
              Queue<Pasajero>  posible = null;
                for (int j = 0; j < RutasPosibles.Count; j++)
                {
                    for (int k = 0; k < RutasPosibles[j].DarParadas().Count ; k++)
                    {
                        if (this.Id == RutasPosibles[j].DarParadas()[k][0])
                        {
                            if (grafo.DarMatriz()[k, dest] > grafo.DarMatriz()[k + 1, dest])
                            {
                                //Paradas[RutasPosibles[j].DarParadas()[k][1]].ColasPasajeros.AgregarElemento(Pasajeros[i], RutasPosibles[j].DarParadas()[k][2]);
                                //Pasajeros.RemoveAt(i);
                                if (posible == null)
                                {
                                    posible = Paradas[RutasPosibles[j].DarParadas()[k][1]].ColasPasajeros.ObtenerCola(RutasPosibles[j].DarParadas()[k][2]);
                                }else
                                if (Paradas[RutasPosibles[j].DarParadas()[k][1]].ColasPasajeros.TamanoCola(RutasPosibles[j].DarParadas()[k][2]) < posible.Count)
                                {
                                    posible = Paradas[RutasPosibles[j].DarParadas()[k][1]].ColasPasajeros.ObtenerCola(RutasPosibles[j].DarParadas()[k][2]);
                                }
                                //encontro = false;
                                
                            } 
                        }
                    }
                }
                if (posible != null)
                {
                    posible.Enqueue(Pasajeros[i]);
                    Pasajeros.RemoveAt(i);
                }
            }


            string cadena = "";
            for (int i = 0; i < Paradas.Count; i++)
            {
                cadena += "Parada numero: " + i + " ";
                for (int j = 0; j < Paradas[i].ColasPasajeros.DarTamano(); j++)
                {
                    if (Paradas[i].ColasPasajeros.colaEnUso(j))
                    {
                        cadena += "Cantidad cola " + j + ": " + Paradas[i].ColasPasajeros.TamanoCola(j) + " ";
                    }
                }
                cadena += "|| ";
            }
            cadena += "Cantidad pasajeros Historico : " + CantidadPasajeros +" Cantidad pasajeros Actual " + cantidadPasajerosEstacion() + " Cantidad pasajeros lista: " + Pasajeros.Count;

            //cadena = this.Nombre;
            //for (int i = 0; i < RutasPosibles.Count; i++)
            //{
            //   cadena +=  RutasPosibles[i].GetNombre();
            //}
            datos[tiempo] = cadena;

                Utilidades.ExportarInfo(datos, @"InformacionEst\" +this.Nombre, Id);
        }
Esempio n. 20
0
        /// <summary>
        /// Permite generar los pasajeros de la estación y agregarlos a la lista de pasajeros de la estación, desde donde son enviados a la cola de su ruta correspondiente.
        /// Precondición: Lista de eventos futuros de pasajeros existe.
        /// </summary>
        /// <param name="tiempo"></param>
        /// <param name="grafo"></param>
        /// <returns></returns>
        public void AtiendeEstacion(int tiempo, GrafoMatriz <Estacion> grafo)
        {
            LeerPasajeros(tiempo);

            for (int i = 0; i < Pasajeros.Count; i++)
            {
                int dest = Pasajeros[i].GetEstacionDestinoId();
                //bool encontro = true;
                Queue <Pasajero> posible = null;
                for (int j = 0; j < RutasPosibles.Count; j++)
                {
                    for (int k = 0; k < RutasPosibles[j].DarParadas().Count; k++)
                    {
                        if (this.Id == RutasPosibles[j].DarParadas()[k][0])
                        {
                            if (grafo.DarMatriz()[k, dest] > grafo.DarMatriz()[k + 1, dest])
                            {
                                //Paradas[RutasPosibles[j].DarParadas()[k][1]].ColasPasajeros.AgregarElemento(Pasajeros[i], RutasPosibles[j].DarParadas()[k][2]);
                                //Pasajeros.RemoveAt(i);
                                if (posible == null)
                                {
                                    posible = Paradas[RutasPosibles[j].DarParadas()[k][1]].ColasPasajeros.ObtenerCola(RutasPosibles[j].DarParadas()[k][2]);
                                }
                                else
                                if (Paradas[RutasPosibles[j].DarParadas()[k][1]].ColasPasajeros.TamanoCola(RutasPosibles[j].DarParadas()[k][2]) < posible.Count)
                                {
                                    posible = Paradas[RutasPosibles[j].DarParadas()[k][1]].ColasPasajeros.ObtenerCola(RutasPosibles[j].DarParadas()[k][2]);
                                }
                                //encontro = false;
                            }
                        }
                    }
                }
                if (posible != null)
                {
                    posible.Enqueue(Pasajeros[i]);
                    Pasajeros.RemoveAt(i);
                }
            }


            string cadena = "";

            for (int i = 0; i < Paradas.Count; i++)
            {
                cadena += "Parada numero: " + i + " ";
                for (int j = 0; j < Paradas[i].ColasPasajeros.DarTamano(); j++)
                {
                    if (Paradas[i].ColasPasajeros.colaEnUso(j))
                    {
                        cadena += "Cantidad cola " + j + ": " + Paradas[i].ColasPasajeros.TamanoCola(j) + " ";
                    }
                }
                cadena += "|| ";
            }
            cadena += "Cantidad pasajeros Historico : " + CantidadPasajeros + " Cantidad pasajeros Actual " + cantidadPasajerosEstacion() + " Cantidad pasajeros lista: " + Pasajeros.Count;

            //cadena = this.Nombre;
            //for (int i = 0; i < RutasPosibles.Count; i++)
            //{
            //   cadena +=  RutasPosibles[i].GetNombre();
            //}
            datos[tiempo] = cadena;

            Utilidades.ExportarInfo(datos, @"InformacionEst\" + this.Nombre, Id);
        }
Esempio n. 21
0
        /// <summary>
        /// Permite realizar las operaciones del bus, que consiten en desenso de pasajeros, subir pasajeros y avanzar a otra estación.
        /// </summary>
        /// <param name="tiempo"></param>
        /// <param name="grafo"></param>
        /// <returns></returns>
        public void AtiendeBus(int tiempo, GrafoMatriz <Estacion> grafo)
        {
            if (tiempo == siguienteInteraccion)
            {
                Estacion[] estaciones = grafo.DarVertices();



                int EstacionActualRuta = ruta.DarParadas()[EstacionActual][0];
                int NumParada          = ruta.DarParadas()[EstacionActual][1];
                int NumCola            = ruta.DarParadas()[EstacionActual][2];

                if (ruta.DarParadas().Count <= EstacionActual + 1)
                {
                    TerminoRecorrido = true;
                }
                Estacion estacion = estaciones[EstacionActualRuta];
                Parada   parada   = estacion.DarParadas()[NumParada];
                if (!parada.Estado && !Estado)
                {
                    parada.Estado = true;
                    this.Estado   = true;
                    for (int i = 0; i < Pasajeros.Length; i++)
                    {
                        if (Pasajeros[i] != null)
                        {
                            if (Pasajeros[i].EsMiEstacion(EstacionActual, this, grafo) == 4)
                            {
                                Pasajeros[i] = null;
                                CapacidadActual--;
                            }
                            else if (Pasajeros[i].EsMiEstacion(EstacionActual, this, grafo) == 1)
                            {
                                estaciones[EstacionActual].agregarPasajeros(Pasajeros[i]);
                                estaciones[EstacionActual].AumentarCantidadPasajeros();
                                Pasajeros[i] = null;
                                CapacidadActual--;
                            }
                        }
                    }


                    ArregloCola <Pasajero> pasajeros = parada.ColasPasajeros;

                    while (!pasajeros.ColaVacia(NumCola) && CapacidadActual < Capacidad)
                    {
                        agregarPasajero(pasajeros.ObtenerElemento(NumCola));
                        pasajeros.EliminarElemento(NumCola);
                        CapacidadActual++;
                    }

                    siguienteInteraccion++;
                    datos[tiempo] = "Nombre estación: " + grafo.DarVertices()[EstacionActualRuta].GetNombre() + " Siguiente interacción: " + siguienteInteraccion + " Cantidad pasajeros: " + CapacidadActual + " Tiempo Actual: " + tiempo + " Numero parada: " + NumParada + " Cola: " + NumCola;
                }
                else if (Estado)
                {
                    datos[tiempo] = "Atiende";
                    parada.Estado = false;
                    this.Estado   = false;
                    EstacionActual++;
                    if ((tiempo > 120 && tiempo < 240) || (tiempo > 780 && tiempo < 900))
                    {
                        siguienteInteraccion += (int)(grafo.DarMatriz()[EstacionActualRuta, ruta.DarParadas()[EstacionActual][0]] / VELOCIDAD_PICO);
                    }
                    else
                    {
                        //Console.WriteLine(ruta.DarParadas()[EstacionActual][0]);
                        //Console.WriteLine(grafo.DarMatriz()[EstacionActualRuta, ruta.DarParadas()[EstacionActual][0]]);
                        siguienteInteraccion += (int)(grafo.DarMatriz()[EstacionActualRuta, ruta.DarParadas()[EstacionActual][0]] / VELOCIDAD_VALLE);
                    }
                }
                else
                {
                    datos[tiempo] = "Espera Atención";
                    siguienteInteraccion++;
                }
            }
            else
            {
                datos[tiempo] = "Espera";
            }
            Utilidades.ExportarInfo(datos, @"Informacion\bus" + this.ruta.GetNombre() + " ", this.GetHashCode());
        }
Esempio n. 22
0
 private void EscenarioMuchosVertices()
 {
     grafo = new GrafoMatriz<int>();
     for (int i = 0; i < 1001; i++)
     {
         grafo.AgregarVertice(i);
     }
     for (int i = 0; i < 1000; i++)
     {
         grafo.AgregarArista(i, i + 1, 5);
     }
 }
Esempio n. 23
0
        /// <summary>
        /// Permite realizar las operaciones del bus, que consiten en desenso de pasajeros, subir pasajeros y avanzar a otra estación.
        /// </summary>
        /// <param name="tiempo"></param>
        /// <param name="grafo"></param>
        /// <returns></returns>
        public void AtiendeBus(int tiempo, GrafoMatriz<Estacion> grafo)
        {
            if (tiempo == siguienteInteraccion)
            {
                Estacion[] estaciones = grafo.DarVertices();
                    
                

                int EstacionActualRuta = ruta.DarParadas()[EstacionActual][0];
                int NumParada = ruta.DarParadas()[EstacionActual][1];
                int NumCola = ruta.DarParadas()[EstacionActual][2];

                if (ruta.DarParadas().Count <= EstacionActual + 1)
                {
                    TerminoRecorrido = true;
                }
                Estacion estacion = estaciones[EstacionActualRuta];
                Parada parada = estacion.DarParadas()[NumParada];
                if (!parada.Estado && !Estado)
                {
                    parada.Estado = true;
                    this.Estado = true;
                    for (int i = 0; i < Pasajeros.Length; i++)
                    {
                        if (Pasajeros[i] != null)
                        {
                            if (Pasajeros[i].EsMiEstacion(EstacionActual, this, grafo) == 4)
                            {
                                Pasajeros[i] = null;
                                CapacidadActual--;
                            }
                            else if (Pasajeros[i].EsMiEstacion(EstacionActual, this, grafo) == 1)
                            {

                                estaciones[EstacionActual].agregarPasajeros(Pasajeros[i]);
                                estaciones[EstacionActual].AumentarCantidadPasajeros();
                                Pasajeros[i] = null;
                                CapacidadActual--;

                            }
                        }
                    }

                   
                    ArregloCola<Pasajero> pasajeros = parada.ColasPasajeros;

                    while (!pasajeros.ColaVacia(NumCola) && CapacidadActual < Capacidad)
                    {
                        agregarPasajero(pasajeros.ObtenerElemento(NumCola));
                        pasajeros.EliminarElemento(NumCola);
                        CapacidadActual++;
                    }

                    siguienteInteraccion++;
                    datos[tiempo] = "Nombre estación: " + grafo.DarVertices()[EstacionActualRuta].GetNombre() + " Siguiente interacción: " + siguienteInteraccion + " Cantidad pasajeros: " + CapacidadActual +" Tiempo Actual: " + tiempo + " Numero parada: " + NumParada + " Cola: " + NumCola;
                   
                }
                else if (Estado)
                {
                    datos[tiempo] = "Atiende";
                    parada.Estado = false;
                    this.Estado = false;
                    EstacionActual++;
                    if ((tiempo > 120 && tiempo < 240) || (tiempo > 780 && tiempo < 900))
                    {
                        siguienteInteraccion += (int)(grafo.DarMatriz()[EstacionActualRuta, ruta.DarParadas()[EstacionActual][0]] / VELOCIDAD_PICO);

                    }
                    else
                    {
                        //Console.WriteLine(ruta.DarParadas()[EstacionActual][0]);
                        //Console.WriteLine(grafo.DarMatriz()[EstacionActualRuta, ruta.DarParadas()[EstacionActual][0]]);
                        siguienteInteraccion += (int)(grafo.DarMatriz()[EstacionActualRuta, ruta.DarParadas()[EstacionActual][0]] / VELOCIDAD_VALLE);

                    }

                    
                }
                else
                {
                    datos[tiempo] = "Espera Atención";
                    siguienteInteraccion++;
                }

                
                
                
            }
            else
            {
                datos[tiempo] = "Espera";
            }
            Utilidades.ExportarInfo(datos, @"Informacion\bus" + this.ruta.GetNombre()+" ", this.GetHashCode());


        }
Esempio n. 24
0
 public void Run(int duracion, int tiempo, GrafoMatriz<Estacion> estaciones)
 {
     while (tiempo != duracion)
     {
         AtiendeBus(tiempo, estaciones);
     }
 }
Esempio n. 25
0
        private void Escenario()
        {
             
            grafo = new GrafoMatriz<int>();

        }
Esempio n. 26
0
 private void Escenario()
 {
     grafo = new GrafoMatriz <int>();
 }