Example #1
0
        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;
        }
Example #2
0
        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);
        }
Example #3
0
        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();
        }
Example #4
0
        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);
        }