-
Notifications
You must be signed in to change notification settings - Fork 127
Project Meeting 2017.01.20
- 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
- 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
- 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
- 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