Exemplo n.º 1
0
        protected override void RegionSpecificCustomizations(ChoiceProbabilityCalculator.Alternative alternative, ITourWrapper tour, int pathType, int mode, IParcelWrapper destinationParcel)
        {
            int originInNJ = ((tour.OriginParcel.ZoneKey >= 18000 && tour.OriginParcel.ZoneKey < 50000) || (tour.OriginParcel.ZoneKey >= 53000 && tour.OriginParcel.ZoneKey < 58000)).ToFlag();
            int destinInNJ = ((destinationParcel.ZoneKey >= 18000 && destinationParcel.ZoneKey < 50000) || (destinationParcel.ZoneKey >= 53000 && destinationParcel.ZoneKey < 58000)).ToFlag();

            int coreCBDOrig = (tour.OriginParcel.HouseholdsBuffer1 + tour.OriginParcel.EmploymentTotalBuffer1 >= 20000).ToFlag();
            int coreCBDDest = (destinationParcel.HouseholdsBuffer1 + destinationParcel.EmploymentTotalBuffer1 >= 20000).ToFlag();


            if (mode == Global.Settings.Modes.ParkAndRide)
            {
                alternative.AddUtilityTerm(211, tour.OriginParcel.CBD_AreaType_Buffer1());
                alternative.AddUtilityTerm(212, tour.OriginParcel.Urban_AreaType_Buffer1());
                alternative.AddUtilityTerm(213, tour.OriginParcel.Suburban_AreaType_Buffer1());
                alternative.AddUtilityTerm(214, tour.OriginParcel.AllRural_AreaType_Buffer1());
                alternative.AddUtilityTerm(215, destinationParcel.CBD_AreaType_Buffer1());
                alternative.AddUtilityTerm(216, destinationParcel.Urban_AreaType_Buffer1());
                alternative.AddUtilityTerm(217, destinationParcel.Suburban_AreaType_Buffer1());
                alternative.AddUtilityTerm(218, destinationParcel.AllRural_AreaType_Buffer1());
                alternative.AddUtilityTerm(219, (tour.OriginParcel.DistanceToFerry > 0 && tour.OriginParcel.DistanceToFerry <= 0.5).ToFlag());
                alternative.AddUtilityTerm(220, (destinationParcel.DistanceToFerry > 0 && destinationParcel.DistanceToFerry <= 0.5).ToFlag());
                alternative.AddUtilityTerm(221, originInNJ);
                alternative.AddUtilityTerm(222, destinInNJ);
                alternative.AddUtilityTerm(223, destinInNJ * originInNJ);
                alternative.AddUtilityTerm(224, coreCBDOrig);
                alternative.AddUtilityTerm(225, coreCBDDest);

                // alternative.AddUtilityTerm(225, destinationParcel.PCA_DensityTerm_Buffer1());
                // alternative.AddUtilityTerm(226, destinationParcel.PCA_WalkabilityTerm_Buffer1());
                // alternative.AddUtilityTerm(227, destinationParcel.PCA_MixedUseTerm_Buffer1());
                // alternative.AddUtilityTerm(228, destinationParcel.PCA_TransitAccessTerm_Buffer1());
            }
            else if (mode == Global.Settings.Modes.Transit)
            {
                alternative.AddUtilityTerm(231, tour.OriginParcel.CBD_AreaType_Buffer1());
                alternative.AddUtilityTerm(232, tour.OriginParcel.Urban_AreaType_Buffer1());
                alternative.AddUtilityTerm(233, tour.OriginParcel.Suburban_AreaType_Buffer1());
                alternative.AddUtilityTerm(234, tour.OriginParcel.AllRural_AreaType_Buffer1());
                alternative.AddUtilityTerm(235, destinationParcel.CBD_AreaType_Buffer1());
                alternative.AddUtilityTerm(236, destinationParcel.Urban_AreaType_Buffer1());
                alternative.AddUtilityTerm(237, destinationParcel.Suburban_AreaType_Buffer1());
                alternative.AddUtilityTerm(238, destinationParcel.AllRural_AreaType_Buffer1());
                alternative.AddUtilityTerm(239, (tour.OriginParcel.DistanceToFerry > 0 && tour.OriginParcel.DistanceToFerry <= 0.5).ToFlag());
                alternative.AddUtilityTerm(240, (destinationParcel.DistanceToFerry > 0 && destinationParcel.DistanceToFerry <= 0.5).ToFlag());
                alternative.AddUtilityTerm(241, originInNJ);
                alternative.AddUtilityTerm(242, destinInNJ);
                alternative.AddUtilityTerm(243, destinInNJ * originInNJ);
                alternative.AddUtilityTerm(244, coreCBDOrig);
                alternative.AddUtilityTerm(245, coreCBDDest);

                //  alternative.AddUtilityTerm(221, originParcel.PCA_DensityTerm_Buffer1());
                //  alternative.AddUtilityTerm(222, originParcel.PCA_WalkabilityTerm_Buffer1());
                //  alternative.AddUtilityTerm(223, originParcel.PCA_MixedUseTerm_Buffer1());
                //  alternative.AddUtilityTerm(224, originParcel.PCA_TransitAccessTerm_Buffer1());
                //  alternative.AddUtilityTerm(225, destinationParcel.PCA_DensityTerm_Buffer1());
                //  alternative.AddUtilityTerm(226, destinationParcel.PCA_WalkabilityTerm_Buffer1());
                //  alternative.AddUtilityTerm(227, destinationParcel.PCA_MixedUseTerm_Buffer1());
                //  alternative.AddUtilityTerm(228, destinationParcel.PCA_TransitAccessTerm_Buffer1());
            }
        }
