private void Escenario1() { grafo = new GrafoMatriz<int>(); grafo.AgregarVertice(1); grafo.AgregarVertice(2); grafo.AgregarVertice(3); }
public void Run(int duracion, int tiempo, GrafoMatriz <Estacion> estaciones) { while (tiempo != duracion) { AtiendeBus(tiempo, estaciones); } }
/// <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); }
private void Escenario1() { grafo = new GrafoMatriz <int>(); grafo.AgregarVertice(1); grafo.AgregarVertice(2); grafo.AgregarVertice(3); }
/// <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; }
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) //{ //} } }
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); }
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); }
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(); }
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); }
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); }
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(); }
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) //{ //} } }
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); } }
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); }
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); }
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; }
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); }
/// <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); }
/// <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); }
/// <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()); }
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); } }
/// <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()); }
public void Run(int duracion, int tiempo, GrafoMatriz<Estacion> estaciones) { while (tiempo != duracion) { AtiendeBus(tiempo, estaciones); } }
private void Escenario() { grafo = new GrafoMatriz<int>(); }
private void Escenario() { grafo = new GrafoMatriz <int>(); }