private void DeterminarPropositoDelCliente(Iteracion iteracion) { int probCompra = controlador.porcentajeLlegadaComprador * 10; int probEncargo = controlador.porcentajeLlegadaEncargo * 10; int probRetiro = controlador.porcentajeLlegadaRetiro * 10; if (!relojero.HayRelojesEnElNegocio()) { probRetiro = 0; } if (PropositoDelCLiente == Propositos.Encargar && relojero.RelojesListos == 0) { probRetiro = 0; } double rnd; int probTotal = probRetiro + probCompra + probEncargo; int random = GeneradorDistribuciones.UniformeAB(0, probTotal, out rnd); iteracion.rndPropositoCliente = rnd + ""; if (random < probRetiro) { PropositoDelCLiente = Propositos.Retirar; return; } if (random < probCompra + probRetiro) { PropositoDelCLiente = Propositos.Comprar; return; } PropositoDelCLiente = Propositos.Encargar; }
private void comenzarAtencion(Iteracion iteracion) { DeterminarPropositoDelCliente(iteracion); iteracion.propositoCliente = PropositoDelCLiente.ToString(); double rnd; int tiempoMin = 0; int tiempoMax = 0; switch (PropositoDelCLiente) { case Propositos.Comprar: tiempoMin = controlador.MinTiempoCompra; tiempoMax = controlador.MaxTiempoCompra; break; case Propositos.Encargar: tiempoMin = controlador.MinTiempoEncargos; tiempoMax = controlador.MaxTiempoEncargos; break; case Propositos.Retirar: tiempoMin = controlador.MinTiempoRetiros; tiempoMax = controlador.MaxTiempoRetiros; break; } int tiempoAtencion = GeneradorDistribuciones.UniformeAB(tiempoMin, tiempoMax, out rnd); iteracion.rndTiempoAtencion = rnd.ToString(); iteracion.tiempoAtencion = tiempoAtencion.ToString(); Evento FinAtencion = new Evento(Evento.Tipos.FinAtencionCliente, tiempoAtencion + controlador.HoraActual); controlador.AgregarEvento(FinAtencion); }
private void GenerarProximaLlegada(Iteracion iteracion) { double rnd; int tiempoLlegada = GeneradorDistribuciones.UniformeAB(MinTiempoLlegadaCliente, MaxTiempoLlegadaCliente, out rnd); Evento Llegada = new Evento(Evento.Tipos.LlegadaCliente, tiempoLlegada + HoraActual); AgregarEvento(Llegada); iteracion.randomLlegada = rnd.ToString(); iteracion.tiempoLlegada = tiempoLlegada.ToString(); }
private void ComenzarReparacion(Iteracion iteracion) { double rnd; int tiempoReparacion = GeneradorDistribuciones.UniformeAB(controlador.MinTiempoReparacion, controlador.MaxTiempoReparacion, out rnd); iteracion.rndTiempoReparacion = rnd.ToString(); iteracion.tiempoReparacion = tiempoReparacion.ToString(); Evento FinReparacion = new Evento(Evento.Tipos.FinReparacion, tiempoReparacion + controlador.HoraActual); controlador.AgregarEvento(FinReparacion); }