Skip to content

Project Meeting 2017.01.20

Wu Sun edited this page Feb 3, 2017 · 13 revisions

Overview

  • Clint and Ben reviewed the purpose and status of the ActivitySim project
  • The purpose of this project is to prototype multiple zone system support in ActivitySim since this is the major difference between the ActivitySim example and SANDAG's model

Test Data

  • We will use SANDAG's data for prototyping
  • @Ben to send request to Wu; We need all data in OMX and CSV format
  • OMX export not working correctly in TransCAD 7; @Ben to test and follow-up with Caliper
  • If OMX export doesn't work, we will export to CSV and then convert to OMX

Follow Up

  • ( Wu ) Exported OMX using GISDK script

  • ( Wu ) GISDK script example: Macro "TC to OMX"

    p="T:\ABM\ActivitySim\SANDAG_ActivitySim\data\skims"

    files = GetDirectoryInfo(RunMacro("FormPath",{p,"*"}),"All") for i = 1 to files.length do f = RunMacro("FormPath",{p,files[i][1]})
    subs = ParseString(f,".", {{"Include Empty",True}}) if files[i][2] = "file" then do if subs[2]="mtx" then do RunMacro("ExportMatrix",subs[1]+".mtx") end end end EndMacro

Macro "ExportMatrix" (matrix) subs = ParseString(matrix,".", {{"Include Empty",True}}) m = OpenMatrix(matrix, "True") mc = CreateMatrixCurrency(m,,,,) CopyMatrix(mc, { {"File Name", subs[1]+".omx"}, {"OMX", "True"} } ) EndMacro

Macro "FormPath" (path_elements) if TypeOf(path_elements) <> "array" then do ShowMessage("Must form a path out of a list of elements, not: " + TypeOf(path_elements)) ShowMessage(2) end //path_elements is an array of elements path = "" for i = 1 to path_elements.length do //change / to
p = RunMacro("NormalizePath",path_elements[i]) if Right(p,1) = "\" then do if Len(p) > 1 then do p = Substring(p,1,Len(p)-1) end else do p = "" end end if Left(p,1) = "\" then do if Len(p) > 1 then do p = Substring(p,2,Len(p)) end else do p = "" end end if path = "" then do path = p end else do path = path + "\" + p end end return(path) EndMacro

Macro "NormalizePath" (path) if Len(path) > 1 and path[2] = ":" then do path = Lower(path[1]) + Right(path,Len(path)-1) end return(Substitute(path,"/","\",)) EndMacro

Basic Design

  • Current ActivitySim skims object will become a NetworkLOS object
  • Will read in the required data, for example:
    • TAZ to TAZ skims
    • TAP to TAP skims
    • MAZ to MAZ table
    • MAZ to TAP table
    • MAZ table
    • TAP table
    • TAZ table
  • Will revise the expressions interface so instead of simply skims, which gets a vector of TAZ OD pair data, we'll have something like:
    • NetworkLOS.get("OTAZ","DTAZ","TIME") - vector of TAZ OD pair data
    • NetworkLOS.get("OMAZ","DMAZ","DISTANCE") - vector of MAZ OD pair data
    • NetworkLOS.get("OMAZ","BTAP","DISTANCE") - vector of MAZ to boarding TAPs data
    • etc.
  • The working specification for multiple zone system support is here
  • Maybe we'll have some Cython in there as well for complicated queries that need to be fast
  • For transit virtual path building, performance gains often come from pre-computing total costs by path leg - maz to tap, tap to tap, tap to maz and then doing a shortest path across the graph

Project Management

  • Bi-weekly calls @ 10am before the main ActivitySim call
  • Project schedule is max 3 months
  • Will create a branch within ActivitySim repo and turn off TravisCI and testing
  • @Wu setup call and invite ActivitySim team

Clone this wiki locally