예제 #1
0
 /// <summary>
 /// Entrega la probabilidad de disrupcion por clima para un mes, aeropuerto y periodo del día específicos.
 /// </summary>
 /// <param name="mes">Mes del año</param>
 /// <param name="estacion">Estación</param>
 /// <param name="periodo">Periodo del día</param>
 /// <returns>Probabilidad de que haya una disrupción climática</returns>
 private double GetProbabilidadClima(string mes, string estacion, int hora)
 {
     if (this != null && this.ColeccionDisrupciones != null && this.ColeccionDisrupciones.ContainsKey(TipoDisrupcion.METEREOLOGIA.ToString()))
     {
         InfoDisrupcion3D infoWXS = (InfoDisrupcion3D)this.ColeccionDisrupciones[TipoDisrupcion.METEREOLOGIA.ToString()];
         if (infoWXS.Parametros != null)
         {
             if (infoWXS.Parametros.ContainsKey(mes))
             {
                 if (infoWXS.Parametros[mes].ContainsKey(estacion))
                 {
                     string periodo = Utilidades.GetPeriodo(hora, infoWXS.CantidadDeValoresPorColumna(2));
                     if (infoWXS.Parametros[mes][estacion].ContainsKey(periodo))
                     {
                         double factor = 1;
                         if (infoWXS.FactorDesviacionEscenario.ContainsKey(estacion))
                         {
                             factor = infoWXS.FactorDesviacionEscenario[estacion][MapDisrupcionesEscenario[TipoDisrupcion.METEREOLOGIA]];
                         }
                         return(infoWXS.Parametros[mes][estacion][periodo].Prob * factor);
                     }
                 }
             }
         }
     }
     return(0);
 }
예제 #2
0
        /// <summary>
        /// Método para crear una nueva instancia de ModeloDisrupciones a partir de la actual.
        /// </summary>
        /// <returns>Objeto de ModeloDisrupciones</returns>
        public object Clone()
        {
            ModeloDisrupciones m = null;

            foreach (string s in this.ColeccionDisrupciones.Keys)
            {
                int dim = ColeccionDisrupciones[s].Dimension;
                if (dim == 1)
                {
                    InfoDisrupcion1D info = ColeccionDisrupciones[s] as InfoDisrupcion1D;
                    m.ColeccionDisrupciones.Add(s, (InfoDisrupcion1D)info.Clone());
                }
                else if (dim == 2)
                {
                    InfoDisrupcion2D info = (Disrupciones.InfoDisrupcion2D)ColeccionDisrupciones[s];
                    m.ColeccionDisrupciones.Add(s, (InfoDisrupcion2D)info.Clone());
                }
                else if (dim == 3)
                {
                    InfoDisrupcion3D info = (Disrupciones.InfoDisrupcion3D)ColeccionDisrupciones[s];
                    m.ColeccionDisrupciones.Add(s, (InfoDisrupcion3D)info.Clone());
                }
            }
            return(m);
        }
예제 #3
0
        /// <summary>
        /// Crea una copia de la instancia actual
        /// </summary>
        /// <returns></returns>
        public object Clone()
        {
            InfoDisrupcion3D a = new InfoDisrupcion3D(this.Nombre, this.Dimension, this.AplicaDesviacionEnEscenarios);

            foreach (string s1 in this.Parametros.Keys)
            {
                a.Parametros.Add(s1, new SerializableDictionary <string, SerializableDictionary <string, DataDisrupcion> >());
                foreach (string s2 in this.Parametros[s1].Keys)
                {
                    a.Parametros[s1].Add(s2, new SerializableDictionary <string, DataDisrupcion>());
                    foreach (string s3 in this.Parametros[s1][s2].Keys)
                    {
                        a.Parametros[s1][s2].Add(s3, new DataDisrupcion());
                        a.Parametros[s1][s2][s3].Prob    = this.Parametros[s1][s2][s3].Prob;
                        a.Parametros[s1][s2][s3].Media   = this.Parametros[s1][s2][s3].Media;
                        a.Parametros[s1][s2][s3].Desvest = this.Parametros[s1][s2][s3].Desvest;
                    }
                }
            }
            return(a);
        }