private DurationDataSet GetOrAddStationTimeSet(VehicleStationLocation station)
 {
     if (!_stationTimes.TryGetValue(station, out DurationDataSet result))
     {
         result = new DurationDataSet(1);
         _stationTimes.Add(station, result);
     }
     return(result);
 }
        protected virtual void DoRead(StateBinaryReader reader, VehicleSchedule schedule)
        {
            int count = reader.ReadInt();

            for (int i = 0; i < count; i++)
            {
                int      taskIndex = reader.ReadInt();
                RootTask task      = schedule.GetTasks()[taskIndex];
                _data.Add(task, DurationDataSet.Read(reader));
            }
        }
        private DurationDataSet GetOrAddTravelTimeSet(VehicleStationLocation start, VehicleStationLocation end, List <VehicleStationLocation> nonstopList)
        {
            int?hashCode = GetLocationsHashCode(nonstopList);

            if (!_travelTimes.TryGetValue((start, end, hashCode), out DurationDataSet travelTime))
            {
                travelTime = new DurationDataSet(1);
                _travelTimes.Add((start, end, hashCode), travelTime);
            }
            return(travelTime);
        }
Ejemplo n.º 4
0
        internal static DurationDataSet Read(StateBinaryReader reader)
        {
            DurationDataSet result = new DurationDataSet();
            int             count  = reader.ReadInt();

            for (int i = 0; i < count; i++)
            {
                TimeSpan span = new TimeSpan(reader.ReadLong());
                result._durationData.Put(span);
                result._runningSum += span;
            }

            result._totalCount = reader.ReadInt();
            result._totalSum   = new TimeSpan(reader.ReadLong());

            return(result);
        }
        /** add times from scheduleData to the existing data for averaging */
        public void AddTimes(VehicleScheduleData scheduleData)
        {
            foreach ((RootTask endStationTask, VehicleStationLocation startStation, VehicleStationLocation endStation, List <VehicleStationLocation> nonstopStations) in scheduleData.GetNonNonstopScheduleParts())
            {
                TimeSpan?duration = scheduleData.GetAverageTravelDuration(endStationTask);
                if (duration != null)
                {
                    DurationDataSet travelTime = GetOrAddTravelTimeSet(startStation, endStation, nonstopStations);
                    travelTime.Add(duration.Value);
                }

                TimeSpan?stationDuration = scheduleData.GetAverageStationLoadingDuration(endStationTask);
                if (stationDuration != null)
                {
                    DurationDataSet stationTimeSet = GetOrAddStationTimeSet(endStation);
                    stationTimeSet.Add(stationDuration.Value);
                }
            }
        }
        public void Add(RootTask task, TimeSpan duration)
        {
            DurationDataSet dataSet = GetOrCreateDataSetForTask(task);

            dataSet.Add(duration);
        }