protected override void AddStateVectorToShowables() { ShowableStateVectors.Add(new VectorEstadoMostrableSimulador { Evento = PreviousStateVector.Evento, Clock = PreviousStateVector.Clock.StripMilliseconds(), RandomProximaLlegadaVehiculo = PreviousStateVector.RandomProximaLlegadaVehiculo.Round(2), ProximaLlegadaVehiculo = PreviousStateVector.ProximaLlegadaVehiculo.StripMilliseconds(), EstadoSurtidor1 = PreviousStateVector.EstadoSurtidor1, CargaCombustibleSurtidor1 = PreviousStateVector.CargaCombustibleSurtidor1, TiempoCargaCombustibleSurtidor1 = PreviousStateVector.TiempoCargaCombustibleSurtidor1.StripMilliseconds(), FinCargaCombustibleSurtidor1 = PreviousStateVector.FinCargaCombustibleSurtidor1.StripMilliseconds(), RandomFinLimpiezaParabrisasSurtidor1 = PreviousStateVector.RandomFinLimpiezaParabrisasSurtidor1.Round(2), FinLimpiezaParabrisasSurtidor1 = PreviousStateVector.FinLimpiezaParabrisasSurtidor1.StripMilliseconds(), FinCobroSurtidor1 = PreviousStateVector.FinCobroSurtidor1.StripMilliseconds(), ColaSurtidor1 = CopiarColaSurtidor(Entity.Surtidor1), EstadoSurtidor2 = PreviousStateVector.EstadoSurtidor2, CargaCombustibleSurtidor2 = PreviousStateVector.CargaCombustibleSurtidor2, TiempoCargaCombustibleSurtidor2 = PreviousStateVector.TiempoCargaCombustibleSurtidor2.StripMilliseconds(), FinCargaCombustibleSurtidor2 = PreviousStateVector.FinCargaCombustibleSurtidor2.StripMilliseconds(), RandomFinLimpiezaParabrisasSurtidor2 = PreviousStateVector.RandomFinLimpiezaParabrisasSurtidor2.Round(2), FinLimpiezaParabrisasSurtidor2 = PreviousStateVector.FinLimpiezaParabrisasSurtidor2.StripMilliseconds(), FinCobroSurtidor2 = PreviousStateVector.FinCobroSurtidor2.StripMilliseconds(), ColaSurtidor2 = CopiarColaSurtidor(Entity.Surtidor2), SumatoriaVehiculosAtendidos = PreviousStateVector.SumatoriaVehiculosAtendidos, SumatoriaTiempoPermanenciaSistema = PreviousStateVector.SumatoriaTiempoPermanenciaSistema.StripMilliseconds() }); StripMillisecondsFromLastShowableVectorQueues(); }
private void StripMillisecondsFromLastShowableVectorQueues() { foreach (var item in ShowableStateVectors.Last().ColaSurtidor1) { item.Llegada = item.Llegada.StripMilliseconds(); } foreach (var item in ShowableStateVectors.Last().ColaSurtidor2) { item.Llegada = item.Llegada.StripMilliseconds(); } }
protected override void EventRoutine() { if (EsLlegadaVehiculo()) { ProgramarSiguienteLlegada(); if (SurtidorEstaLibre(Entity.Surtidor1)) { Surtidor1AtiendeVehiculo(new Vehiculo(EstadoVehiculo.EnAtencion, CurrentStateVector.Clock)); } else if (SurtidorEstaLibre(Entity.Surtidor2)) { Surtidor2AtiendeVehiculo(new Vehiculo(EstadoVehiculo.EnAtencion, CurrentStateVector.Clock)); } else if (Surtidor1ColaMenorIgualSurtidor2()) { AgregarVehiculoColaSurtidor1(); } else { AgregarVehiculoColaSurtidor2(); } } if (EsFinCargaCombustibleSurtidor1()) { CurrentStateVector.FinCargaCombustibleSurtidor1 = null; } if (EsFinCargaCombustibleSurtidor2()) { CurrentStateVector.FinCargaCombustibleSurtidor2 = null; } if (EsFinLimpiezaParabrisasSurtidor1()) { CurrentStateVector.FinLimpiezaParabrisasSurtidor1 = null; } if (EsFinLimpiezaParabrisasSurtidor2()) { CurrentStateVector.FinLimpiezaParabrisasSurtidor2 = null; } if (EsFinCobroSurtidor1()) { FinalizarCobroSurtidor1(); if (ColaSurtidorVacia(Entity.Surtidor1)) { Surtidor1QuedaLibre(); } else { Surtidor1AtiendeVehiculo(); } } if (EsFinCobroSurtidor2()) { FinalizarCobroSurtidor2(); if (ColaSurtidorVacia(Entity.Surtidor2)) { Surtidor2QuedaLibre(); } else { Surtidor2AtiendeVehiculo(); } } if (CurrentStateVector.ColaSurtidor1.Count(x => x.Estado == EstadoVehiculo.EnAtencion) > 1) { } if (ShowableStateVectors.LastOrDefault()?.ColaSurtidor1.Count(x => x.Estado == EstadoVehiculo.EnAtencion) > 1) { } }