Exemple #1
0
 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);
 }
Exemple #2
0
 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);
 }
Exemple #3
0
 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);
 }
Exemple #4
0
 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();
 }
Exemple #5
0
 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();
 }
Exemple #6
0
 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");
     };
 }
Exemple #7
0
        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;
                    }
                }
            }
        }