04_01 Implementing STM3 in Emme4
Transcription
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 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 Newcastle Sydney Wollongong 400 km 250 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 Segments Purpose Mode Additional Destination Frequency Total Work 80 3/15 720 Business 24 24 576 Primary Education 10 4 40 3 2 6 Tertiary Education 12 12 144 Shopping 36 36 1296 Other 25 56 1400 Secondary Education 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 cCarSkims_ZZ Basic properties abstract class not for use common methods for all sub-classes cHWcarTollSkims_ZZ cCarNoTollSkims_ZZ cHWcarNoTollSkims_ZZ cCarAccSkims_ZS cHWcarAccSkims_ZS Input Matrices abstract class not for use Different by Purpose Specific properties daily averages Matrices in Emme vs Python Emme: Full matrix Travel Zones Station Zones External Zones Python: TZ to TZ External Zones TZ to Stn External Zones ZZ: TZ to TZ Stn to TZ ZS: TZ to SZ SZ: SZ to TZ Freq/Mode-Dest. Models: ZZ Station choice: ZS + SZ 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: 3D matrix calc: from 1 O to all D: 3D + Cpython partsort method: ( ALOGIT: ~ 3 days ) ~ 9 hours ~ 3 hours ~ 20 min Calculate Car Access to Rail utility zones Gen.time from O to D = zones Car time from O to S + Rail time from S to D Must be ZZ-matrix zones + zones Rail time = zones Car time stations stations zones Selected Station Gen. time Calculate Utility – the easy way D For each OD-pair: O get S from stations matrix Gt(OD) = Ct(OS) + Rt(SZ) 7.3 million OD-pairs! zones zones S Selected Station D S + S zones O Rt Rail time = zones Car time zones D Ct stations O zones stations Gt Gen. time Calculate Utility – a faster way Process stations 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 CarCt time stations Get car times from All-O to S re-shape vector to 2D (ZZ) zones Select all OD-pairs that use S (mask) S + S Selected S Stations S S S S Rt Rail time zones Rt Rt Rt Ct Ct CtRt Ct Rt Rt Rt Ct Ct = zones zones zones Gt Gt Gt Gen. Gt Gt Time 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 Input Data Hb-Work NHb-Work Hb-Business Create CAR LOS Skims NH-Business Hb-PrimEd Hb-SecEd Hb-TerEd Hb-Shop Collate new CAR Demand Hb-Other Final Car/PT assignments STM-3 Parallel Model Structure Input Data Hb-Work Create CAR LOS Skims Hb-Business Hb-PrimEd Hb-Shop Hb-SecEd NHb-Work NH-Business Hb-TerEd Collate new CAR Demand Final Car/PT assignments Hb-Other 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