Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/feat/helmet5-parking-time' into …
Browse files Browse the repository at this point in the history
…helmet5-experimental
  • Loading branch information
hsl-petrhaj committed Nov 22, 2024
2 parents 3000acf + 3c8c21e commit 9814acc
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 13 deletions.
10 changes: 10 additions & 0 deletions Scripts/parameters/assignment.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

from collections import namedtuple
from typing import Dict, List, Union

import numpy as np
import pandas as pd

from datahandling.zonedata import ZoneData
RoadClass = namedtuple(
"RoadClass",
(
Expand Down Expand Up @@ -180,6 +185,11 @@
}
# Default distance unit cost [eur/km]
dist_unit_cost = 0.12
# Parking time function
def parking_time(zone_data: ZoneData) -> pd.Series:
density: pd.Series = (zone_data['population'] + zone_data['workplaces']) / zone_data['zone_area']
return 0.05993817*np.sqrt(density) + 5.24176150

# Default distance unit time for trucks and trailer trucks [min/km]
freight_dist_unit_time = 0.2
# Boarding penalties for different transit modes
Expand Down
2 changes: 1 addition & 1 deletion Scripts/tests/integration/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def test_models(self):
self._validate_impedances(impedance["iht"])

# Check that model result does not change
self.assertAlmostEquals(model.mode_share[0]["car"], 0.19439048477671417)
self.assertAlmostEquals(model.mode_share[0]["car"], 0.2115956440248976)

print("Model system test done")

Expand Down
30 changes: 18 additions & 12 deletions Scripts/transform/impedance_transformer.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@
from datatypes.purpose import Purpose
import parameters.impedance_transformation as param
from parameters.assignment import assignment_classes
try:
from parameters.assignment import parking_time
except ImportError:
parking_time = None

import numpy as np
import openmatrix as omx
Expand Down Expand Up @@ -117,18 +121,20 @@ def transform(self, purpose, impedance):
day_imp[mode][mtx_type] += share[1] * imp[cols, rows].T

# transit cost to eur per day
day_imp['transit']['cost'] = transit_cost_to_per_day(day_imp['transit']['cost'], purpose)

# Process possible extra transformers (eg. P&R impedance)
for transformer in self._extra_transformers:
extra_results = transformer.transform(purpose, impedance)
for result_name, result in extra_results.items():
day_imp[result_name] = result

# Optionally export impedance data for estimation
if self._export_path:
self.export_day_impedance(purpose, day_imp)

trips_month = (param.transit_trips_per_month
[purpose.area][assignment_classes[purpose.name]])
trips_per_month = numpy.full_like(
day_imp["transit"]["cost"], trips_month[0])
for i in range(1, len(purpose.sub_bounds)):
trips_per_month[purpose.sub_bounds[i], :] = trips_month[i]
day_imp["transit"]["cost"] /= trips_per_month
# Add parking time to car matrices
if parking_time is not None:
ptime = parking_time(purpose.zone_data).to_numpy()[cols]
ptime = numpy.clip(ptime, 0, 30)
car_modes = [k for k in day_imp.keys() if k in ('car', 'car_work', 'car_transit')]
for k in car_modes:
day_imp[k]['time'] += ptime[None,:]
return day_imp


0 comments on commit 9814acc

Please sign in to comment.