Upload
felicity-marian-cannon
View
219
Download
2
Tags:
Embed Size (px)
Citation preview
October 2014
Implementing the Sydney Strategic Transport Model (STM) in Emme 4
Dr Peter Hidas
Bureau of Transport Statistics, Transport for NSW
Acknowledgements Team Effort Model Development & Estimation
RAND Europe Frank Milthorpe, BTS
Implementation in Emme4 and Python Peter Hidas and Ting Yu
Validation, testing The BTS Modelling Team
History of STM
• First developed in 1970s• Major Updates 1986 & 1994/95• Redesigned in late 1990s
– Known as STM2– Still in use
• Extended and re-estimated in 2012-14– Known as STM3– Implemented – validation in progress
Study Area – Sydney GMA• 2006 zoning (24,443 km2):
– 2715 Travel Zones– 25,000 Nodes– 90,000 Links– 1,350 Transit Lines– 445 Stations
• Rail, LR, Ferry
• 2011 zoning (31,407 km2)
– + 400 zones
Sydney
Newcastle
Wollongong
400 km250 mi
Key Features of STM2
• Tour based model system– Home to Primary destination and return
• Disaggregate model– Person and household segmentation– Forecasting of licence holdings– Forecasting of car ownership– Segmentation: Population Synthesiser
• Joint mode-destination choice models– Nested/Multinomial Logit choice
• Demand is not constant– Tour frequency depends on accessibility
STM3 Enhancements• Use most recent travel survey data (HTS)• Model base year: 2011• Explicit modelling of toll roads
– Toll-users, non-toll-users separate modes– (STM2: only one car driver option)
• Explicit modelling of access mode to rail– Park-&-Ride, Kiss-&-Ride, Bus, Walk– (STM2: only bus and walk)
STM3 Travel Purposes• Home based purposes (to primary destination)
– Work– Business– Education
• Primary, Secondary, Tertiary
– Shopping– Other
• Non-Home based purposes– Work based business– Business detours as part of work tour
STM3 Travel Modes
• Modes– Car Driver
• Toll users, Non-toll users
– Car Passenger– Train (includes Light Rail & Ferry)
• Park-&-Ride, Kiss-&-Ride, Walk, Bus
– Bus– Walk– Bicycle– Taxi
• (Crowding on PT not modelled)
Segmentation• Extensive segmentation
– Different by purpose– Additional segments for frequency model
• Home Based work– Mode Destination Models
• Car availability/Licence holding (8 segments)• Work status (full time, part time)• Income (5 segments)
– Frequency Models• Age (3 segments)• Adult status (1/5 segments)
Number of SegmentsPurpose Mode
DestinationAdditional
Frequency Total
Work 80 3/15 720
Business 24 24 576
Primary Education 10 4 40
Secondary Education 3 2 6
Tertiary Education 12 12 144
Shopping 36 36 1296
Other 25 56 1400
STM3 Values of Time
• Values of Time Vary– Personal Income– Journey Purpose– Mode of Travel
• Use log and linear cost terms– Better fit for demand estimation– More difficult for economic benefit calculation
STM3 - Implementation
• Model Development & Estimation– ALOGIT software (RAND Europe)– No direct linkage to Emme
• STM2 – Implemented using Emme macros
• STM3 – Emme 4 available– How best to utilise?
STM3 - Software Platform
• Combination of Multiple Tools• Emme-4 API + Python• Python 2.7 64-bit
– Needed for memory requirements (min 20 Gb)
• Numpy – Efficient matrix operations library
• Cpython– Python library written in C (faster)– For some special methods (sorting)
• Run from DOS Batch file
STM-3 Model Structure
Input Data Create Skims
Estimate Travel Frequency
Mode-Destination Choice
Create new CAR LOS Skims
Final Car/PT assignments
Emme-4 Emme-4 API
Python
Python
Emme-4 API
Emme-4 API
STM3 Model Processes in Python
• Tour Frequency & Mode-Destination Choice– 7 HB + 2 NHB trip purposes – separate models– 6 purposes include car access to rail– Models are similar but many differences
• OOP structure– Shared code in base classes– Differences in derived classes
CarSkims Hierarchy
cCarSkims_ZZ
cCarAccSkims_ZS
cCarNoTollSkims_ZZ
cCarTollSkims_ZZ
cHWcarNoTollSkims_ZZ
cHWcarAccSkims_ZS
cHWcarTollSkims_ZZ
Basic propertiesabstract class
not for usecommon methodsfor all sub-classes
Input Matricesabstract class
not for useDifferent by PurposeSpecific properties
daily averages
Matrices in Emme vs Python
TZ to TZTZ to Stn
Stn to Stn
Stn to TZ
Ext
ern
al Z
on
es
External Zones
Emme: Full matrix Travel Zones Station Zones External Zones
Python: ZZ: TZ to TZ ZS: TZ to SZ SZ: SZ to TZ Freq/Mode-Dest. Models: ZZ Station choice: ZS + SZ
Car Access to Rail: Station Choice
?
Station Choice
• For each OD-pair– Calculate utility (car + rail) through each station– Select N (2-5) “best” stations
• By OD-pair (7.3 million)• Select from 450 stations• Run time
– If done by single OD-pair: ~ 9 hours– 3D matrix calc: from 1 O to all D: ~ 3 hours– 3D + Cpython partsort method: ~ 20 min– ( ALOGIT: ~ 3 days )
Calculate Car Access to Rail utility Gen.time from O to D =
Car time from O to S
+ Rail time from S to D Must be ZZ-matrix
Car time
stations
z o
n e
s
Gen. timeRail time
stat
ion
s
z o n e s
z o
n e
s
z o n e s
+ =
Selected Station
z o
n e
s
z o n e s
Calculate Utility – the easy way
For each OD-pair: get S from stations matrix Gt(OD) = Ct(OS) + Rt(SZ) 7.3 million OD-pairs!
Car time
stations
z o
n e
s
Gen. timeRail time
stat
ion
s z o n e s
z o
n e
s
z o n e s
Selected Station
z o
n e
s
z o n e s
+Rt
O
S
O
S
CtD
OO S
D
O
O
D
Gt
=
Ct Ct Ct Ct Ct Ct
Calculate Utility – a faster way
Process Select all OD-pairs that use S
(mask) Get car times from All-O to S
re-shape vector to 2D (ZZ) Get rail times from S to All-D
re-shape vector to 2D (ZZ) Add the two matrices = Gt Repeat for each station S
Max 450 iterations! Masking, re-shape are
standard methods in Numpy This process is applied at
several places
Car time
stations
z o
n e
s
Rail time
stat
ion
s
Selected Stations
z o
n e
s
z o n e s
RtSCt
S
=
S
S
S
S
S
Gen. Time
z o
n e
s
z o n e s
GtGt
Gt
Gt
Gt
Gt
+
Rt
Rt
Rt
Rt
Rt
Rt
Rt
Current Status
• STM3 model coded and tested• Validation:
– ALOGIT vs Emme/Python – finished – Comparison with Observed (HTS) data
• Key issues for further improvement– Run time– Use for PT Project Model (PTPM)
Model Run Time• STM2:
– ~ 19 hours (macros, without car access to rail!)
• STM3:– Full Model (4-cycles): ~ 17 hours– One-cycle: ~ 7 hours
• New zoning system TZ11: +400 zones– Further increase in run time
• How to reduce?– Multi-threading?
STM-3 Current Model StructureInput Data
Hb-OtherFinal Car/PT assignments
Create CAR LOS Skims
Hb-SecEd
Hb-PrimEd
Hb-Business
Hb-Work
Hb-Shop
Hb-TerEd
NHb-Work
NH-Business
Collate new CAR Demand
STM-3 Parallel Model StructureInput Data
Hb-Other
Final Car/PT assignments
Create CAR LOS Skims
Hb-SecEd
Hb-PrimEdHb-BusinessHb-Work Hb-Shop
Hb-TerEdNHb-Work NH-Business
Collate new CAR Demand
Summary• STM3 Implemented • Emme 4 API: major benefits
– Easy, user-friendly, powerful methods– Easy to combine with external code– New methods faster than macros
• Python, NumPy: major benefits– User-friendly, powerful, fast methods
• Run time less than for STM2 but still very long• Next challenges
– Improve run time– Implement Peak Spreading