diff --git a/Scripts/models/logit.py b/Scripts/models/logit.py index af623596..1ce8755f 100644 --- a/Scripts/models/logit.py +++ b/Scripts/models/logit.py @@ -457,6 +457,30 @@ def calc_accessibility(self, impedance): Type (time/cost/dist) : numpy 2-d matrix Impedances """ + # Calculate cbd transit access + time_param = self.dest_choice_param["transit"]["impedance"]["time"] + try: + cost_param = self.dest_choice_param["transit"]["impedance"]["cost"] + except KeyError: + # School tours do not have a constant cost parameter + # Use value of time conversion from CBA guidelines instead + cost_param = -0.274445953 + try: + time_access = time_param * impedance["transit"]["time"][:, 0] + except ValueError: + time_access = time_param[0] * impedance["transit"]["time"][:, 0] + try: + cost_access = cost_param * impedance["transit"]["cost"][:, 0] + money_utility = 1 / cost_param + except ValueError: + cost_access = cost_param[0] * impedance["transit"]["cost"][:, 0] + money_utility = 1 / cost_param[0] + central_access = pandas.Series( + time_access + cost_access, self.purpose.zone_numbers) + self.resultdata.print_data( + central_access, "central_transit_access.txt", self.purpose.name) + self.purpose.central_access = money_utility * central_access + mode_expsum = self._calc_utils(impedance) # Calculate sustainable and car accessibility diff --git a/Scripts/modelsystem.py b/Scripts/modelsystem.py index 9b4aa6a7..ee2700be 100644 --- a/Scripts/modelsystem.py +++ b/Scripts/modelsystem.py @@ -360,6 +360,7 @@ def _calculate_accessibility_and_savu_zones(self): logsum = 0 sust_logsum = 0 car_logsum = 0 + central_access = 0 for purpose in self.dm.tour_purposes: if (purpose.area == "metropolitan" and purpose.orig == "home" and purpose.dest != "source" @@ -370,6 +371,7 @@ def _calculate_accessibility_and_savu_zones(self): logsum += weight * purpose.access sust_logsum += weight * purpose.sustainable_access car_logsum += weight * purpose.car_access + central_access += weight * purpose.central_access pop = self.zdata_forecast["population"][bounds] self.resultdata.print_line( "\nTotal accessibility:\t{:1.2f}".format( @@ -383,6 +385,8 @@ def _calculate_accessibility_and_savu_zones(self): self.resultdata.print_data( sust_logsum, "sustainable_accessibility.txt", "all") self.resultdata.print_data(car_logsum, "car_accessibility.txt", "all") + self.resultdata.print_data( + central_access, "central_transit_access.txt", "all") savu = numpy.searchsorted(zone_param.savu_intervals, sust_logsum) + 1 self.resultdata.print_data( pandas.Series(savu, zone_numbers), "savu.txt", "savu_zone")