User Guide
Work in Progress
Model Version TM2.1 - transit-ccr
Computing Environment
The hardware and software MTC uses to execute Travel Model Two are described on this page. To date, MTC has not experimented enough with the model to define the minimum or ideal hardware configuration. As such, the description here is for a hardware set up that is sufficient -- not optimal. It is important to note that both the software and model structure are highly configurable and flexible; depending on the analysis needs, the required computing power could vary dramatically.
Hardware
MTC uses four identical servers with the following characteristics:
- Operating system: Microsoft Windows Server 2007 with Service Pack 2, 64-bit edition;
- Processors: Two Intel Xeon X5570 @ 2.93 GHz (i.e., two quad-core processors with hyper-threading capability);
- Memory (RAM): 96.0 GB
As discussed in the System Design section, these four computers can act in different roles, each requiring different amounts of memory and computing power. The four computers are named as follows: mainmodel
, satmodel
(for satellite), satmodel2
, and satmodel3
. As discussed in the System Design section, the mainmodel
computer plays a specialized role in the system design; the satellite machines each play identical and completely interchangeable roles.
Software
The following software are required to execute the MTC travel model.
Citilabs Cube Voyager
The travel model currently uses version 6.4.2 of Citilabs Cube software. The Cube software is used to manage network, skim highways, and perform highway assignments.
Citilabs Cube Voyager 64bit Matrix I/O DLL
The CT-RAMP software, as discussed below, needs to access data stored in a format dictated by Cube. This is accomplished through a 64-bit DLL library specifically for matrix I/O,which must be accessible through the PATH
environment variable. To install the DLL:
- Run
VoyagerFileAPIInstaller.msi
, which is included in theCTRAMP\runtime
folder - Ensure
VoyagerFileAccess.dll
is in theCTRAMP\runtime
folder - Ensure the Microsoft Visual C++ 2012 redistributable is installed on the matrix server machine. Make sure to get version “110” DLLs (
MSVCR110.dll
andMSVCP110.dll
). These files can be obtained from the Microsoft. Download and installvcredist_x64.exe
.
Citilabs Cube Cluster
The Cube Cluster software allows Cube scripts to be multi-threaded. In the current approach, the travel model uses 64 computing nodes across four machines. The Cube scripts can be manipulated to use any number of computing nodes across any number of machines, provided each machine has, at a minimum, a Cube Voyager node license (for the time being, MTC has found 64 nodes on a single machine to be the most effective approach -- in terms of reliability and run time). Cube Cluster is not strictly necessary, as the Cube scripts can be modified to use only a single computing node. Such an approach would dramatically increase run times.
EMME
The travel model currently uses version 4.4.5.1 of EMME software. EMME software converts the CUBE network to use it for transit skimming and assignment, while incorporating transit capacity constraints.
Java and CT-RAMP
MTC's travel model operates on the open-source Coordinated Travel - Regional Activity-based Modeling Platform (or CT-RAMP) developed by Parsons Brinckerhoff. The software is written in the Java programming language. CT-RAMP requires the 64-bit Java Development Kit version 1.8 or later to be installed on each computer running the CT-RAMP software. The Java Development Kit includes the Java Runtime Environment. The 64-bit version of the software allows CT-RAMP to take advantage of larger memory addresses. The details of setting up and configuring the software are presented in the Setup and Configuration section of this guide.
Python
Certain network processing programs are written in Python. Python must be installed on the computer executing the Cube and EMME scripts -- mainmodel
in MTC's configuration. The following table contains the list of python packages that are required by MTC's travel model.
You should also list the python packages required and the environments required
Library | Version |
---|---|
argon2-cffi | 20.1.0 |
async_generator | 1.1 |
attrs | 20.2.0 |
backcall | 0.2.0 |
backports | 1 |
backports.functools_lru_cache | 1.6.1 |
blas | 1 |
bleach | 3.2.1 |
brotlipy | 0.7.0 |
bzip2 | 1.0.8 |
ca-certificates | 2022.2.1 |
certifi | 2021.10.8 |
cffi | 1.14.3 |
cfitsio | 3.47 |
chardet | 3.0.4 |
click | 7.1.2 |
click-plugins | 1.1.1 |
cligj | 0.5.0 |
colorama | 0.4.4 |
cryptography | 3.1.1 |
curl | 7.67.0 |
cycler | 0.10.0 |
dbfpy3 | 4.1.5 |
decorator | 4.4.2 |
defusedxml | 0.6.0 |
entrypoints | 0.3 |
et_xmlfile | 1.0.1 |
expat | 2.2.10 |
fiona | 1.8.13.post1 |
freetype | 2.10.4 |
freexl | 1.0.5 |
gdal | 3.0.2 |
geopandas | 0.8.1 |
geos | 3.8.0 |
geotiff | 1.5.1 |
hdf4 | 4.2.13 |
hdf5 | 1.10.4 |
icc_rt | 2019.0.0 |
icu | 58.2 |
idna | 2.1 |
importlib-metadata | 2.0.0 |
importlib_metadata | 2.0.0 |
intel-openmp | 2020.2 |
ipykernel | 5.3.4 |
ipython | 7.18.1 |
ipython_genutils | 0.2.0 |
jdcal | 1.4.1 |
jedi | 0.17.2 |
jinja2 | 2.11.2 |
jpeg | 9b |
json5 | 0.9.5 |
jsonschema | 3.2.0 |
jupyter_client | 6.1.7 |
jupyter_core | 4.6.3 |
jupyterlab | 2.2.9 |
jupyterlab_pygments | 0.1.2 |
jupyterlab_server | 1.2.0 |
kealib | 1.4.7 |
kiwisolver | 1.2.0 |
krb5 | 1.16.4 |
libboost | 1.67.0 |
libcurl | 7.67.0 |
libgdal | 3.0.2 |
libiconv | 1.15 |
libkml | 1.3.0 |
libnetcdf | 4.6.1 |
libpng | 1.6.37 |
libpq | 11.2 |
libsodium | 1.0.18 |
libspatialindex | 1.9.3 |
libspatialite | 4.3.0a |
libssh2 | 1.9.0 |
libtiff | 4.1.0 |
libxml2 | 2.9.10 |
lz4-c | 1.8.1.2 |
m2w64-expat | 2.1.1 |
m2w64-gcc-libgfortran | 5.3.0 |
m2w64-gcc-libs | 5.3.0 |
m2w64-gcc-libs-core | 5.3.0 |
m2w64-gettext | 0.19.7 |
m2w64-gmp | 6.1.0 |
m2w64-libiconv | 1.14 |
m2w64-libwinpthread-git | 5.0.0.4634.697f757 |
m2w64-xz | 5.2.2 |
markupsafe | 1.1.1 |
matplotlib | 3.3.2 |
matplotlib-base | 3.3.2 |
mistune | 0.8.4 |
mkl | 2020.2 |
mkl-service | 2.3.0 |
mkl_fft | 1.2.0 |
mkl_random | 1.1.1 |
msys2-conda-epoch | 20160418 |
munch | 2.5.0 |
nbclient | 0.5.1 |
nbconvert | 6.0.7 |
nbformat | 5.0.8 |
nest-asyncio | 1.4.1 |
notebook | 6.1.4 |
numpy | 1.19.1 |
numpy-base | 1.19.1 |
olefile | 0.46 |
openjpeg | 2.3.0 |
openpyxl | 3.0.7 |
openssl | 1.1.1m |
packaging | 20.4 |
pandas | 1.1.3 |
pandoc | 2.11.0.2 |
pandocfilters | 1.4.2 |
parso | 0.7.1 |
pcre | 8.44 |
pickleshare | 0.7.5 |
pillow | 8.0.0 |
pip | 20.2.3 |
postgresql | 11.2 |
proj | 6.2.1 |
prometheus_client | 0.8.0 |
prompt-toolkit | 3.0.8 |
pycparser | 2.2 |
pygments | 2.7.1 |
pyopenssl | 19.1.0 |
pyparsing | 2.4.7 |
pyproj | 2.6.1.post1 |
pyqt | 5.9.2 |
pyrsistent | 0.17.3 |
pysocks | 1.7.1 |
python | 3.8.5 |
python-dateutil | 2.8.1 |
python_abi | 3.8 |
pytz | 2020.1 |
pywin32 | 228 |
pywinpty | 0.5.7 |
pyzmq | 19.0.2 |
qt | 5.9.7 |
requests | 2.24.0 |
rtree | 0.9.4 |
scipy | 1.5.2 |
seaborn | 0.11.2 |
send2trash | 1.5.0 |
setuptools | 50.3.0 |
shapely | 1.7.1 |
sip | 4.19.13 |
six | 1.15.0 |
sqlite | 3.33.0 |
tbb | 2018.0.5 |
terminado | 0.9.1 |
testpath | 0.4.4 |
tiledb | 1.6.3 |
tk | 8.6.10 |
tornado | 6.0.4 |
traitlets | 5.0.5 |
urllib3 | 1.25.11 |
vc | 14.1 |
vs2015_runtime | 14.16.27012 |
wcwidth | 0.2.5 |
webencodings | 0.5.1 |
wheel | 0.35.1 |
win_inet_pton | 1.1.0 |
wincertstore | 0.2 |
winpty | 0.4.3 |
xerces-c | 3.2.3 |
xlrd | 2.0.1 |
xz | 5.2.5 |
zeromq | 4.3.2 |
zipp | 3.3.1 |
zlib | 1.2.11 |
zstd | 1.3.7 |
Python Rtree library
The open source Python rtree
library is required for a script that dynamically codes link area type based on land use data. The rtree
library provides an efficient spatial index for looking up all spatial units within a buffered distance from each spatial unit. To install, open a dos prompt, navigate to the directory and type: pip install Rtree-0.8.2-cp27-cp27m-win_amd64.whl
Microsoft Excel
The CT-RAMP software allows discrete choice models to be specified via so-called Utility Expression Calculators. These files are Excel-based.
Remote Execution and Stop Utilities
The Microsoft PsKill
and PsExec
programs are used to remotely kill programs and execute programs.
System Design
Here, we describe the manner in which the software is configured to take advantage of the available hardware (see the Computing Environment section for details on the hardware and software used in the travel model; see the Setup and Configuration section for details on setting up and configuring the MTC to run on a given set of hardware).
Distributed Computing
The MTC travel model uses two types of distributed applications. The first is facilitated by the Cube Cluster software and allows the skim building and assignment steps to utilize multiple threads. The second is faciltated by the CT-RAMP software, which allows the choice models to be distributed across multiple threads and multiple computers. A brief overview of both of these applications is provided below.
Cube Cluster
Citilabs Cube scripts facilitate two types of distribution, both of which are highly configurable through the Cube scripting language and the Cube Cluster thread management system; the two distinct types of multi-threading are as follows:
- Intra-step threading: The
DistributeINTRAStep
keyword allows calculations that are performed across a matrix of data to be performed in blocks -- specifically rows of data -- across multiple threads. MTC uses intra-step threading in highway assignment, allowing shortest paths to be constructed for more than one origin at a time. Complex matrix calculations can also benefit from intra-step threading. - Multi-step threading: The
DistributeMULTIStep
keyword allows blocks of code to be distributed across multiple threads. For example, if the same calculations are being performed for five different time periods, the same block of code (with variables) can be distributed across computers for parallel processing. This type of Cube multi-threading is a bit less flexible than the intra-step threading as it requires threads to be identified a priori (e.g., thread one will do the calculations for time period A), where the intra-step threading can be given a list of available processes and use what is available. MTC uses multi-step threading for highway skimming, transit skimming, highway assignment, the conversion of trip lists to trip matrices, highway assignment, and transit assignment.
As noted in the Computing Environment section, the MTC travel model specifies the Cube scripts to take advantage of 64 threads. A knowledgeable user can easily adjust the necessary scripts to take advantage of more or fewer processors.
CT-RAMP
The CT-RAMP software allows for the choice models to be distributed across threads and machines. The MTC application currently uses four machines, but the CT-RAMP software can be configured fairly easy to utilize fewer or more machines. CT-RAMP uses the Java Parallel Processing Framework, or JPPF, to manage the distribution of tasks. JPPF is an open-source Java package. The JPPF framework consists of three main parts as follows:
- a driver, also referred to as the JPPF server;
- one or more nodes, typically one node is established on each machine; and,
- a client, the CT-RAMP software in this case.
As noted on the Computing Environment section, MTC uses four computers with the names mainmodel
, satmodel
, satmodel2
, and satmodel3
. The JPPF driver process is executed on mainmodel
and acts like a traffic cop by acquiring tasks from the client and distributing those tasks to the node processes. When the node processes complete tasks, the results are returned back to the client via the JPPF driver. Three nodes are used in the MTC application, one each on satmodel
, satmodel2
, and satmodel3
(each node runs 12 processes). These three nodes are created prior to executing a model run. After being created, each node listens for tasks from the JPPF driver.
Node processes receive tasks, perform those tasks, and return the results. Nodes are configured to communicate with the driver process when they are started. MTC configures the nodes to use 90 GB of memory and 12 threads (see the Setup and Configuration section for details on where these parameters are specified). The JPPF driver attempts to balance computational loads across available nodes. The driver also retrieves class files, i.e. sets of Java code, from the client application and passes those to the nodes as needed.
The CT-RAMP software, which serves as the client, is responsible for creating task objects that can be run in parallel and submitting those to the driver. Because the MTC travel model simulates households, the CT-RAMP software creates packets of N
(a user-configurable quantity, e.g. 500) households and sends those packets to the nodes for processing. As the nodes complete tasks and return them to the driver, the driver gives the nodes new tasks, attempting to keep each node uniformly busy.
Household Manager and Matrix Manager
Before executing a model run, the travel model requires a Household Manager
and a Matrix Manager
be created. In the MTC application, both the Managers reside on the satmodel
computer during execution. The Household Manager is tasked with managing the simulated households, as well as each simulated person in each simulated household. The Household Manager
provides the JPPF nodes with information regarding the households for which the JPPF nodes are applying choice models and stores the resulting information computed by the JPPF nodes. To help keep run time down, the synthetic population is read from disk and stored in memory at the beginning of the application and then continuously updated as choice models are completed and iterations are performed. When the last iteration is complete, the necessary information is written to disk.
The Matrix Manager
is tasked with managing all of the skim matrices used by the choice models. When a skim is needed, a request is made to the Matrix Manager, which then reads the required skim from disk and stores it in memory. Once in memory, each matrix is available to any other JPPF node process that may need it.
Both the Household Manager
and Matrix Manager
have substantial memory footprints, currently 35GB and 44GB respectively.
TAZ, MAZ, and TAP Data Manager
The main CT-RAMP model process includes the following internal data management interfaces for managing zone-type data:
- TAZ data manager,
- MAZ data manager, and
- TAP data manager.
These data managers provide TAZ, MAZ, and TAP level data to the various sub-models. The TAZ data manager provides TAZ attribute data. The MAZ data manager provides MAZ attribute data, as well as MAZ to MAZ impedances. The TAP data manager provides TAP attribute data, as well as MAZ to TAP impedances. These data managers are copied to JPPF nodes during execution, which increases the memory required by JPPF nodes.
Setup and Configuration
This section provides details on setting up the travel model to run on a cluster of computers, including descriptions of the necessary configuration files.
Step 1: Create the required folder structure
The MTC travel model folder structure is shown below. Typically the parent directory will be named for the scenario to be run (e.g. '2010_base'). The parent directory contains two subfolders ctramp
and input
, and one MS-DOS batch file, RunModel.bat
. This folder can be placed in any directory on a computer designated as the main controller of the program flow. On MTC's set up, these files are placed on the mainmodel
computer (see System Design section for more details).
- \Scenario_Folder
- \ct-ramp
- \input
- RunModel.bat
The CTRAMP
directory contains all of the model configuration files, Java instructions, Cube, EMME, EMME and Python scripts required to run the travel model, organized in the following three folders:
- model -- contains all of the Utility Expression Calculators files that specify the choice models; [CHECK_DAVID: should the links be for master branch or transit-ccr?]
- runtime -- contains all of the Java configuration and
JAR
(executable) files, as well as the files necessary for Java to communicate with Cube; [CHECK_DAVID: should the links be for master branch or transit-ccr?] - scripts -- contains all of the Cube, EMME, and Python scripts along with associated helper files. [CHECK_DAVID: should the links be for master branch or transit-ccr?]
The INPUT
directory contains all of the input files (see the Input Files section) required to run a specific scenario. All the input files are available on Box. MTC will deliver the model with a set of scenario-specific set of inputs. When configuring the model on a new computing system, one should make sure that the results from an established scenario can be recreated before developing and analyzing a new scenario. The INPUT
directory contains the following folders:
hwy
-- contains the input master network with all zone centroids as well (TAZ, MAZ, and TAP) (see the Networks section);trn
-- contains all of the input transit network files (see the Networks section);landuse
-- contains the MAZ and TAZ level socio-economic input land use files;nonres
-- contains the fixed, year-specific internal/external trip tables, the fixed, year-specific air passenger trip tables, and files used to support the commercial vehicle model;popsyn
-- contains the synthetic population files;visualizer
-- contains the survey data and other helper files needed for the visualizer;
The RunModel.bat
script contains a list of MS-DOS instructions that control model flow.
Step 2: Map a network drive to share across computers
As noted in the previous section, the MTC model files can be placed within any directory. After establishing this location, the user must map a network drive to a shared folder to allow other computers access. On MTC's machine, the directory E:\MainModelShare
is first mapped to the letter drive M:\
and this directory is then shared across on the network (M:\ = \\MainModel\MainModelShare\
).
Satellite computers should also map the letter drive M:\
to this network location.
Please note that the model components running on the main machine should use the local version of the directory (i.e. M:\Projects\
) rather than the network version (i.e. \\MainModel\MainModelShare\Projects\
).
MTC has created scenarios for 2000, 2005, 2010 and 2015. The model is calibrated and validated to 2010 observed data.
Step 3: Configure the CT-RAMP and JPPF Services
Much of the configuration of the CT-RAMP software is done automatically by the RunModel.bat
batch file. However, prior to executing a model run, the files controlling the CT-RAMP and JPPF services may need to be configured. Please see the System Design section for a broad overview of these services. When executing the travel model, the following start-up scripts need to be run separately on each computer. Each script specifies the tasks assigned to each computer and need not be configured exactly as described on the System Design section (we describe MTC's setup; numerous other configurations are possible). In the MTC setup, the following commands are executed:
runDriver.cmd
starts the JPPF Driver required for distributed model running;runHhMgr.cmd
starts the household manager onsatmodel1
;runMtxMgr.cmd
starts the matrix manager onsatmodel1
;runNode{X}.cmd
starts up JPPF worker nodes on the remaining node {X} machine(s);
The .cmd
files are MS-DOS batch scripts and can be edited in a text editor, such as Notepad.
Each program requires an explicit amount of memory to be allocated to it. The amount of memory allocated to each program is identified by the -Xmx
parameter (XXXm
allocates XXX megabytes; Xg
allocates X gigabytes. This may need to be adjusted depending on the model and hardware configurations. An example is as follows:
.. %JAVA_PATH%\bin\java -server -Xmx35000m ...
Most of the JPPF-related configuration parameters have been optimized for the MTC travel model application and, as such, need not be modified. There are, however, a handful of parameters described in the table below that may need to be modified to meet the specifications of the computing environment upon which the model is being executed. Each of the files listed below can be found in the CTRAMP\runtime\config\
directory.
File Name | File Function | Statement | Purpose |
---|---|---|---|
jppf-clientDistributed.properties |
JPPF Client Driver Control file | driver1.jppf.server.host = 192.168.1.200 |
IP address of the main computer (mainmodel at MTC) |
jppf-clientLocal.properties |
JPPF Client Local Control file | jppf.local.execution.threads = 22 |
Number of threads to use for running the model on one machine for testing (mainly for debugging) |
jppf-driver.properties |
JPPF Driver Control file | jppf.server.host = 192.168.1.200 |
IP address of the main computer (mainmodel at MTC) |
jppf-node{x}.properties |
Remote JPPF Node Control file | jppf.server.host = 192.168.1.200 |
IP address of the main computer (mainmodel at MTC) |
processing.threads = 12 |
Number of computing cores on node {X} | ||
other.jvm.options = -Xms48000m -Xmx48000m -Dnode.name=node0 |
Maximum amount of memory, in MB, to allocate to node {X} and node name for logging |
A file that needs to be edited prior to executing a model run is the mtctm2.properties
file located in CTRAMP\runtime\
. This file serves as the general control module for the entire CT-RAMP application. At this stage, the following variables need to be modified for the software to execute the model properly.
Statement | Purpose |
---|---|
RunModel.MatrixServerAddress = 192.168.1.200 |
The IP address of the machine upon which the Matrix Manager is being executed (satmodel1 at MTC) |
RunModel.HouseholdServerAddress = 192.168.1.200 |
The IP address of the machine upon which the Household Manager is being executed (satmodel1 at MTC) |
Step 4: Configure RunModel.bat
and CTRampEnv.bat
The file RunModel.bat
MS-DOS batch file that executes the model stream needs to be consistent with the network and if a specialized model run is being executed, the model flow logic and/or sample rates may need to be adjusted. The following statements may need to be configured within this file:
Statement | Purpose |
---|---|
set SAMPLERATE_ITERATION{iteration}=0.2 |
Set choice model household sample rate by iteration |
model run | |
set MODEL_YEAR=2015 |
Set model year |
set BASE_SCRIPTS=CTRAMP\scripts |
Set scripts folder |
set /A MAX_ITERATION=3 |
Set the model feedback iterations |
set /A MAX_INNER_ITERATION=2 |
Set the inner transit capacity restraint iterations |
The file CTRampEnv.bat
MS-DOS batch file points to locations of executables and contains some additional information on machine configuration. The following statements may need to be configured within this file:
Statement | Purpose |
---|---|
set JAVA_PATH=C:\Program Files\Java\jre1.8.0_301 |
Specify the 64-bit Java path; version 1.8.0+ |
set TPP_PATH=C:\Progam Files\Citilabs\CubeVoyager |
Specify the Cube Voyager path |
set CUBE_PATH=C:\Progam Files (x86)\Citilabs\Cube |
Specify the Cube path |
set PYTHON_PATH=D:\Anaconda2 |
Specify the Python path |
set RUNTIME=CTRAMP\runtime |
Specify the location of the CT-RAMP software (relative to the project directory) |
set JAVA_32_PORT=1190 |
Specify the port for Java 32 bit matrix reader\writer (not currently used) |
set MATRIX_MANAGER_PORT=1191 |
Specify the port for the matrix manager |
set HH_MANAGER_PORT=1129 |
Specify the port for the household manager |
SET MAIN=WRJMDLPPW08 |
Set machine name mainmodel |
SET MTC0{1,2,3}=WRJMDLPPW08 |
Set machine names for satmodels |
set HHMGR_IP=172.24.0.100 |
Specify IP address of household manager |
set MATRIX_SERVER=\\%MTC02% |
Machine running matrix data manager |
set MATRIX_SERVER_BASE_DIR=%MATRIX_SERVER%\e$\projects\clients\MTC\%SCEN% |
Machine running matrix data manager base directory |
set MATRIX_SERVER_ABSOLUTE_BASE_DIR=e:\projects\clients\MTC\%SCEN% |
Machine running matrix data manager absolute directory |
set MATRIX_SERVER_JAVA_PATH=C:\Program Files\Java\jre1.8.0_261 |
Machine running matrix data manager Java install |
set HH_SERVER=\\%MTC02% |
Machine running household data manager |
set HH_SERVER_BASE_DIR=%HH_SERVER%\e$\projects\clients\MTC\%SCEN% |
Machine running household data manager base directory |
set HH_SERVER_ABSOLUTE_BASE_DIR=e:\projects\clients\MTC\%SCEN% |
Machine running household data manager absolute directory |
set HH_SERVER_JAVA_PATH=C:\Program Files\Java\jre1.8.0_261 |
Machine running household data manager Java install |
set USERNAME= |
Username for remote access using psexec |
set PASSWORD= |
Password for remote access using psexec |
Now that the model is configured, the user can run the model, as described in the Model Execution section.
Model Execution
This page describes how RunModel.bat
executes the travel model. For:
- a description of the underlying computing environment, see Computing Environment;
- a general description of the underlying system design, see System Design;
- a description of the configuration files that may need to be modified before executing the model, see Setup and Configuration.
Step 1: Set globally-available environmental variables
See Setup and Configuration for complete details.
Step 2: Set relevant paths to access software
See Setup and Configuration for complete details.
Step 3: Create and populate a working directory of input files
A working directory is created and populated with the input files, leaving the input files untouched in the process. This step also creates the necessary directory structure for the household and matrix data servers on the remote machine and copies over needed files.
mkdir hwy
mkdir trn
mkdir skims
mkdir landuse
mkdir popsyn
mkdir nonres
mkdir main
mkdir logs
mkdir database
mkdir ctramp_output
:: Stamp the feedback report with the date and time of the model start
echo STARTED MODEL RUN %DATE% %TIME% >> logs\feedback.rpt
:: Move the input files, which are not accessed by the model, to the working directories
copy INPUT\hwy\ hwy\ /Y
copy INPUT\trn\ trn\ /Y
copy INPUT\landuse\ landuse\ /Y
copy INPUT\popsyn\ popsyn\ /Y
copy INPUT\nonres\ nonres\ /Y
copy INPUT\warmstart\main\ main\ /Y
copy INPUT\warmstart\nonres\ nonres\ /Y
After the directories are created, copies are made to the remote machines for access by the household and matrix servers.
SET HH_DEPENDENCIES=(hwy popsyn landuse skims trn CTRAMP logs)
IF NOT EXIST "%HH_SERVER_BASE_DIR%" MKDIR "%HH_SERVER_BASE_DIR%"
FOR %%A IN %HH_DEPENDENCIES% DO (
IF NOT EXIST "%HH_SERVER_BASE_DIR%\%%A" MKDIR "%HH_SERVER_BASE_DIR%\%%A"
)
ROBOCOPY CTRAMP %HH_SERVER_BASE_DIR%\CTRAMP *.* /E /NDL /NFL
:: Create necessary directory structure for matrix data server
SET MATRIX_DEPENDENCIES=(skims CTRAMP logs ctramp_output)
IF NOT EXIST "%MATRIX_SERVER_BASE_DIR%" MKDIR "%MATRIX_SERVER_BASE_DIR%"
FOR %%A IN %MATRIX_DEPENDENCIES% DO (
IF NOT EXIST "%MATRIX_SERVER_BASE_DIR%\%%A" MKDIR "%MATRIX_SERVER_BASE_DIR%\%%A"
)
ROBOCOPY CTRAMP "%MATRIX_SERVER_BASE_DIR%\CTRAMP" *.* /E /NDL /NFL
Step 4: Pre-process steps
Several steps are needed to prepare the inputs for use in the model. The following Cube scripts are executed to perform the following:
preprocess_input_net.job
-- preprocessing input network to add a Feet field for distance and fix space issue in CNTYPE fieldwriteZoneSystems.job
-- write a batch file with number of tazs, taps, and mazszone_seq_net_builder.job
-- build an internal numbering scheme for the network nodes to play nice with Cubezone_seq_disseminator.py
-- creates all necessary input files based on updated sequential zone numberingrenumber.py
-- renumber the TAZs and MAZs in the households data filemaz_densities.job
-- writes out the intersection and MAZ XYscreateMazDensityFile.py
-- calculates density fields and append those to MAZ fileCreateNonMotorizedNetwork.job
-- convert the roadway network into bike and ped networkstap_to_taz_for_parking.job
-- builds a shortest path tree from taps to tazs based on walk distancetap_data_builder.py
-- this script builds the tap csv data file which maps all TAPs to the closest TAZ for that TAPSetTolls.job
-- set network prices (i.e., bridge tolls, express lane tolls) in the roadway networkSetHovXferPenalties.job
-- add a penalty of X seconds for dummy links connecting HOV/express lanes and general purpose lanesSetCapClass.job
-- compute area type and populate theCAPCLASS
network variablesetInterchangeDistance.job
-- preprocess freeway link distances to nearest major interchangeCreateFiveHighwayNetworks.job
-- create time-of-day-specific roadway networksBuildTazNetworks.job
-- create TAZ-scale networks for TAZ-scale roadway assignment
Step 5: Build walk, bicycle, and nearby automobile level-of-service matrices
Two scripts create the level-of-service information for the non-motorized modes and nearby automobile skims (for which, as a simplification, congestion is constant). The following Cube scripts do the job:
NonMotorizedSkims.job
-- skim the walk and bicycle networksMazMazSkims.job
-- builds short-distance MAZ-to-MAZ automobile skims
Step 6: Build air passenger demand matrices
The BuildAirPax.job
Cube script creates the air passenger demand estimates. Air passenger demand is assumed to be independent of roadway level-of-service and, as such, can be computed a single time.
Step 7: Build highway and transit skims
The following steps create the highway and transit level-of-service matrices:
HwySkims.job
-- build the roadway skimsBuildTransitNetworks.job
-- build the transit networks using the congested roadway timesTransitSkimsPrep.job
-- build the transit skims for five time periodscube_to_emme_network_conversion.py
-- read in a Cube network shapefile and output EMME transaction files to load the network and attributes into EMME for first model iterationcreate_emme_network.py
-- creates an EMME project folder, database, and a scenario for each time period for first model iterationskim_transit_network.py
-- performs transit skimming and assignment for TM2- Set the sampling rate based on
SAMPLERATE_ITERATION<iteration>
global variable - Copy the skims and related files to the remote household and matrix data manager machines
Step 8: Execute the CT-RAMP models
The core passenger travel demand models are executed via the CT-RAMP Java code via the following steps:
- Remote household and matrix servers are started using
psexec
- JPPF driver, as needed, is started via
CTRAMP/runtime/runDriver.cmd
- JPPF worker nodes, as specified, are started via
CTRAMP\runtime\runNode0.cmd
- CT-RAMP models are executed via
CTRAMP/runMTCTM2ABM.cmd
- Stops remote servers using
pskill
- Copies output matrices from the matrix manager machine back to the main machine
merge_auto_matrices.s
-- merge non-transit trip matrices from the CTRAMP model outputs
Step 9: Execute the internal/external and commercial vehicle models
These ancillary demand models are executed via a series of Cube scripts as follows:
IxForecasts.job
-- create the internal/external demand matrices forecastIxTimeOfDay.job
-- apply diurnal factors to the daily fixed internal/external demand matricesIxTollChoice.job
-- apply a toll choice model for express lanes to the internal/external demandTruckTripGeneration.job
-- apply the commercial vehicle generation modelsTruckTripDistribution.job
-- apply the commercial vehicle distribution modelsTruckTimeOfDay.job
-- apply the commercial vehicle diurnal factorsTruckTollChoice.job
-- apply a toll choice model for express lanes with eligible commercial demand
Step 10: Network Assignment
Demand is located on mode-specific paths through the networks in the assignment step via the following steps:
build_and_assign_maz_to_maz_auto.job
-- nearby automobile demand assigned to best path on MAZ-scale networkHwyAssign.job
-- using nearby demand as background demand, demand assigned to TAZ-scale networkAverageNetworkVolumes.job
-- method of successive averages (MSA) applied across overall model iterationsCalculateAverageSpeed.job
-- using the averaged volumes, compute speedsMergeNetworks.job
-- merge time-of-day-specific networks into a single networkIF
additionalITERATION
s are needed, runHwySkims.job
BuildTransitNetworks.job
-- creates the transit network used for skimming/assignmentTransitSkimsPrep.job
-- compute transit skims for five time periodscube_to_emme_network_conversion.py
-- updates the transaction files and attributes in EMME for second model iterationcreate_emme_network.py
-- updates the congested link times in EMME for second model iterationIF INNER_ITERATION == 1
,skim_transit_network_py2.py
script resimulates the congested transit assignment for all time periodsIF INNER_ITERATION > 1
,skim_transit_network_py2.py
script resimulates the congested transit assignment only for AM and PM periods- Start remote matrix server using
psexec
- Recalculate transit best path via running
CTRAMP\runtime\runTransitPathRecalculator.cmd
Step 11: Clean up
The next step of the model run moves all the TP+ printouts to the /logs
folder and deletes all the temporary TP+ printouts and cluster files.
Step 12: visualizer
The final step of the model run creates an html visualizer that helps comparing CHTS survey data to current run model outputs. The visualizer is created via CTRAMP\scripts\visualizer\generateDashboard.bat
CT-RAMP Properties File
The CT-RAMP software is controlled by a standard Java properties file. The forthcoming {table, link} below identifies, describes, and provides on example of, each of the variables CT-RAMP expects to be in the properties file. After the initial configuration, only a handful of these properties willl be modified in a typical application of the travel model. The primary use for many of the variables is to facilitate model calibration and/or debugging. Comments in the properties file preceeded with a pound (#) are ignored.
Purpose | Expected Data Type | Example Value | Purpose |
---|---|---|---|
Cluster Properties Modify when changing cluster configuration or moving to new cluster (properties for java processes) |
|||
RunModel.MatrixServerAddress | String | 10.0.1.46 | Matrix server address |
RunModel.MatrixServerPort | Integer | 1191 | Matrix server port number |
RunModel.HouseholdServerAddress | String | 10.0.1.46 | Household server address |
RunModel.HouseholdServerPort | Integer | 1129 | Household server port number |
Logging and Debugging Properties Use for tracing households or agents through simulation |
|||
Trace | Boolean | true | True or False whether to trace zones |
Trace.otaz | Integer | 0 | Specify which origin taz to trace |
Trace.dtaz | Integer | 0 | Specify which destination taz to trace |
Seek | Boolean | false | True or False whether to seek households |
Process.Debug.HHs.Only | Boolean | false | True of False whether to debug households |
Debug.Trace.HouseholdIdList | Integer | 13748 | Specify which Household ID to trace |
TourModeChoice.Save.UtilsAndProbs | Boolean | true | Save tour mode choice utilities and probabilities for debugging |
Path Properties Modify as needed when copy release to a local run folder |
|||
Project.Directory | String | %project.folder%/ | Project.Directory |
generic.path | String | %project.folder%/INPUT/ | Inputs folder |
scenario.path | String | %project.folder%/ | Scenario folder |
skims.path | String | %project.folder%/skims/ | Outputs folder |
uec.path | String | %project.folder%/CTRAMP/model/ | UEC folder |
Scenario Properties Modify when running new scenario, if necessary |
|||
mgra.socec.file | String | /landuse/maz_data_withDensity.csv | Location of mgra land use file |
network.node.seq.mapping.file | String | /hwy/mtc_final_network_zone_seq.csv | Location of mapping between Nodes, MAZs, TAZs and TAPs |
aoc.fuel | Float | 10.99 | Auto operating costs: Fuel cost |
aoc.maintenance | Float | 6.24 | Auto operating costs: Maintenance cost |
HouseholdManager.MinValueOfTime | Float | 1.0 | Household Value of Time Distribution: Minimum |
HouseholdManager.MaxValueOfTime | Float | 50.0 | Household Value of Time Distribution: Maximum |
HouseholdManager.MeanValueOfTime.Values | String | 6.01, 8.81, 10.44, 12.86 | Household Value of Time Distribution: Mean values for income groups |
HouseholdManager.MeanValueOfTime.Income.Limits | String | 30000, 60000, 100000 | Household Value of Time Distribution: Income Limits |
HouseholdManager.Mean.ValueOfTime.Multiplier.Mu | Float | 0.684 | Household Value of Time Distribution: Mean Multiplier |
HouseholdManager.ValueOfTime.Lognormal.Sigma | Float | 0.87 | Household Value of Time Distribution: Lognormal Sigma |
HouseholdManager.HH.ValueOfTime.Multiplier.Under18 | Float | 0.66667 | Household Value of Time Distribution: Under 18 multiplier |
AV Mobility Scenario Parameters | |||
Mobility.AV.Share | Float | 0.0 | Specifies the share of vehicles assumed to be AVs in the vehicle fleet |
Mobility.AV.ProbabilityBoost.AutosLTDrivers | Float | 1.2 | The increased probability for using AVs for tours by LT drivers. |
Mobility.AV.ProbabilityBoost.AutosGEDrivers | Float | 1.1 | The increased probability for using AVs for tours by GE drivers. |
Mobility.AV.IVTFactor | Float | 0.5 | The auto in-vehicle time factor to apply to AVs |
Mobility.AV.ParkingCostFactor | Float | 0.0 | The auto parking cost factor to apply to AVs |
Mobility.AV.CostPerMileFactor | Float | 0.5 | Cost to travel per mile to apply to AVs |
Mobility.AV.TerminalTimeFactor | Float | 0.0 | Terminal Time Factor to apply to AVs |
Taxi and TNC Cost and Wait Time Parameters | |||
taxi.basefare | Float | 2.2 | Basefare for taxi |
taxi.costPerMile | Float | 2.3 | Cost per mile for taxi |
taxi.costPerMinute | Float | 0.1 | Cost per minute for taxi |
TNC.basefare | Float | 2.2 | Basefare for TNC |
TNC.costPerMile | Float | 1.33 | cost per mile for TNC |
TNC.costPerMinute | Float | 0.24 | Cost per minute for TNC |
TNC.costMinimum | Float | 7.2 | Minimum cost to ride using TNC |
TNC.waitTime.mean | String | 10.3, 8.5, 8.4, 6.3, 4.7 | Mean for TNC wait time distribution |
TNC.waitTime.sd | String | 2.1, 2.1, 2.1, 2.1, 2.1 | Standard deviation for TNC wait time distribution |
Taxi.waitTime.mean | String | 26.5, 17.3,13.3, 9.5, 5.5 | Mean for taxi wait time distribution |
Taxi.waitTime.sd | String | 3.2, 3.2, 3.2, 3.2, 3.2 | Standard deviation for taxi wait time distribution |
WaitTimeDistribution.EndPopEmpPerSqMi | String | 500,2000,5000,15000,9999999999 | Population employment per square mile for wait time distribution |
Transit Assignment Parameters Toggle and controls for managing Cube PT transit crowding assignments |
|||
transit.crowding | Boolean | True | Master toggle to enable adjustlink and adjustwait. |
transit.crowding.adjustlink | Boolean | False | Toggle to enable link travel-time adjustment based on crowding |
transit.crowding.adjustwait | Boolean | False | Toggle to enable wait adjusted travel times and bump boardings from crowding |
transit.crowding.advance_support | Boolean | False | Toggle if Cube version is > 6.4.4 and supports advanced convergence and dampening factors (df) |
transit.crowding.convergence | Float | 0.01 | Cube PT crowding RMSE congervence criteria |
transit.crowding.linkdf | Float | 0.4 | Cube PT link dampening factor |
transit.crowding.voldf | Float | 0.4 | Cube PT volume dampening factor |
transit.crowding.waitdf | Float | 0.4 | Cube PT wait dampening factor |
transit.crowding.iterations | Integer | 1 | Number of iterations for transit crowding assignments |
Parking Capacity Restraint Parameters For managing CT-RAMP parking capacity restraint algorithm |
|||
ParkingCapacityRestraint.spacesForMissingLots | Integer | 20 | The number of spaces to use for any TAP not listed in the station attribute file (local stops, missing express bus stops, etc.) |
ParkingCapacityRestraint.minutesPerSimulationPeriod | Integer | 15 | The size of the simulation period used for capacity calculations in the parking capacity restraint model. The smaller the simulation period, the more iterations may be required to constrain to total available parking |
ParkingCapacityRestraint.maxIterations | Integer | 10 | Maximum number of times to iterate between parking constraint and re-running CT-RAMP for households with PNR tours arriving at full lots |
ParkingCapacityRestraint.lumpinessFactor | Integer | 2 | The factor used to scale the inverse of sample rate to calculate a buffer for parking capacity (buffer = 1.0f/sampleRate * lumpiness_factor) |
ParkingCapacityRestraint.parkAndHideFactor | Float | 1.15 | A factor on parking capacity to account for cars that "hide" and walk to station from non-designated parking |
ParkingCapacityRestraint.occupancyFactor | Float | 1.05 | The average number of transit riders who drive together in the same car and park, to convert person trips to vehicles |
Average vehicle occupancy for 3 plus by purpose Used for generating trip tables for assignment |
|||
occ3plus.purpose.Work | Float | 3.33 | |
occ3plus.purpose.University | Float | 3.33 | |
occ3plus.purpose.School | Float | 3.33 | |
occ3plus.purpose.Escort | Float | 3.33 | |
occ3plus.purpose.Shop | Float | 3.33 | |
occ3plus.purpose.Maintenance | Float | 3.33 | |
occ3plus.purpose.EatingOut | Float | 3.33 | |
occ3plus.purpose.Visiting | Float | 3.33 | |
occ3plus.purpose.Discretionary | Float | 3.33 | |
occ3plus.purpose.WorkBased | Float | 3.33 | |
Core Model Run Properties Control Steps Run in Core Model |
|||
Model.Random.Seed | Integer | 1 | Starting value for model random seed number (added to household IDs to create unique random number for each household) |
acc.read.input.file | Boolean | false | Set to true if read the accessibilities from an input file instead of calculating them prior to running CTRAMP |
uwsl.ShadowPricing.Work.MaximumIterations | Integer | 1 | maximum number of iterations for work shadow price |
uwsl.ShadowPricing.School.MaximumIterations | Integer | 1 | maximum number of iterations for school shadow price |
uwsl.ShadowPricing.OutputFile | String | /ctramp_output/ShadowPricingOutput.csv | output file name and location for shadow price |
uwsl.run.workLocChoice | Boolean | true | True or False whether to run this model component |
uwsl.run.schoolLocChoice | Boolean | true | True or False whether to run this model component |
uwsl.write.results | Boolean | true | True of False whether to write out usual work and school location results |
uwsl.use.new.soa | Boolean | false | true or false whether to use new soa for the work/school DC model |
nmdc.use.new.soa | Boolean | false | true or false whether to use new soa for the non-mandatory DC models |
slc.use.new.soa | Boolean | false | true or false whether to use new soa for the stop location choice models |
distributed.task.packet.size | Integer | 500 | Distributed task packet size |
RunModel.PreAutoOwnership | Boolean | true | True or False whether to run this model component |
RunModel.UsualWorkAndSchoolLocationChoice | Boolean | true | True or False whether to run this model component |
RunModel.AutoOwnership | Boolean | true | True or False whether to run this model component |
RunModel.TransponderChoice | Boolean | true | True or False whether to run this model component |
RunModel.FreeParking | Boolean | true | True or False whether to run this model component |
RunModel.CoordinatedDailyActivityPattern | Boolean | true | True or False whether to run this model component |
RunModel.IndividualMandatoryTourFrequency | Boolean | true | True or False whether to run this model component |
RunModel.MandatoryTourModeChoice | Boolean | true | True or False whether to run this model component |
RunModel.MandatoryTourDepartureTimeAndDuration | Boolean | true | True or False whether to run this model component |
RunModel.JointTourFrequency | Boolean | true | True or False whether to run this model component |
RunModel.JointTourLocationChoice | Boolean | true | True or False whether to run this model component |
RunModel.JointTourDepartureTimeAndDuration | Boolean | true | True or False whether to run this model component |
RunModel.JointTourModeChoice | Boolean | true | True or False whether to run this model component |
RunModel.IndividualNonMandatoryTourFrequency | Boolean | true | True or False whether to run this model component |
RunModel.IndividualNonMandatoryTourLocationChoice | Boolean | true | True or False whether to run this model component |
RunModel.IndividualNonMandatoryTourDepartureTimeAndDuration | Boolean | true | True or False whether to run this model component |
RunModel.IndividualNonMandatoryTourModeChoice | Boolean | true | True or False whether to run this model component |
RunModel.AtWorkSubTourFrequency | Boolean | true | True or False whether to run this model component |
RunModel.AtWorkSubTourLocationChoice | Boolean | true | True or False whether to run this model component |
RunModel.AtWorkSubTourDepartureTimeAndDuration | Boolean | true | True or False whether to run this model component |
RunModel.AtWorkSubTourModeChoice | Boolean | true | True or False whether to run this model component |
RunModel.StopFrequency | Boolean | true | True or False whether to run this model component |
RunModel.StopLocation | Boolean | true | True or False whether to run this model component |
Input Properties | |||
PopulationSynthesizer.InputToCTRAMP.HouseholdFile | String | popsyn/households.csv | Location of popsyn households.csv file |
PopulationSynthesizer.InputToCTRAMP.PersonFile | String | popsyn/persons.csv | Location of popsyn persons.csv file |
maz.tap.tapLines | String | trn/tapLines.csv | Location of tap lines file |
maz.tap. | String | skims/ped_distance_maz_tap.txt | Location of MAZ to TAP pedestrian distances file |
maz.maz.distance.file | String | skims/ped_distance_maz_maz.txt | Location of MAZ to MAZ pedestrian distances file |
maz.maz.bike.distance.file | String | skims/bike_distance_maz_maz.txt | Location of MAZ to MAZ bike distances file |
maz.tap.trimTapSet | Boolean | true | True or False whether to trim tap set or not |
maz.tap.maxWalkTapDistInMiles | Integer | 1.2 | Maximum walk distance allowed between any MAZ and TAP |
transit.fareDiscount.file | String | trn/transitFareDiscounts.csv | Location of transit fare discounts file |
Output Properties | |||
Results.WriteDataToFiles | Boolean | true | Write data to files |
Results.HouseholdDataFile | String | /ctramp_output/householdData.csv | Output name of household data file |
Results.PersonDataFile | String | /ctramp_output/personData.csv | Output name of person data file |
Results.IndivTourDataFile | String | /ctramp_output/indivTourData.csv | Output name of individual tour data file |
Results.JointTourDataFile | String | /ctramp_output/jointTourData.csv | Output name of joint tour data file |
Results.IndivTripDataFile | String | /ctramp_output/indivTripData.csv | Output name of individual trip data file |
Results.JointTripDataFile | String | /ctramp_output/jointTripData.csv | Output name of joint trip data file |
Results.WriteDataToDatabase | Boolean | false | Write data to a database |
Results.HouseholdTable | String | household_data | Output name of household data file in database |
Results.PersonTable | String | person_data | Output name of person data file in database |
Results.IndivTourTable | String | indiv_tour_data | Output name of individual tour data file in database |
Results.JointTourTable | String | joint_tour_data | Output name of joint tour data file in database |
Results.IndivTripTable | String | indiv_trip_data | Output name of individual trip data file in database |
Results.JointTripTable | String | joint_trip_data | Output name of joint trip data file in database |
Results.CBDFile | String | /ctramp_output/cbdParking.csv | Output name of CBD by MGRA Vehicle Trip file |
Results.PNRFile | String | /ctramp_output/pnrParking.csv | Output name of PNR by TAP Vehicle Trip file |
Results.AutoTripMatrix | String | /ctramp_output/auto | Output name of auto trip matrix |
Results.TranTripMatrix | String | /ctramp_output/transit | Output name of transit trip matrix |
Results.NMotTripMatrix | String | /ctramp_output/nonmotor | Output name of non-motorized trip matrix |
Results.OthrTripMatrix | String | /ctramp_output/other | Output name of other modes trip matrix |
Results.AutoAVTripMatrix | String | /ctramp_output/autoAV | Output name of AV modes trip matrix |
Results.MatrixType | String | OMX | Matrix type for trip tables |
Results.MAZAutoTripMatrix.IntrazonalOnly | Boolean | False | If True, then intrazonal trips get put into one of the three County Sets based on the origin MAZ county code. If False, then both intrazonal trips and trips whose distance is less than TripMaxDistance get put into one of the CountySets based on the origin MAZ county code |
Results.AutoOwnership | String | /ctramp_output/aoResults.csv | Auto ownership output file name and location |
read.pre.ao.results | Boolean | false | Read in the old pre-auto ownership results file |
read.pre.ao.filename | String | /ctramp_output/aoResults_pre.csv | Pre auto ownership output file name and location |
Results.UsualWorkAndSchoolLocationChoice | String | /ctramp_output/wsLocResults.csv | Usual work and school location output file name and location |
read.uwsl.results | Boolean | false | Read in the old uwsl results |
read.uwsl.filename | String | /ctramp_output/wsLocResults_1.csv | Old uwsl result file name and location to read in |
workSchoolSegments.definitions | String | /ctramp_output/workSchoolSegments.definitions | Correspondence table for work location segment indices and work location segment names |
Core Model UECs | |||
acc.jppf | Boolean | true | Accessibilities to be assigned to a JPPF node |
acc.without.jppf.numThreads | Integer | 30 | Number of threads for accessibilities without JPPF |
acc.destination.sampleRate | Float | 0.05 | Sample rate for accessibilities |
acc.uec.file | String | %project.folder%/uec/Accessibilities.xls | Accessibilities.xls location |
acc.data.page | Integer | 0 | Accessibilities data page |
acc.sov.offpeak.page | Integer | 1 | Accessibilities SOV offpeak |
acc.sov.peak.page | Integer | 2 | Accessibilities SOV peak |
acc.hov.offpeak.page | Integer | 3 | Accessibilities HOV offpeak |
acc.hov.peak.page | Integer | 4 | Accessibilities HOV peak |
acc.nonmotorized.page | Integer | 5 | Accessibilities non-motorized |
acc.constants.page | Integer | 6 | Accessibilities constants |
acc.sizeTerm.page | Integer | 7 | Accessibilities size terms |
acc.schoolSizeTerm.page | Integer | 8 | Accessibilities school size terms |
acc.workerSizeTerm.page | Integer | 9 | Accessibilities worker size terms |
acc.dcUtility.uec.file | String | %project.folder%/CTRAMP/model/Accessibilities_DC.xls | Accessibilities_DC.xls location |
acc.dcUtility.data.page | Integer | 0 | DC Accessibilities data page |
acc.dcUtility.page | Integer | 1 | DC Accessibilities utility page |
acc.output.file | String | /ctramp_output/accessibilities.csv | accessibilities.csv location |
accessibility.alts.file | String | Acc_alts.csv | Accessibilities alternatives |
acc.mandatory.uec.file | String | %project.folder%/CTRAMP/model/MandatoryAccess.xls | MandatoryAccess.xls location |
acc.mandatory.data.page | Integer | 0 | Mandatory Access data page |
acc.mandatory.auto.page | Integer | 1 | Mandatory Access auto page |
acc.mandatory.autoLogsum.page | Integer | 2 | Mandatory Access autoLogsum page |
acc.mandatory.bestWalkTransit.page | Integer | 3 | Mandatory Access best Walk Transit page |
acc.mandatory.bestDriveTransit.page | Integer | 4 | Mandatory Access best Drive Transit page |
acc.mandatory.transitLogsum.page | Integer | 5 | Mandatory Access transit logsum page |
ao.uec.file | String | AutoOwnership.xls | File name of auto ownership UEC |
ao.data.page | Integer | 0 | Auto ownership UEC data page |
ao.model.page | Integer | 1 | Auto ownership UEC utility page |
tt.uec.file | String | TransitSubsidyAndPass.xls | File name of transit subsidy UEC |
tt.data.page | Integer | 0 | Transit Subsidy UEC data page |
tt.subsidyModel.page | Integer | 1 | Transit subsidy model page |
tt.passModel.page | Integer | 2 | Transit pass model page |
tt.autoGenTime.page | Integer | 3 | Transit auto time page |
tt.subsidyPercent.file | String | transitSubsidyDistribution.csv | File name of transit subsidy distribution |
tt.naics.20 | String | constr,util,natres | |
tt.naics.30 | String | man_bio,man_lgt,man_hvy,man_tech | |
tt.naics.40 | String | logis,ret_loc,ret_reg,transp | |
tt.naics.50 | String | info,lease,prof,fire,serv_bus | |
tt.naics.70 | String | art_rec,eat,hotel | |
tt.naics.80 | String | serv_pers | |
tt.naics.90 | String | gov | |
uwsl.dc.uec.file | String | TourDestinationChoice.xls | File Name of Tour Destination Choice UEC |
uwsl.dc2.uec.file | String | TourDestinationChoice2.xls | File Name of Tour Destination Choice 2 UEC |
uwsl.soa.uec.file | String | DestinationChoiceAlternativeSample.xls | File Name of Destination Choice Alternative Sample UEC |
uwsl.soa.alts.file | String | DestinationChoiceAlternatives.csv | File name of the alternatives (MGRAs) available to the destination choice models (part of the model design; this should not be changed) |
uwsl.work.soa.SampleSize | Integer | 30 | Sample size of Work Destination Choice |
uwsl.school.soa.SampleSize | Integer | 30 | Sample size of School Destination Choice |
work.soa.uec.file | String | TourDcSoaDistance.xls | File Name of Tour Distance DC SOA UEC for Work Purpose includes TAZ Size in the expressions |
work.soa.uec.data | Integer | 0 | Work Tour Distance SOA UEC data page |
work.soa.uec.model | Integer | 1 | Work Tour Distance SOA UEC utility page |
univ.soa.uec.file | String | TourDcSoaDistanceNoSchoolSize.xls | File Name of Tour Distance DC SOA UEC for School Purpose; school purposes do not include TAZ Size in the expressions so that the utilities can be stored as exponentiated distance utility matrices for university and then multiplied by the university segment size terms |
univ.soa.uec.data | Integer | 0 | University Tour Distance SOA UEC data page |
univ.soa.uec.model | Integer | 1 | University Tour Distance SOA UEC utility page |
hs.soa.uec.file | String | TourDcSoaDistanceNoSchoolSize.xls | File Name of Tour Distance DC SOA UEC for School Purpose; school purposes do not include TAZ Size in the expressions so that the utilities can be stored as exponentiated distance utility matrices for high school and then multiplied by the high school segment size terms |
hs.soa.uec.data | Integer | 0 | High School Tour Distance SOA UEC data page |
hs.soa.uec.model | Integer | 2 | High School Tour Distance SOA UEC utility page |
gs.soa.uec.file | String | TourDcSoaDistanceNoSchoolSize.xls | File Name of Tour Distance DC SOA UEC for School Purpose; school purposes do not include TAZ Size in the expressions so that the utilities can be stored as exponentiated distance utility matrices for grade school and then multiplied by the grade school segment size terms |
gs.soa.uec.data | Integer | 0 | Grade School Tour Distance SOA UEC data page |
gs.soa.uec.model | Integer | 3 | Grade School Tour Distance SOA UEC utility page |
ps.soa.uec.file | String | TourDcSoaDistanceNoSchoolSize.xls | File Name of Tour Distance DC SOA UEC for School Purpose; school purposes do not include TAZ Size in the expressions so that the utilities can be stored as exponentiated distance utility matrices for preschool and then multiplied by the preschool segment size terms |
ps.soa.uec.data | Integer | 0 | Preschool Tour Distance SOA UEC data page |
ps.soa.uec.model | Integer | 4 | Preschool Tour Distance SOA UEC utility page |
tc.choice.avgtts.file | String | /../input/ABMTEMP/ctramp/tc_avgtt.csv | File name of average travel times for transponder ownership |
tc.uec.file | String | TransponderOwnership.xls | File name of transponder ownership UEC |
tc.data.page | Integer | 0 | Transponder ownership UEC data page |
tc.model.page | Integer | 1 | Transponder ownership UEC utility page |
fp.uec.file | String | ParkingProvision.xls | File name of parking provision UEC |
fp.data.page | Integer | 0 | Parking Provision UEC data page |
fp.model.page | Integer | 1 | Parking Provision UEC utility page |
cdap.uec.file | String | CoordinatedDailyActivityPattern.xls | File name of CDAP UEC |
cdap.data.page | Integer | 0 | CDAP UEC data page |
cdap.one.person.page | Integer | 1 | CDAP UEC utility for one person page |
cdap.two.person.page | Integer | 2 | CDAP UEC utility for 2 persons page |
cdap.three.person.page | Integer | 3 | CDAP UEC utility for 3 persons page |
cdap.all.person.page | Integer | 4 | CDAP UEC utility for All member interation page |
cdap.joint.page | Integer | 5 | CDAP UEC utility for joint tours page |
imtf.uec.file | String | MandatoryTourFrequency.xls | File name of Mandatory tour frequency UEC |
imtf.data.page | Integer | 0 | Mandatory tour frequency UEC data page |
imtf.model.page | Integer | 1 | mandatory tour frequency UEC utility page |
nonSchool.soa.uec.file | String | TourDcSoaDistance.xls | File Name of Tour Distance DC SOA UEC for Non Work/School Purposes includes TAZ Size in the expressions |
escort.soa.uec.data | Integer | 0 | Escort Tour Distance SOA UEC data page |
escort.soa.uec.model | Integer | 2 | Escort Tour Distance SOA UEC utility page |
other.nonman.soa.uec.data | Integer | 0 | Other Non-mandatory Tour Distance SOA UEC data page |
other.nonman.soa.uec.model | Integer | 3 | Other Non-mandatory Tour Distance SOA UEC utility page |
atwork.soa.uec.data | Integer | 0 | At-Work Sub-Tour Distance SOA UEC data page |
atwork.soa.uec.model | Integer | 4 | At-Work Sub-Tour Distance SOA UEC utility page |
soa.taz.dist.alts.file | String | SoaTazDistAlternatives.csv | File name of Sample of Alternatives of TAZs |
nmdc.dist.alts.file | String | NonMandatoryTlcAlternatives.csv | File name of non-mandatory tour alternatives |
nmdc.soa.alts.file | String | DestinationChoiceAlternatives.csv | File name of the alternatives (MGRAs) available to the destination choice models (part of the model design; this should not be changed) |
nmdc.soa.SampleSize | Integer | 30 | Sample size of non-mandatory Destination choice |
nmdc.uec.file2 | String | TourDestinationChoice2.xls | File Name of Tour Destination Choice 2 UEC |
nmdc.uec.file | String | TourDestinationChoice.xls | File Name of Tour Destination Choice UEC |
nmdc.data.page | Integer | 0 | Non-mandatory Tour DC UEC data page |
nmdc.escort.model.page | Integer | 7 | Escort Tour Destination Choice UEC utility page |
nmdc.shop.model.page | Integer | 8 | Shop Tour Destination Choice UEC utility page |
nmdc.maint.model.page | Integer | 9 | Maintenance Tour Destination Choice UEC utility page |
nmdc.eat.model.page | Integer | 10 | Eating Out Tour Destination Choice UEC utility page |
nmdc.visit.model.page | Integer | 11 | Visiting Tour Destination Choice UEC utility page |
nmdc.discr.model.page | Integer | 12 | Discretionary Tour Destination Choice UEC utility page |
nmdc.atwork.model.page | Integer | 13 | At-Work Sub-Tour Destination Choice UEC utility page |
nmdc.soa.uec.file | String | DestinationChoiceAlternativeSample.xls | File Name of Destination Choice Alternative Sample UEC |
nmdc.soa.data.page | Integer | 0 | Non-mandatory TOUR SOA UEC data page |
nmdc.soa.escort.model.page | Integer | 6 | Escort TOUR SOA UEC utility page |
nmdc.soa.shop.model.page | Integer | 7 | Shop TOUR SOA UEC utility page |
nmdc.soa.maint.model.page | Integer | 7 | Maintenance TOUR SOA UEC utility page |
nmdc.soa.eat.model.page | Integer | 7 | Eating Out TOUR SOA UEC utility page |
nmdc.soa.visit.model.page | Integer | 7 | Visiting TOUR SOA UEC utility page |
nmdc.soa.discr.model.page | Integer | 7 | Discretionary TOUR SOA UEC utility page |
nmdc.soa.atwork.model.page | Integer | 8 | At-Work Sub-Tour SOA UEC utility page |
tourModeChoice.uec.file | String | TourModeChoice.xls | File name of Tour Mode choice UEC |
tourModeChoice.maint.model.page | Integer | 4 | Maintenance Tour Mode Choice UEC utility page |
tourModeChoice.discr.model.page | Integer | 5 | Discretionary Tour Mode Choice UEC utility page |
tourModeChoice.atwork.model.page | Integer | 6 | At-Work Sub-Tour Mode Choice UEC utility page |
departTime.uec.file | String | TourDepartureAndDuration.xls | File name of Tour TOD Choice UEC |
departTime.data.page | Integer | 0 | Tour TOD Choice UEC data page |
departTime.work.page | Integer | 1 | Work Tour TOD Choice UEC utility page |
departTime.univ.page | Integer | 2 | University Tour TOD Choice UEC utility page |
departTime.school.page | Integer | 3 | School Tour TOD Choice UEC utility page |
departTime.escort.page | Integer | 4 | Escort Tour TOD Choice UEC utility page |
departTime.shop.page | Integer | 5 | Shop Tour TOD Choice UEC utility page |
departTime.maint.page | Integer | 6 | Maintenance Tour TOD Choice UEC utility page |
departTime.eat.page | Integer | 7 | Eating Out Tour TOD Choice UEC utility page |
departTime.visit.page | Integer | 8 | Visiting Tour TOD Choice UEC utility page |
departTime.discr.page | Integer | 9 | Discretionary Tour TOD Choice UEC utility page |
departTime.atwork.page | Integer | 10 | At-Work Sub-Tour TOD Choice UEC utility page |
departTime.alts.file | String | DepartureTimeAndDurationAlternatives.csv | File name of Departure time and duration alternatives |
jtfcp.uec.file | String | JointTourFrequency.xls | File name of Joint Tour Frequency UEC |
jtfcp.alternatives.file | String | JointAlternatives.csv | File name of joint tour alternatives by purpose and party composition combinations |
jtfcp.data.page | Integer | 0 | Joint Tour Frequency UEC data page |
jtfcp.freq.comp.page | Integer | 1 | Joint Tour Frequency UEC utility composition page |
jtfcp.participate.page | Integer | 2 | Joint Tour Frequency UEC utility participation page |
inmtf.uec.file | String | NonMandatoryIndividualTourFrequency.xls | File name of Individual non-mandatory tour frequency UEC |
inmtf.FrequencyExtension.ProbabilityFile | String | IndividualNonMandatoryTourFrequencyExtensionProbabilities_p1.csv | File name of Individual non-mandatory tour frequency extension probabilities |
IndividualNonMandatoryTourFrequency.AlternativesList.InputFile | String | IndividualNonMandatoryTourFrequencyAlternatives.csv | File name of individual non-mandatory tour frequency alternatives (combinations) |
inmtf.data.page | Integer | 0 | Individual Non-mandatory tour frequency UEC data page |
inmtf.perstype1.page | Integer | 1 | Individual Non-mandatory tour frequency UEC utility for Full time workers page |
inmtf.perstype2.page | Integer | 2 | Individual Non-mandatory tour frequency UEC utility for Part time workers page |
inmtf.perstype3.page | Integer | 3 | Individual Non-mandatory tour frequency UEC utility for University students page |
inmtf.perstype4.page | Integer | 4 | Individual Non-mandatory tour frequency UEC utility for Non-workers page |
inmtf.perstype5.page | Integer | 5 | Individual Non-mandatory tour frequency UEC utility for Retirees page |
inmtf.perstype6.page | Integer | 6 | Individual Non-mandatory tour frequency UEC utility for Driving students page |
inmtf.perstype7.page | Integer | 7 | Individual Non-mandatory tour frequency UEC utility for Pre-driving students page |
inmtf.perstype8.page | Integer | 8 | Individual Non-mandatory tour frequency UEC utility for Preschool students page |
awtf.uec.file | AtWorkSubtourFrequency.xls | File name of at-work sub-tour frequency UEC | |
awtf.data.page | Integer | 0 | At-Work Sub-Tour Frequency UEC Data page |
awtf.model.page | Integer | 1 | At-Work Sub-Tour Frequency UEC Utility page |
stf.uec.file | String | StopFrequency.xls | File name of Stop Frequency UEC |
stf.purposeLookup.proportions | String | StopPurposeLookupProportions.csv | File name of Stop Purpose Lookup proportions |
stf.data.page | Integer | 0 | Stop Frequency UEC data page |
stf.work.page | Integer | 1 | Stop Frequency for Work Tour UEC utility page |
stf.univ.page | Integer | 2 | Stop Frequency for University Tour UEC utility page |
stf.school.page | Integer | 3 | Stop Frequency for School Tour UEC utility page |
stf.escort.page | Integer | 4 | Stop Frequency for Escort Tour UEC utility page |
stf.shop.page | Integer | 5 | Stop Frequency for Shop Tour UEC utility page |
stf.maint.page | Integer | 6 | Stop Frequency for Maintenance Tour UEC utility page |
stf.eat.page | Integer | 7 | Stop Frequency for Eating Out Tour UEC utility page |
stf.visit.page | Integer | 8 | Stop Frequency for Visiting Tour UEC utility page |
stf.discr.page | Integer | 9 | Stop Frequency for Discretionary Tour UEC utility page |
stf.subtour.page | Integer | 10 | Stop Frequency for At-Work Sub-Tour UEC utility page |
slc.uec.file | String | StopLocationChoice.xls | File Name of Stop Location Choice UEC |
slc.uec.data.page | Integer | 0 | Stop Location Choice UEC data page |
slc.mandatory.uec.model.page | Integer | 1 | Stop Location Choice for Mandatory Tours UEC utility page |
slc.maintenance.uec.model.page | Integer | 2 | Stop Location Choice for Maintenance Tours UEC utility page |
slc.discretionary.uec.model.page | Integer | 3 | Stop Location Choice for Discretionary Tours UEC utility page |
slc.alts.file | String | SlcAlternatives.csv | File name of stop location choice alternatives |
slc.soa.uec.file | String | SlcSoaSize.xls | File name of SOA UEC to the stop location choice |
slc.soa.alts.file | String | DestinationChoiceAlternatives.csv | File name of the alternatives (MGRAs) available to the destination choice models (part of the model design; this should not be changed) |
auto.slc.soa.distance.uec.file | String | SlcSoaDistanceUtility.xls | File name of Stop Location Sample of Alternatives Choice UEC for tour modes other than walk or bike - for transit, availability of stop for transit is set in java code |
auto.slc.soa.distance.data.page | Integer | 0 | Stop Location SOA Choice UEC data page |
auto.slc.soa.distance.model.page | Integer | 1 | Stop Location SOA Choice UEC utility page |
slc.soa.size.uec.file | String | SlcSoaSize.xls | File Name of Stop Location Choice Size Terms UEC |
slc.soa.size.uec.data.page | Integer | 0 | Stop Location Choice Size terms UEC data page |
slc.soa.size.uec.model.page | Integer | 1 | Stop Location Choice Size terms UEC utility page |
stop.depart.arrive.proportions | String | StopDepartArriveProportions.csv | File name of Stop Location Time of Day proportions |
tripModeChoice.uec.file | String | TripModeChoice.xls | File name of Trip mode choice UEC |
plc.uec.file | String | ParkLocationChoice.xls | File name of Parking Location Choice UEC |
plc.uec.data.page | Integer | 0 | Parking Location Choice UEC data page |
plc.uec.model.page | Integer | 1 | Parking Location Choice UEC utility page |
plc.alts.corresp.file | String | ParkLocationAlts.csv | File name of parking location alternatives (MGRAs) |
plc.alts.file | String | ParkLocationSampleAlts.csv | File name of parking location sample of alternatives |
mgra.avg.cost.output.file | String | /ctramp_output/mgraParkingCost.csv | File name of average parking costs by MGRA |
mgra.avg.cost.trace.zone | Integer | 2141 | Zone ID where parking cost to be traced |
mgra.max.parking.distance | Float | 0.75 | Maximum parking distance |
mgra.avg.cost.dist.coeff.work | Float | -8.6 | Parking location model coefficient for walking distance to destination for Work purpose |
mgra.avg.cost.dist.coeff.other | Float | -4.9 | Parking location model coefficient for walking distance to destination for other purposes |
park.cost.reimb.mean | Float | -0.05 | Parking location model mean parking cost reimbursement |
park.cost.reimb.std.dev | Float | 0.54 | Parking location model standard deviation for parking cost reimbursement |
utility.bestTransitPath.uec.file | String | BestTransitPathUtility.xls | File name of best transit path UEC |
utility.bestTransitPath.data.page | Integer | 0 | Best Transit Path UEC data page |
utility.bestTransitPath.tapToTap.page | Integer | 1 | Best Transit Path UEC for TAP to TAP utility page |
utility.bestTransitPath.walkAccess.page | Integer | 2 | Best Transit Path UEC for walk access utility page |
utility.bestTransitPath.driveAccess.page | Integer | 3 | Best Transit Path UEC for drive access utility page |
utility.bestTransitPath.walkEgress.page | Integer | 4 | Best Transit Path UEC for walk egress utility page |
utility.bestTransitPath.driveEgress.page | Integer | 5 | Best Transit Path UEC for drive egress utility page |
utility.bestTransitPath.driveAccDisutility.page | Integer | 6 | Best Transit Path UEC for drive access disutility page |
utility.bestTransitPath.driveEgrDisutility.page | Integer | 7 | Best Transit Path UEC for drive egress disutility page |
utility.bestTransitPath.skim.sets | Integer | 3 | Number of skim sets in best transit path |
utility.bestTransitPath.alts | Integer | 4 | Number of alternatives in best transit path |
utility.bestTransitPath.maxPathsPerSkimSetForLogsum | String | 1, 1, 1 | Maximum number of paths per skims set to use for logsum (by iteration?) |
utility.bestTransitPath.nesting.coeff | Float | 0.24 | Nesting coefficient |
ResimulateTransitPath.uec.file | String | BestTransitPathUtility.xls | File name of transit capacity restraint resimulation |
ResimulateTransitPath.data.page | Integer | 0 | Transit capacity restraint data page |
ResimulateTransitPath.identifyTripToResimulate.page | Integer | 8 | Transit capacity restraint utility page |
ResimulateTransitPath.results.IndivTripDataFile | String | /ctramp_output/indivTripDataResim.csv | File name of resimulated individual trips data |
ResimulateTransitPath.results.JointTripDataFile | String | /ctramp_output/jointTripDataResim.csv | File name of resimulated joint trips data |
skims.auto.uec.file | String | AutoSkims.xls | File name of Auto Skims UEC |
skims.auto.data.page | Integer | 0 | Auto Skims data page |
skims.auto.ea.page | Integer | 1 | Auto skims Early AM utility page |
skims.auto.am.page | Integer | 2 | Auto skims AM utility page |
skims.auto.md.page | Integer | 3 | Auto skims MD utility page |
skims.auto.pm.page | Integer | 4 | Auto skims PM utility page |
skims.auto.ev.page | Integer | 5 | Auto skims Evening utility page |
taz.distance.uec.file | String | tazDistance.xls | File name of TAZ Distance UEC |
taz.distance.data.page | Integer | 0 | TAZ Distance UEC data page |
taz.od.distance.ea.page | Integer | 1 | TAZ Distance UEC Early AM utility page |
taz.od.distance.am.page | Integer | 2 | TAZ Distance UEC AM utility page |
taz.od.distance.md.page | Integer | 3 | TAZ Distance UEC MD utility page |
taz.od.distance.pm.page | Integer | 4 | TAZ Distance UEC PM utility page |
taz.od.distance.ev.page | Integer | 5 | TAZ Distance UEC Evening utility page |
skim.walk.transit.walk.uec.file | String | WalkTransitWalkSkims.xls | File name of Walk Transit Walk Skims UEC |
skim.walk.transit.walk.data.page | Integer | 0 | Walk Transit Walk Skims UEC data page |
skim.walk.transit.walk.skim.page | Integer | 1 | Walk Transit Walk Skims UEC skim page |
skim.walk.transit.walk.sets | Integer | 3 | |
skim.walk.transit.walk.skims | Integer | 12 | |
skim.walk.transit.drive.uec.file | String | WalkTransitDriveSkims.xls | File name of Walk Transit Drive Skims UEC |
skim.walk.transit.drive.data.page | Integer | 0 | Walk Transit Drive Skims UEC data page |
skim.walk.transit.drive.skim.page | Integer | 1 | Walk Transit Drive Skims UEC skim page |
skim.walk.transit.drive.sets | Integer | 3 | |
skim.walk.transit.drive.skims | Integer | 12 | |
skim.drive.transit.walk.uec.file | String | DriveTransitWalkSkims.xls | File name of Drive Transit Walk Skims UEC |
skim.drive.transit.walk.data.page | Integer | 0 | Drive Transit Walk Skims UEC data page |
skim.drive.transit.walk.skim.page | Integer | 1 | Drive Transit Walk Skims UEC skim page |
skim.drive.transit.walk.sets | Integer | 3 | |
skim.drive.transit.walk.skims | Integer | 12 | |
Best Transit Path Data Files | |||
tap.data.file | String | hwy/tap_data.csv | Location of the file having information about parking lot capacity for TAPS |
tap.data.tap.column | String | tap | Column name for TAP IDs |
tap.data.taz.column | String | taz | Column name TAZ IDs |
tap.data.lotid.column | String | lotid | Column name for parking lot IDs |
tap.data.capacity.column | String | capacity | Column name for parking lot capacity |
tap.station.attribute.file | String | trn/emme_network_transaction_files_AM/station_attributes/station_tap_attributes.csv | Location of station attribute data |
tap.pnr.default.share | Integer | 0.5 | PNR share value |
taz.tap.access.file | String | /skims/drive_maz_taz_tap.csv | Location of file having cost information related drive access between TAZ-TAP pairs |
taz.tap.access.ftaz.column | String | FTAZ | Column containing start TAZ |
taz.tap.access.mode.column | String | MODE | Column containing mode |
taz.tap.access.period.column | String | PERIOD | Column containing time periods |
taz.tap.access.ttap.column | String | TTAP | Column containing transit TAPs |
taz.tap.access.tmaz.column | String | TMAZ | Column containing transit MAZs |
taz.tap.access.ttaz.column | String | TTAZ | Column containing transit TAZs |
taz.tap.access.dtime.column | String | DTIME | Column containing drive times |
taz.tap.access.ddist.column | String | DDIST | Column containing drive distances |
taz.tap.access.dtoll.column | String | DTOLL | Column containing drive tolls |
taz.tap.access.wdist.column | String | WDIST | Column containing walk distances |
Miscellaneous: Place Holders for Future Enhancements | |||
taz.data.file | String | /landuse/taz_data.csv | location of TAZ landuse file |
taz.data.taz.column | String | TAZ | Column containing TAZ IDs |
taz.data.avgttd.column | String | AVGTTS | Column containing |
taz.data.dist.column | String | DIST | Column containing distances |
taz.data.pctdetour.column | String | PCTDETOUR | Column containing |
taz.data.terminal.column | String | TERMINALTIME | Column containing terminal times |