Exemplo n.º 2
0
        protected override void RegionSpecificCustomizations(ChoiceProbabilityCalculator.Alternative alternative, IPersonWrapper _person, IParcelWrapper destinationParcel)
        {
            //areas

            int o_int_paphi = (_person.Household.ResidenceParcel.ZoneKey <= 4000).ToFlag();
            int o_int_paoth = (_person.Household.ResidenceParcel.ZoneKey <= 18000).ToFlag() * (1 - o_int_paphi);
            int o_int_nj    = (_person.Household.ResidenceParcel.ZoneKey > 18000 && _person.Household.ResidenceParcel.ZoneKey <= 30000).ToFlag();
            int o_ext_pa    = (_person.Household.ResidenceParcel.ZoneKey > 50000 && _person.Household.ResidenceParcel.ZoneKey <= 53000).ToFlag();
            int o_ext_nnj   = (_person.Household.ResidenceParcel.ZoneKey > 53000 && _person.Household.ResidenceParcel.ZoneKey <= 56000).ToFlag();
            int o_ext_snj   = (_person.Household.ResidenceParcel.ZoneKey > 56000 && _person.Household.ResidenceParcel.ZoneKey <= 58000).ToFlag();
            int o_ext_oth   = (_person.Household.ResidenceParcel.ZoneKey > 58000).ToFlag();

            int d_int_paphi = (destinationParcel.ZoneKey <= 4000).ToFlag();
            int d_int_paoth = (destinationParcel.ZoneKey <= 18000).ToFlag() * (1 - d_int_paphi);
            int d_int_nj    = (destinationParcel.ZoneKey > 18000 && destinationParcel.ZoneKey <= 30000).ToFlag();
            int d_ext_pa    = (destinationParcel.ZoneKey > 50000 && destinationParcel.ZoneKey <= 53000).ToFlag();
            int d_ext_nnj   = (destinationParcel.ZoneKey > 53000 && destinationParcel.ZoneKey <= 56000).ToFlag();
            int d_ext_snj   = (destinationParcel.ZoneKey > 56000 && destinationParcel.ZoneKey <= 58000).ToFlag();
            int d_ext_oth   = (destinationParcel.ZoneKey > 58000).ToFlag();

            int    cbdDest            = destinationParcel.CBD_AreaType_Buffer1();
            double distanceFromOrigin = _person.Household.ResidenceParcel.DistanceFromOrigin(destinationParcel, Global.Settings.Times.EightAM);

            alternative.AddUtilityTerm(121, o_int_nj * distanceFromOrigin);
            alternative.AddUtilityTerm(122, o_int_paoth * distanceFromOrigin);
            alternative.AddUtilityTerm(123, cbdDest * distanceFromOrigin);
            alternative.AddUtilityTerm(124, cbdDest);
            alternative.AddUtilityTerm(125, cbdDest * (_person.Household.Income < 50000).ToFlag());
            alternative.AddUtilityTerm(126, cbdDest * (_person.Household.Income >= 100000).ToFlag());

            alternative.AddUtilityTerm(131, o_int_paphi * d_int_paphi);
            alternative.AddUtilityTerm(132, o_int_paphi * d_int_paoth);
            alternative.AddUtilityTerm(133, o_int_paphi * d_int_nj);
            alternative.AddUtilityTerm(134, o_int_paphi * d_ext_pa);
            alternative.AddUtilityTerm(135, o_int_paphi * d_ext_nnj);
            alternative.AddUtilityTerm(136, o_int_paphi * d_ext_oth);
            alternative.AddUtilityTerm(137, o_int_paphi * d_ext_snj);

            alternative.AddUtilityTerm(141, o_int_paoth * d_int_paphi);
            alternative.AddUtilityTerm(142, o_int_paoth * d_int_paoth);
            alternative.AddUtilityTerm(143, o_int_paoth * d_int_nj);
            alternative.AddUtilityTerm(144, o_int_paoth * d_ext_pa);
            alternative.AddUtilityTerm(145, o_int_paoth * d_ext_nnj);
            alternative.AddUtilityTerm(146, o_int_paoth * d_ext_oth);
            alternative.AddUtilityTerm(147, o_int_paoth * d_ext_snj);

            alternative.AddUtilityTerm(151, o_int_nj * d_int_paphi);
            alternative.AddUtilityTerm(152, o_int_nj * d_int_paoth);
            alternative.AddUtilityTerm(153, o_int_nj * d_int_nj);
            alternative.AddUtilityTerm(154, o_int_nj * d_ext_pa);
            alternative.AddUtilityTerm(155, o_int_nj * d_ext_nnj);
            alternative.AddUtilityTerm(156, o_int_nj * d_ext_oth);
            alternative.AddUtilityTerm(157, o_int_nj * d_ext_snj);

            alternative.AddUtilityTerm(161, o_ext_pa * d_int_paphi);
            alternative.AddUtilityTerm(162, o_ext_pa * d_int_paoth);
            alternative.AddUtilityTerm(163, o_ext_pa * d_int_nj);
            alternative.AddUtilityTerm(164, o_ext_pa * d_ext_pa);
            alternative.AddUtilityTerm(165, o_ext_pa * d_ext_nnj);
            alternative.AddUtilityTerm(166, o_ext_pa * d_ext_oth);
            alternative.AddUtilityTerm(167, o_ext_pa * d_ext_snj);

            alternative.AddUtilityTerm(171, o_ext_nnj * d_int_paphi);
            alternative.AddUtilityTerm(172, o_ext_nnj * d_int_paoth);
            alternative.AddUtilityTerm(173, o_ext_nnj * d_int_nj);
            alternative.AddUtilityTerm(174, o_ext_nnj * d_ext_pa);
            alternative.AddUtilityTerm(175, o_ext_nnj * d_ext_nnj);
            alternative.AddUtilityTerm(176, o_ext_nnj * d_ext_oth);
            alternative.AddUtilityTerm(177, o_ext_nnj * d_ext_snj);

            alternative.AddUtilityTerm(181, o_ext_oth * d_int_paphi);
            alternative.AddUtilityTerm(182, o_ext_oth * d_int_paoth);
            alternative.AddUtilityTerm(183, o_ext_oth * d_int_nj);
            alternative.AddUtilityTerm(184, o_ext_oth * d_ext_pa);
            alternative.AddUtilityTerm(185, o_ext_oth * d_ext_nnj);
            alternative.AddUtilityTerm(186, o_ext_oth * d_ext_oth);
            alternative.AddUtilityTerm(187, o_ext_oth * d_ext_snj);

            alternative.AddUtilityTerm(191, o_ext_snj * d_int_paphi);
            alternative.AddUtilityTerm(192, o_ext_snj * d_int_paoth);
            alternative.AddUtilityTerm(193, o_ext_snj * d_int_nj);
            alternative.AddUtilityTerm(194, o_ext_snj * d_ext_pa);
            alternative.AddUtilityTerm(195, o_ext_snj * d_ext_nnj);
            alternative.AddUtilityTerm(196, o_ext_snj * d_ext_oth);
            alternative.AddUtilityTerm(197, o_ext_snj * d_ext_snj);

            //int origState = _person.Household.ResidenceParcel.District;
            //int destState = destinationParcel.District;

            //int bridgeFromNJ = (origState == 34 && destState > 0 && destState != 34).ToFlag();
            //int bridgeToNJ   = (destState == 34 && origState > 0 && origState != 34).ToFlag();

            //alternative.AddUtilityTerm(91, bridgeFromNJ);
            //alternative.AddUtilityTerm(92, bridgeToNJ);
        }
        protected override void RegionSpecificOtherTourDistrictCoefficients(ChoiceProbabilityCalculator.Alternative alternative, ITourWrapper _tour, IParcelWrapper destinationParcel, IPersonWrapper person)
        {
            //areas

            int o_int_paphi = (_tour.OriginParcel.ZoneKey <= 4000).ToFlag();
            int o_int_paoth = (_tour.OriginParcel.ZoneKey <= 18000).ToFlag() * (1 - o_int_paphi);
            int o_int_nj    = (_tour.OriginParcel.ZoneKey > 18000 && _tour.OriginParcel.ZoneKey <= 30000).ToFlag();
            int o_ext_pa    = (_tour.OriginParcel.ZoneKey > 50000 && _tour.OriginParcel.ZoneKey <= 53000).ToFlag();
            int o_ext_nnj   = (_tour.OriginParcel.ZoneKey > 53000 && _tour.OriginParcel.ZoneKey <= 56000).ToFlag();
            int o_ext_snj   = (_tour.OriginParcel.ZoneKey > 56000 && _tour.OriginParcel.ZoneKey <= 58000).ToFlag();
            int o_ext_oth   = (_tour.OriginParcel.ZoneKey > 58000).ToFlag();

            int d_int_paphi = (destinationParcel.ZoneKey <= 4000).ToFlag();
            int d_int_paoth = (destinationParcel.ZoneKey <= 18000).ToFlag() * (1 - d_int_paphi);
            int d_int_nj    = (destinationParcel.ZoneKey > 18000 && destinationParcel.ZoneKey <= 30000).ToFlag();
            int d_ext_pa    = (destinationParcel.ZoneKey > 50000 && destinationParcel.ZoneKey <= 53000).ToFlag();
            int d_ext_nnj   = (destinationParcel.ZoneKey > 53000 && destinationParcel.ZoneKey <= 56000).ToFlag();
            int d_ext_snj   = (destinationParcel.ZoneKey > 56000 && destinationParcel.ZoneKey <= 58000).ToFlag();
            int d_ext_oth   = (destinationParcel.ZoneKey > 58000).ToFlag();

            int    cbdDest            = destinationParcel.CBD_AreaType_Buffer1();
            double distanceFromOrigin = _tour.OriginParcel.DistanceFromOrigin(destinationParcel, _tour.DestinationArrivalTime);

            alternative.AddUtilityTerm(121, o_int_nj * distanceFromOrigin);
            alternative.AddUtilityTerm(122, o_int_paoth * distanceFromOrigin);
            alternative.AddUtilityTerm(123, cbdDest * distanceFromOrigin);
            alternative.AddUtilityTerm(124, cbdDest * (_tour.DestinationPurpose == Global.Settings.Purposes.PersonalBusiness).ToFlag());
            alternative.AddUtilityTerm(125, cbdDest * (_tour.DestinationPurpose == Global.Settings.Purposes.Shopping).ToFlag());
            alternative.AddUtilityTerm(126, cbdDest * (_tour.DestinationPurpose == Global.Settings.Purposes.Meal).ToFlag());
            alternative.AddUtilityTerm(127, cbdDest * (_tour.DestinationPurpose == Global.Settings.Purposes.Social).ToFlag());

            alternative.AddUtilityTerm(130, (_tour.OriginParcel.Id == destinationParcel.Id).ToFlag());

            alternative.AddUtilityTerm(131, o_int_paphi * d_int_paphi);
            alternative.AddUtilityTerm(132, o_int_paphi * d_int_paoth);
            alternative.AddUtilityTerm(133, o_int_paphi * d_int_nj);
            alternative.AddUtilityTerm(134, o_int_paphi * d_ext_pa);
            alternative.AddUtilityTerm(135, o_int_paphi * d_ext_nnj);
            alternative.AddUtilityTerm(136, o_int_paphi * d_ext_oth);
            alternative.AddUtilityTerm(137, o_int_paphi * d_ext_snj);

            alternative.AddUtilityTerm(141, o_int_paoth * d_int_paphi);
            alternative.AddUtilityTerm(142, o_int_paoth * d_int_paoth);
            alternative.AddUtilityTerm(143, o_int_paoth * d_int_nj);
            alternative.AddUtilityTerm(144, o_int_paoth * d_ext_pa);
            alternative.AddUtilityTerm(145, o_int_paoth * d_ext_nnj);
            alternative.AddUtilityTerm(146, o_int_paoth * d_ext_oth);
            alternative.AddUtilityTerm(147, o_int_paoth * d_ext_snj);

            alternative.AddUtilityTerm(151, o_int_nj * d_int_paphi);
            alternative.AddUtilityTerm(152, o_int_nj * d_int_paoth);
            alternative.AddUtilityTerm(153, o_int_nj * d_int_nj);
            alternative.AddUtilityTerm(154, o_int_nj * d_ext_pa);
            alternative.AddUtilityTerm(155, o_int_nj * d_ext_nnj);
            alternative.AddUtilityTerm(156, o_int_nj * d_ext_oth);
            alternative.AddUtilityTerm(157, o_int_nj * d_ext_snj);

            alternative.AddUtilityTerm(161, o_ext_pa * d_int_paphi);
            alternative.AddUtilityTerm(162, o_ext_pa * d_int_paoth);
            alternative.AddUtilityTerm(163, o_ext_pa * d_int_nj);
            alternative.AddUtilityTerm(164, o_ext_pa * d_ext_pa);
            alternative.AddUtilityTerm(165, o_ext_pa * d_ext_nnj);
            alternative.AddUtilityTerm(166, o_ext_pa * d_ext_oth);
            alternative.AddUtilityTerm(167, o_ext_pa * d_ext_snj);

            alternative.AddUtilityTerm(171, o_ext_nnj * d_int_paphi);
            alternative.AddUtilityTerm(172, o_ext_nnj * d_int_paoth);
            alternative.AddUtilityTerm(173, o_ext_nnj * d_int_nj);
            alternative.AddUtilityTerm(174, o_ext_nnj * d_ext_pa);
            alternative.AddUtilityTerm(175, o_ext_nnj * d_ext_nnj);
            alternative.AddUtilityTerm(176, o_ext_nnj * d_ext_oth);
            alternative.AddUtilityTerm(177, o_ext_nnj * d_ext_snj);

            alternative.AddUtilityTerm(181, o_ext_oth * d_int_paphi);
            alternative.AddUtilityTerm(182, o_ext_oth * d_int_paoth);
            alternative.AddUtilityTerm(183, o_ext_oth * d_int_nj);
            alternative.AddUtilityTerm(184, o_ext_oth * d_ext_pa);
            alternative.AddUtilityTerm(185, o_ext_oth * d_ext_nnj);
            alternative.AddUtilityTerm(186, o_ext_oth * d_ext_oth);
            alternative.AddUtilityTerm(187, o_ext_oth * d_ext_snj);

            alternative.AddUtilityTerm(191, o_ext_snj * d_int_paphi);
            alternative.AddUtilityTerm(192, o_ext_snj * d_int_paoth);
            alternative.AddUtilityTerm(193, o_ext_snj * d_int_nj);
            alternative.AddUtilityTerm(194, o_ext_snj * d_ext_pa);
            alternative.AddUtilityTerm(195, o_ext_snj * d_ext_nnj);
            alternative.AddUtilityTerm(196, o_ext_snj * d_ext_oth);
            alternative.AddUtilityTerm(197, o_ext_snj * d_ext_snj);



            //add any region-specific new terms in region-specific class, using coefficient numbers 114-120, or other unused variable #

            //int origState = _tour.OriginParcel.District;
            //int destState = destinationParcel.District;

            //int bridgeFromNJ = (origState == 34 && destState > 0 && destState != 34).ToFlag();
            //int bridgeToNJ = (destState == 34 && origState > 0 && origState != 34).ToFlag();

            //alternative.AddUtilityTerm(114, bridgeFromNJ);
            //alternative.AddUtilityTerm(115, bridgeToNJ);
        }