Transcript 04_01 Implementing STM3 in Emme4
Implementing the Sydney Strategic Transport Model (STM) in Emme 4
Dr Peter Hidas Bureau of Transport Statistics, Transport for NSW
October 2014
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 km 2 ) : – 2715 Travel Zones – 25,000 Nodes – 90,000 Links – 1,350 Transit Lines – 445 Stations • Rail, LR, Ferry • 2011 zoning (31,407 km 2 ) – + 400 zones
Newcastle Sydney 400 km 250 mi Wollongong
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)
Purpose
Number of Segments
Work Business Primary Education Secondary Education Tertiary Education Shopping Other
Mode Destination Additional Frequency Total
80 24 10 3 12 36 25 3/15 24 4 2 12 36 56 720 576 40 6 144 1296 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
Emme-4
Create Skims
Emme-4 API
Estimate Travel Frequency
Python
Mode-Destination Choice
Python
Final Car/PT assignments
Emme-4 API
Create new CAR LOS Skims
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
cCarTollSkims_ZZ cHWcarTollSkims_ZZ cCarSkims_ZZ cCarNoTollSkims_ZZ Basic properties abstract class not for use common methods for all sub-classes cCarAccSkims_ZS Input Matrices abstract class not for use cHWcarNoTollSkims_ZZ cHWcarAccSkims_ZS Different by Purpose Specific properties daily averages
Matrices in Emme vs Python
Emme: Full matrix Travel Zones Station Zones External Zones
TZ to TZ
Python: ZZ: TZ to TZ
External Zones
ZS: TZ to SZ SZ: SZ to TZ
Stn to TZ
Freq/Mode-Dest. Models: ZZ Station choice: ZS + SZ
TZ to Stn Stn to Stn
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: – ( ALOGIT: ~ 3 days ) ~ 20 min
Calculate Car Access to Rail utility
z o n e s
Gen.time from O to D = Car time from O to S + Rail time from S to D Must be ZZ-matrix
stations z o n e s Car time + Rail time = Selected Station z o n e s Gen. time
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!
D z o n e s S Selected Station O S stations Ct Car time + S D z o n e s D z o n e s = O Gt Gen. time
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
Ct stations Car Ct time Ct Rt Rt Rt Ct Rt Ct Rt Rt Rt Ct Ct = + S S z o n e s S Selected S Rt Rail time z o n e s S S Gt Gt Gt Gen. Time Gt Gt Gt
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 Structure
Hb-Work Input Data NHb-Work Hb-Business Create CAR LOS Skims Hb-PrimEd NH-Business Hb-SecEd Collate new CAR Demand Hb-TerEd Hb-Shop Hb-Other Final Car/PT assignments
STM-3 Parallel Model Structure
Input Data Create CAR LOS Skims Hb-Work Hb-Business Hb-Shop Hb-PrimEd Hb-SecEd Hb-TerEd NHb-Work NH-Business Hb-Other Collate new CAR Demand Final Car/PT assignments
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