/// <summary> /// Genera AOG de manera aleatoria entre dos fechas. /// </summary> /// <param name="fechaIni">Fecha inicio</param> /// <param name="fechaFin">Fecha término</param> /// <param name="infoAOG">Información de AOG</param> internal void GenerarAOGs(DateTime fechaIni, DateTime fechaFin, SerializableDictionary <string, DataDisrupcion> infoAOG) { ClasificarBackups(fechaIni, fechaFin); foreach (string flota in _backups_clasificados.Keys) { _AOGs.Add(flota, new Dictionary <string, Dictionary <DateTime, double> >()); foreach (string origen in _backups_clasificados[flota].Keys) { _AOGs[flota].Add(origen, new Dictionary <DateTime, double>()); foreach (DateTime fecha in _backups_clasificados[flota][origen].Keys) { _AOGs[flota][origen].Add(fecha, 0); string key = flota + "_" + origen + "_" + fecha.Month.ToString(); if (infoAOG.ContainsKey(key)) { DataDisrupcion data = infoAOG[key]; double dias_AOG = Distribuciones.GenerarAleatorio(_rdm, DistribucionesEnum.Normal, data.Prob, data.Media, data.Desvest, 0, 1); _AOGs[flota][origen][fecha] = dias_AOG * 24; } else { //No hay info de AOG para cierta flota - origen y mes. No se hace nada. } UsarBackupsPorAOG(_backups_clasificados[flota][origen][fecha], _AOGs[flota][origen][fecha]); } } } }
/// <summary> /// Carga información de AOG /// </summary> /// <param name="data">Tabla con la información de AOG's</param> public void CargarInfoAOG(DataTable data) { foreach (DataRow row in data.Rows) { if (data.Rows.IndexOf(row) >= 1 && row[0].ToString().ToCharArray().Length > 0) { object[] valores = row.ItemArray; string key = valores[0].ToString() + "_" + valores[1].ToString() + "_" + valores[2].ToString(); DataDisrupcion info = new DataDisrupcion(Convert.ToDouble(valores[3].ToString().Replace('.', ',')), Convert.ToDouble(valores[4].ToString().Replace('.', ',')), Convert.ToDouble(valores[5].ToString().Replace('.', ','))); _info_AOG.Add(key, info); } } }