Files
RutasDBUS/RutasDBUS/Modelos/Planificacion/ParadaCandidata.cs
Pedro 7b52dd2c73 - Rediseñada la configuración de pendientes con un panel compacto accesible desde la rueda.
- Corregida la posición del panel para que no salga fuera de la pantalla.
- Renombrado el interruptor a Visualizar Pendientes.
- Aplicado el porcentaje de subida como umbral para calcular el esfuerzo.
- Mostrado el umbral de subida utilizado dentro de la tabla de elevación.
- Añadido al aviso el total de distancia con pendiente y la altura subida en metros y pisos.
- Evitada la duplicación de acumulados al repintar las pendientes.
- Cambiados los valores por defecto a subida 2 %, bajada 5 % y coeficiente 8,2.
- Añadida la distancia equilibrada andando al detalle técnico.
- Mostradas las distancias en kilómetros con tres decimales.
- Mostrada la fecha del ZIP activo en el acceso de gestión del modelo DBUS.
- Añadidas migraciones para actualizar los antiguos valores predeterminados.
2026-07-20 15:29:25 +02:00

76 lines
2.7 KiB
C#

using RutasDBUS.Modelos.RedBus;
namespace RutasDBUS.Modelos.Planificacion;
public sealed class ParadaCandidata
{
public Parada Parada { get; set; } = default!;
public double DistanciaEuclidea { get; set; }
public double DistanciaAPie { get; set; }
public double TiempoAPie { get; set; }
}
public sealed class ParametrosPlanificadorRuta
{
// velocidades
public double VelocidadPieKmH { get; set; } = 3.6;
public double VelocidadBusKmH { get; set; } = 16.0;
// penalizaciones
public int MinutosPorTransbordo { get; set; } = 5;
public int MargenTransbordoSegundos { get; set; } = 120;
public int SegundosPorParadaBus { get; set; } = 30;
public double FactorPenalizacionDistanciaPie { get; set; } = 1.35;
public double ParametroPenalizacionDistanciaPieMetros { get; set; } = 100.0;
public double PesoTransbordoRankingMinutos { get; set; } = 4.0;
public double FactorEquilibradoAndarBus { get; set; } = 12.0;
// selección candidatas
public int RadioParadasCandidatasMetros { get; set; } = 1200;
public int MaxParadasCandidatasPorLado { get; set; } = 12;
public bool UsarOsrmParaRanking { get; set; } = false;
// filtro itinerarios
public bool ActivarRangoLineas { get; set; } = false;
public int LineaMin { get; set; } = 1;
public int LineaMax { get; set; } = 999;
public List<int> LineasPermitidas { get; set; } = new();
public bool ActivarRangoItinerarios { get; set; } = true;
public int ItinerarioMin { get; set; } = 1;
public int ItinerarioMax { get; set; } = 80;
// filtro de transbordos
public bool ActivarRangoTransbordos { get; set; } = true;
public int MinTransbordosPermitidos { get; set; } = 0;
public int MaxTransbordosPermitidos { get; set; } = 3;
// límites exploración
public int MaxParesEvaluados { get; set; } = 280;
public int MaxAlternativasBusPorPar { get; set; } = 4;
// planificación temporal
public bool UsarHorariosReales { get; set; } = true;
public DateOnly? FechaSalida { get; set; }
public TimeOnly? HoraSalida { get; set; }
public bool DescartarAlternativasSinHorario { get; set; } = false;
// filtros de espera
public int MaxEsperaInicialMinutos { get; set; } = 90;
public int MaxEsperaTransbordoMinutos { get; set; } = 60;
public int MaxEsperaTotalMinutos { get; set; } = 120;
// preferencia UI (null mantiene el criterio equilibrado por defecto)
public string? PreferenciaEtiquetaRuta { get; set; } = null;
}
public sealed class ResultadoPlanificadorRuta
{
public bool Ok { get; set; }
public string Mensaje { get; set; } = "";
public List<AlternativaRuta> Alternativas { get; set; } = new();
public int IndicePreferido { get; set; } = 0;
}