private ViajeDistribucion GetDistribucion(DateTime date) { var distribuciones = Distribuciones.Where(d => d.InicioReal.HasValue).ToList(); if (!distribuciones.Any()) { return(null); } while (distribuciones.Any()) { var distribucion = distribuciones[0]; var inicio = distribucion.InicioReal.Value; var fin = distribucion.Fin; if (distribucion.Fin < date) { distribuciones.RemoveAt(0); } else if (date >= inicio && date < fin) { return(distribucion); } else { break; } } return(null); }
private void generarDistribucionTipoAuto() { List <Probabilidades <TipoAuto> > ListaTiposAutos = new List <Probabilidades <TipoAuto> >(); Probabilidades <TipoAuto> p; foreach (DataGridViewRow r in dgwTipoAuto.Rows) { var nombre = r.Cells[0].Value.ToString(); var prob = r.Cells[1].Value; var tipo = new TipoAuto(); tipo.Nombre = nombre; if (nombre == "Compacto(C)") { tipo.DistribucionComision = ComisionComp; tipo.Numero = 1; } else if (nombre == "Auto Mediano (AM)") { tipo.DistribucionComision = ComisionAM; tipo.Numero = 2; } else { tipo.DistribucionComision = ComisionAL; tipo.Numero = 3; } p = new Probabilidades <TipoAuto>(tipo, Convert.ToDouble(prob)); ListaTiposAutos.Add(p); } this.TipoAuto = new Distribuciones <TipoAuto>(ListaTiposAutos); }
private void generarDistribucionesTipos() { List <Probabilidades <double> > ListaComisionAL = new List <Probabilidades <double> >(); List <Probabilidades <double> > ListaComisionAM = new List <Probabilidades <double> >(); List <Probabilidades <double> > ListaComisionComp = new List <Probabilidades <double> >(); foreach (DataGridViewRow r in dgwcomisionAL.Rows) { var valor = r.Cells[0].Value; var probabilidad = r.Cells[1].Value; ListaComisionAL.Add(new Probabilidades <double>(Convert.ToDouble(valor), Convert.ToDouble(probabilidad))); } this.ComisionAL = new Distribuciones <double>(ListaComisionAL); foreach (DataGridViewRow r in dgwcomisionAM.Rows) { var valor = r.Cells[0].Value; var probabilidad = r.Cells[1].Value; ListaComisionAM.Add(new Probabilidades <double>(Convert.ToDouble(valor), Convert.ToDouble(probabilidad))); } this.ComisionAM = new Distribuciones <double>(ListaComisionAM); var comison_comp = txtComisionAC.Text; ListaComisionComp.Add(new Probabilidades <double>(Convert.ToDouble(comison_comp), 100)); this.ComisionComp = new Distribuciones <double>(ListaComisionComp); }
/// <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]); } } } }
private void BTNAgregarDistribucion_Click(object sender, EventArgs e) { var seleccionadas = DvgDistribuidores.SelectedRows; if (seleccionadas.Count == 0 || seleccionadas.Count > 1) { MessageBox.Show("Debe seleccionar una fila"); return; } foreach (DataGridViewRow fila in seleccionadas) { var nombre = fila.Cells[1].Value; var apellido = fila.Cells[2].Value; var cuit = fila.Cells[0].Value; var fecha = fila.Cells[4].Value; if (cuit != null) { var distribuir = new Distribuciones(cuit.ToString()); distribuir.ShowDialog(); ActualizarDistribuidores(); } else { MessageBox.Show("Debe seleccionar una fila no vacia para poder editar"); } } }
private void generarDistribucionCantidad() { List <Probabilidades <int> > ListaCantAutos = new List <Probabilidades <int> >(); foreach (DataGridViewRow r in dgwcantautos.Rows) { var valor = r.Cells[0].Value; var probabilidad = r.Cells[1].Value; ListaCantAutos.Add(new Probabilidades <int>(Convert.ToInt32(valor), Convert.ToDouble(probabilidad))); } this.CantAutosVendidos = new Distribuciones <int>(ListaCantAutos); }
private void GenerarDistribucionPresupuesto() { var distribucionInversion = new List <Probabilidades <double> >(); var presupuesto = Convert.ToDecimal(this.txtPresupuesto.Text, new CultureInfo("en-US")) / dgvPresupuesto.RowCount; foreach (DataGridViewRow r in dgvPresupuesto.Rows) { var valor = r.Cells[0].Value; var probabilidad = r.Cells[1].Value; distribucionInversion.Add(new Probabilidades <double>(Convert.ToDouble(valor), Convert.ToDouble(probabilidad))); } this.Inversion = new Distribuciones <double>(distribucionInversion); }
public void LoadFechasDeCorte() { var horas = new List <DateTime>(); var inicio = Inicio; while (inicio < Fin) { foreach (var turno in Turnos) { if (turno.AppliesToDate(inicio, Feriados)) { horas.Add(inicio.Date.AddHours(turno.Inicio - GmtModifier)); horas.Add(inicio.Date.AddHours(turno.Fin - GmtModifier)); } } for (var i = inicio.Date; i < inicio.Date.AddDays(1); i = i.AddHours(1)) { if (i < inicio) { continue; } horas.Add(i); } inicio = inicio.Date.AddDays(1); } FechasDeCorte = Tickets.Select(t => t.FechaTicket.Value) .Union(Tickets.Where(t => t.FechaFin.HasValue).Select(t => t.FechaFin.Value)) .Union(Distribuciones.Where(d => d.InicioReal.HasValue).Select(d => d.InicioReal.Value)) .Union(Distribuciones.Where(d => d.InicioReal.HasValue).Select(d => d.Fin)) .Union(EventosRfid.Select(e => e.Key)) .Union(EventosGeocerca.Select(e => e.Key)) //.Union(EventosTimeTracking.Select(e => e.Key)) .Union(horas) .Where(h => h >= Inicio && h <= Fin) .Distinct() .OrderBy(h => h) .ToList(); if (FechasDeCorte.Last() != Fin) { FechasDeCorte.Add(Fin); } }
private void CreateDistribucionPresupuesto() { var distribucionInversion = new List <Probabilidades <double> >(); var labels = panelPresupuesto.Controls.OfType <Label>().Where(x => x.Name.Contains("lblCantPres")); var presupuesto = Convert.ToDecimal(this.txtPresupuesto.Text, new CultureInfo("en-US")) / labels.Count(); var i = 4; var prob = (double)((decimal)1 / labels.Count()); foreach (Control fi in labels) { var name = string.Format("lblCantPres{0}", i); if (fi.Name == name) { var value = Convert.ToDouble(fi.Text.ToString()); distribucionInversion.Add(new Probabilidades <double>(Convert.ToDouble(value), prob)); } i--; } this.Inversion = new Distribuciones <double>(distribucionInversion); }
private void distribucionesToolStripMenuItem_Click(object sender, EventArgs e) { var distrib = new Distribuciones(); distrib.ShowDialog(); }