public void AgregarInfoRecovery(int iteracion, FaseOptimizacion fase, Dictionary <int, List <Swap> > swaps) { if (!_historial_recovery.ContainsKey(fase)) { _historial_recovery.Add(fase, new Dictionary <int, Dictionary <int, List <Swap> > >()); } _historial_recovery[fase].Add(iteracion, swaps); }
public void AgregarInfoVariaciones(int iteracion, FaseOptimizacion fase, Dictionary <int, int> variaciones) { if (!_historial_variaciones_tramos.ContainsKey(fase)) { _historial_variaciones_tramos.Add(fase, new Dictionary <int, Dictionary <int, int> >()); } _historial_variaciones_tramos[fase].Add(iteracion, variaciones); }
public void AgregarInfoImpuntualidad(int iteracion, FaseOptimizacion fase, Dictionary <int, ExplicacionImpuntualidad> impuntualidades) { if (!_historial_impuntualidades.ContainsKey(fase)) { _historial_impuntualidades.Add(fase, new Dictionary <int, Dictionary <int, ExplicacionImpuntualidad> >()); } _historial_impuntualidades[fase].Add(iteracion, impuntualidades); }
public ResumenIteracion(FaseOptimizacion fase, int numero_iteracion, Dictionary <int, ExplicacionImpuntualidad> impuntualidades, Dictionary <int, int> variaciones) { this._impuntualidades = impuntualidades; this._variaciones = variaciones; this._fase = fase; this._numero_iteracion = numero_iteracion; EstimarIndicadores(); }
public ResumenIteracion(FaseOptimizacion fase, int numero_iteracion, Dictionary <int, ExplicacionImpuntualidad> impuntualidades) { this._impuntualidades = impuntualidades; this._fase = fase; this._numero_iteracion = numero_iteracion; this._variaciones = new Dictionary <int, int>(); foreach (int id_tramo in impuntualidades.Keys) { _variaciones.Add(id_tramo, 0); } EstimarIndicadores(); }
public static ResumenIteracion ConstruirResumenIteracion(FaseOptimizacion fase, int numero_iteracion, Dictionary <FaseOptimizacion, Dictionary <int, Dictionary <int, ExplicacionImpuntualidad> > > historial_impuntualidad, Dictionary <FaseOptimizacion, Dictionary <int, Dictionary <int, int> > > historial_variaciones) { if (historial_impuntualidad.ContainsKey(fase) && historial_impuntualidad[fase].ContainsKey(numero_iteracion)) { if (historial_variaciones.ContainsKey(fase) && historial_variaciones[fase].ContainsKey(numero_iteracion)) { return(new ResumenIteracion(fase, numero_iteracion, historial_impuntualidad[fase][numero_iteracion], historial_variaciones[fase][numero_iteracion])); } else { return(new ResumenIteracion(fase, numero_iteracion, historial_impuntualidad[fase][numero_iteracion])); } } else { throw new Exception("Error al construir resumen iteracion"); }; }
private void ObtenerIteracionDeMenorAtraso(Dictionary <FaseOptimizacion, Dictionary <int, Dictionary <int, ExplicacionImpuntualidad> > > historial_puntualidad, string id_avion, out FaseOptimizacion mejor_fase, out int mejor_iteracion) { mejor_fase = FaseOptimizacion.Inicio; mejor_iteracion = -1; Dictionary <FaseOptimizacion, Dictionary <int, double> > atraso_acumulado = new Dictionary <FaseOptimizacion, Dictionary <int, double> >(); int total_tramos = this._tramos_por_avion[id_avion].Count; foreach (FaseOptimizacion fase in historial_puntualidad.Keys) { atraso_acumulado.Add(fase, new Dictionary <int, double>()); foreach (int i in historial_puntualidad[fase].Keys) { atraso_acumulado[fase].Add(i, 0); foreach (InfoTramoParaOptimizacion tramo in this._tramos_por_avion[id_avion]) { atraso_acumulado[fase][i] += historial_puntualidad[fase][i][tramo.IdTramo].AtrasoTotal; } atraso_acumulado[fase][i] /= total_tramos; } } double minimo = double.MaxValue; foreach (FaseOptimizacion fase in historial_puntualidad.Keys) { foreach (int index in atraso_acumulado[fase].Keys) { if (atraso_acumulado[fase][index] < minimo) { minimo = atraso_acumulado[fase][index]; mejor_iteracion = index; mejor_fase = fase; } } } }