Ejemplo n.º 1
0
        public void PreProcess(List <Truck> trucks, long time)
        {
            var dayIndex = GetDayIndexFromMs(time);

            var newTrucksGroup = trucks.Where(t => t.DrivenKms == 0).GroupBy(t => t.Road.From.Name);

            foreach (var newTruckList in newTrucksGroup)
            {
                var stat = SealStats.First(s => s.Node == newTruckList.Key);
                newTruckList.ForEach(t => SealDistributions[t.Seals - 1]++);
                var inquirySeals = newTruckList.Sum(t => t.Seals);
                var prevStock    = dayIndex == 0 ? 000 : stat.Stock[dayIndex - 1];
                var prevReuse    = dayIndex == 0 ? 000 : stat.Reuses[dayIndex - 1];
                stat.Inquiries[dayIndex] += inquirySeals;
                if (prevStock < inquirySeals)
                {
                    var delta = 0;
                    if (prevStock <= 0)
                    {
                        delta = inquirySeals - prevReuse;
                    }
                    else
                    {
                        delta = inquirySeals - prevStock - prevReuse;
                    }
                    stat.Increments[dayIndex] = Math.Abs(delta);
                    stat.Minimum += Math.Abs(delta);
                }

                stat.Stock[dayIndex] = prevStock - inquirySeals;
            }
        }
Ejemplo n.º 2
0
        public void PostProcess(List <Truck> trucks, long time)
        {
            var dayIndex = GetDayIndexFromMs(time);

            #region reuses
            var arrivedTrucksGroup = trucks.Where(t => t.Arrived).GroupBy(t => t.Road.To.Name);
            foreach (var arrivedTruckList in arrivedTrucksGroup)
            {
                var stat       = SealStats.First(s => s.Node == arrivedTruckList.Key);
                var prevStock  = dayIndex == 0 ? 000 : stat.Stock[dayIndex - 1];
                var reuseSeals = arrivedTruckList.Sum(t => t.Seals);
                stat.Reuses[dayIndex] += reuseSeals;
                stat.Stock[dayIndex]   = prevStock + stat.Reuses[dayIndex] - stat.Inquiries[dayIndex];
            }
            #endregion
        }