Ejemplo n.º 1
0
        private static void RemoveFaciliateTrips(Household household)
        {
            List<ITripChain> tripChains = new List<ITripChain>();

            foreach (var p in household.Persons)
            {
                p.Attach("ObservedTripChains", new List<ITripChain>());

                foreach (var tc in p.TripChains)
                {
                    tripChains.Add(tc);
                    ((List<ITripChain>)p["ObservedTripChains"]).Add((((TripChain)tc).DeepClone()) );
                }
            }

            //removing facilitate trips
            foreach (var tc in tripChains)
            {
                ITrip StartFTrip = null;
                bool removeChain = false;
                List<ITrip> toRemove = new List<ITrip>();
                foreach (var t in tc.Trips)
                {
                    if (t.Purpose == Activity.FacilitatePassenger)
                    {
                        if (StartFTrip == null)
                            StartFTrip = t;
                        else
                            toRemove.Add(t);

                        if (tc.Trips[tc.Trips.Count - 1] == t)
                        {
                            removeChain = true;
                        }
                    }
                    else if (StartFTrip != null )
                    {
                        if (t.Purpose == Activity.Home && tc.Trips[0] == StartFTrip)
                        {
                            removeChain = true;
                        }
                        else
                        {
                            ((Trip)StartFTrip).DestinationZone = t.DestinationZone;
                            StartFTrip.Purpose = t.Purpose;
                            ((Trip)StartFTrip).TripStartTime = t.TripStartTime;
                            StartFTrip = null;
                            toRemove.Add(t);
                        }
                    }
                }
                if (removeChain)
                {
                    tc.Person.TripChains.Remove(tc);
                }
                else
                {
                    foreach (var t in toRemove)
                    {
                        tc.Trips.Remove(t);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private static void VerifyHousehold(Household household)
        {
            List<ITripChain> tripChains = new List<ITripChain>();

            foreach (var p in household.Persons)
            {
                foreach (var tc in p.TripChains)
                {
                    tripChains.Add(tc);
                }
            }
            foreach (var tc in tripChains)
            {
                foreach (var t in tc.Trips)
                {
                    if (t.OriginalZone.InternalDistance == 0 || t.DestinationZone.InternalDistance == 0 )
                    {
                        t.TripChain.Person.TripChains.Remove(tc);
                    }
                }
                /*
                bool intraZonal = true;
                foreach (var t in tc.Trips)
                {
                    if (t.DestinationZone != household.HomeZone)
                    {
                        intraZonal = false;
                    }
                }

                if (intraZonal)
                {
                    tc.Person.TripChains.Remove(tc);
                }
                 */
            }
        }
Ejemplo n.º 3
0
        private static void RemoveFaciliateTrips(Household household)
        {
            List<ITripChain> tripChains = new List<ITripChain>();

            foreach (var p in household.Persons)
            {
                p.Attach("ObservedTripChains", new List<ITripChain>());

                foreach (var tc in p.TripChains)
                {
                    tripChains.Add(tc);
                    ((List<ITripChain>)p["ObservedTripChains"]).Add((((TripChain)tc).DeepClone()) );
                }
            }

            //removing facilitate trips
            foreach (var tc in tripChains)
            {
                ITrip StartFTrip = null;
                bool removeChain = false;
                List<ITrip> toRemove = new List<ITrip>();
                foreach (var t in tc.Trips)
                {
                    if (t.Purpose == Activity.FacilitatePassenger)
                    {
                        if (StartFTrip == null)
                            StartFTrip = t;
                        else
                            toRemove.Add(t);

                        if (tc.Trips[tc.Trips.Count - 1] == t)
                        {
                            removeChain = true;
                        }
                    }
                    else if (StartFTrip != null )
                    {
                        if (t.Purpose == Activity.Home && tc.Trips[0] == StartFTrip)
                        {
                            removeChain = true;
                        }
                        else
                        {
                            ((Trip)StartFTrip).DestinationZone = t.DestinationZone;
                            StartFTrip.Purpose = t.Purpose;
                            ((Trip)StartFTrip).TripStartTime = t.TripStartTime;
                            StartFTrip = null;
                            toRemove.Add(t);
                        }
                    }
                }
                if (removeChain)
                {
                    tc.Person.TripChains.Remove(tc);
                }
                else
                {
                    foreach (var t in toRemove)
                    {
                        tc.Trips.Remove(t);
                    }
                }
            }
        }