Beispiel #1
0
        private void AssignEpisodes(ITashaPerson person, ref Time workStartTime, ref Time workEndTime, Random random)
        {
            person.InitializePersonalProjects();
            var personData = (SchedulerPersonData)person["SData"];

            foreach (var tripChain in person.TripChains)
            {
                for (int j = 0; j < (tripChain.Trips.Count - 1); j++)
                {
                    var thisTrip = tripChain.Trips[j];
                    var nextTrip = tripChain.Trips[j + 1];
                    thisTrip.Mode = thisTrip[ObservedMode] as ITashaMode;
                    nextTrip.Mode = nextTrip[ObservedMode] as ITashaMode;
                    var startTime = thisTrip.OriginalZone == null || thisTrip.DestinationZone == null ? thisTrip.TripStartTime : thisTrip.ActivityStartTime;
                    var endTime   = nextTrip.TripStartTime;
                    var duration  = endTime - startTime;
                    if (duration < Time.Zero)
                    {
                        endTime = Time.EndOfDay;
                    }
                    if (endTime < startTime)
                    {
                        startTime = thisTrip.TripStartTime;
                    }

                    if (thisTrip.Purpose == Activity.PrimaryWork || thisTrip.Purpose == Activity.SecondaryWork || thisTrip.Purpose == Activity.WorkBasedBusiness)
                    {
                        var newEpisode = new ActivityEpisode(new TimeWindow(startTime, endTime), thisTrip.Purpose, person)
                        {
                            Zone = thisTrip.DestinationZone
                        };
                        if (thisTrip.Purpose == Activity.PrimaryWork || thisTrip.Purpose == Activity.WorkBasedBusiness)
                        {
                            if (workStartTime == Time.Zero || newEpisode.StartTime < workStartTime)
                            {
                                workStartTime = newEpisode.StartTime;
                            }
                            if (workEndTime == Time.Zero || newEpisode.EndTime > workEndTime)
                            {
                                workEndTime = newEpisode.EndTime;
                            }
                        }
                        personData.WorkSchedule.Schedule.Insert(newEpisode, random);
                    }
                    if (thisTrip.Purpose == Activity.School)
                    {
                        var newEpisode = new ActivityEpisode(new TimeWindow(startTime, endTime), thisTrip.Purpose, person)
                        {
                            Zone = thisTrip.DestinationZone
                        };
                        personData.SchoolSchedule.Schedule.Insert(newEpisode, random);
                    }
                }
            }
        }
        private void AssignEpisodes(ITashaPerson person, ref Time workStartTime, ref Time workEndTime, Random random)
        {
            person.InitializePersonalProjects();
            var PersonData     = person["SData"] as SchedulerPersonData;
            var primaryVehicle = this.PrimaryMode.RequiresVehicle;

            foreach (var TripChain in person.TripChains)
            {
                for (int j = 0; j < (TripChain.Trips.Count - 1); j++)
                {
                    var ThisTrip = TripChain.Trips[j];
                    var NextTrip = TripChain.Trips[j + 1];
                    ThisTrip.Mode = this.PrimaryMode;
                    var startTime = ThisTrip.OriginalZone == null || ThisTrip.DestinationZone == null ? ThisTrip.TripStartTime : ThisTrip.ActivityStartTime;
                    var endTime   = NextTrip.TripStartTime;
                    var duration  = endTime - startTime;
                    if (duration < Time.Zero)
                    {
                        endTime = Time.EndOfDay;
                    }
                    if (endTime < startTime)
                    {
                        startTime = ThisTrip.TripStartTime;
                    }

                    if (ThisTrip.Purpose == Activity.PrimaryWork || ThisTrip.Purpose == Activity.SecondaryWork || ThisTrip.Purpose == Activity.WorkBasedBusiness)
                    {
                        var NewEpisode = new ActivityEpisode(0, new TimeWindow(startTime, endTime), ThisTrip.Purpose, TripChain.Person);
                        NewEpisode.Zone = ThisTrip.DestinationZone;
                        if (ThisTrip.Purpose == Activity.PrimaryWork)
                        {
                            if (workStartTime == Time.Zero || NewEpisode.StartTime < workStartTime)
                            {
                                workStartTime = NewEpisode.StartTime;
                            }
                            if (workEndTime == Time.Zero || NewEpisode.EndTime > workEndTime)
                            {
                                workEndTime = NewEpisode.EndTime;
                            }
                        }
                        PersonData.WorkSchedule.Schedule.Insert(NewEpisode, random);
                    }
                    if (ThisTrip.Purpose == Activity.School)
                    {
                        var NewEpisode = new ActivityEpisode(0, new TimeWindow(startTime, endTime), ThisTrip.Purpose, TripChain.Person);
                        NewEpisode.Zone = ThisTrip.DestinationZone;
                        PersonData.SchoolSchedule.Schedule.Insert(NewEpisode, random);
                    }
                }
            }
        }
        private void AssignEpisodes(ITashaPerson person, ref Time workStartTime, ref Time workEndTime, Random random)
        {
            person.InitializePersonalProjects();
            var PersonData = person["SData"] as SchedulerPersonData;

            foreach(var TripChain in person.TripChains)
            {
                for(int j = 0; j < (TripChain.Trips.Count - 1); j++)
                {
                    var ThisTrip = TripChain.Trips[j];
                    var NextTrip = TripChain.Trips[j + 1];
                    ThisTrip.Mode = ThisTrip[ObservedMode] as ITashaMode;
                    NextTrip.Mode = NextTrip[ObservedMode] as ITashaMode;
                    var startTime = ThisTrip.OriginalZone == null || ThisTrip.DestinationZone == null ? ThisTrip.TripStartTime : ThisTrip.ActivityStartTime;
                    var endTime = NextTrip.TripStartTime;
                    var duration = endTime - startTime;
                    if(duration < Time.Zero)
                    {
                        endTime = Time.EndOfDay;
                    }
                    if(endTime < startTime)
                    {
                        startTime = ThisTrip.TripStartTime;
                    }

                    if(ThisTrip.Purpose == Activity.PrimaryWork || ThisTrip.Purpose == Activity.SecondaryWork || ThisTrip.Purpose == Activity.WorkBasedBusiness)
                    {
                        var NewEpisode = new ActivityEpisode(0, new TimeWindow(startTime, endTime), ThisTrip.Purpose, person);
                        NewEpisode.Zone = ThisTrip.DestinationZone;
                        if(ThisTrip.Purpose == Activity.PrimaryWork || ThisTrip.Purpose == Activity.WorkBasedBusiness)
                        {
                            if(workStartTime == Time.Zero || NewEpisode.StartTime < workStartTime)
                            {
                                workStartTime = NewEpisode.StartTime;
                            }
                            if(workEndTime == Time.Zero || NewEpisode.EndTime > workEndTime)
                            {
                                workEndTime = NewEpisode.EndTime;
                            }
                        }
                        PersonData.WorkSchedule.Schedule.Insert(NewEpisode, random);
                    }
                    if(ThisTrip.Purpose == Activity.School)
                    {
                        var NewEpisode = new ActivityEpisode(0, new TimeWindow(startTime, endTime), ThisTrip.Purpose, person);
                        NewEpisode.Zone = ThisTrip.DestinationZone;
                        PersonData.SchoolSchedule.Schedule.Insert(NewEpisode, random);
                    }
                }
            }
        }