/// <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); }
/// <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); }
/// <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); }